https://bugs.eclipse.org/bugs/show_bug.cgi?id=536407, migrate to EPL 2.0 and catch up with branch development

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/about.html b/about.html
index 64c0598..e8b834d 100644
--- a/about.html
+++ b/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/notice.html b/notice.html
index c3d34c3..008b801 100644
--- a/notice.html
+++ b/notice.html
@@ -7,101 +7,183 @@
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 9, 2014</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
 </body>
 </html>
diff --git a/org.eclipse.osbp.xtext.perspective.feature/LICENSE.txt b/org.eclipse.osbp.xtext.perspective.feature/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.xtext.perspective.feature/LICENSE.txt
+++ b/org.eclipse.osbp.xtext.perspective.feature/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.xtext.perspective.feature/build.properties b/org.eclipse.osbp.xtext.perspective.feature/build.properties
index b8920ff..d6b1b0a 100644
--- a/org.eclipse.osbp.xtext.perspective.feature/build.properties
+++ b/org.eclipse.osbp.xtext.perspective.feature/build.properties
@@ -1,2 +1,2 @@
-bin.includes = license.html,  epl-v10.html,  feature.xml,\
+bin.includes = license.html,  epl-2.0.html,  feature.xml,\
                feature.properties
diff --git a/org.eclipse.osbp.xtext.perspective.feature/epl-2.0.html b/org.eclipse.osbp.xtext.perspective.feature/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.feature/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.perspective.feature/epl-v10.html b/org.eclipse.osbp.xtext.perspective.feature/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.xtext.perspective.feature/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.perspective.feature/feature.properties b/org.eclipse.osbp.xtext.perspective.feature/feature.properties
index 89be83f..38a3bde 100644
--- a/org.eclipse.osbp.xtext.perspective.feature/feature.properties
+++ b/org.eclipse.osbp.xtext.perspective.feature/feature.properties
@@ -1,9 +1,11 @@
 ###############################################################################
 # Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 #
 # Contributors:
 #     Cristiano Gavião - initial API and implementation
@@ -30,9 +32,11 @@
 copyright=\
 Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
 All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 ################ end of copyright property ####################################
 
@@ -44,126 +48,143 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+\n\
+November 22, 2017\n\
 \n\
 Usage Of Content\n\
 \n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION\n\
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF\n\
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE\n\
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED\n\
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE\n\
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY\n\
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU\n\
+MAY NOT USE THE CONTENT.\n\
 \n\
 Applicable Licenses\n\
 \n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
+Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
+is provided to you under the terms and conditions of the Eclipse Public License\n\
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also\n\
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,\n\
+"Program" will mean the Content.\n\
 \n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse Foundation source code\n\
-repository ("Repository") in software modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
+Content includes, but is not limited to, source code, object code, documentation\n\
+and other files maintained in the Eclipse Foundation source code repository\n\
+("Repository") in software modules ("Modules") and made available as\n\
+downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+-   Content may be structured and packaged into modules to facilitate\n\
+    delivering, extending, and upgrading the Content. Typical modules may\n\
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and\n\
+    features ("Features").\n\
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR\n\
+    (Java™ ARchive) in a directory named "plugins".\n\
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and\n\
+    associated material. Each Feature may be packaged as a sub-directory in a\n\
+    directory named "features". Within a Feature, files named "feature.xml" may\n\
+    contain a list of the names and version numbers of the Plug-ins and/or\n\
+    Fragments associated with that Feature.\n\
+-   Features may also include other Features ("Included Features"). Within a\n\
+    Feature, files named "feature.xml" may contain a list of the names and\n\
+    version numbers of Included Features.\n\
 \n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
+The terms and conditions governing Plug-ins and Fragments should be contained in\n\
+files named "about.html" ("Abouts"). The terms and conditions governing Features\n\
+and Included Features should be contained in files named "license.html"\n\
+("Feature Licenses"). Abouts and Feature Licenses may be located in any\n\
+directory of a Download or Module including, but not limited to the following\n\
+locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+-   The top-level (root) directory\n\
+-   Plug-in and Fragment directories\n\
+-   Inside Plug-ins and Fragments packaged as JARs\n\
+-   Sub-directories of the directory named "src" of certain Plug-ins\n\
+-   Feature directories\n\
 \n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
-Update License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using\n\
+the Provisioning Technology (as defined below), you must agree to a license\n\
+("Feature Update License") during the installation process. If the Feature\n\
+contains Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform you\n\
+where you can locate them. Feature Update Licenses may be found in the "license"\n\
+property of files named "feature.properties" found within a Feature. Such\n\
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and\n\
+conditions (or references to such terms and conditions) that govern your use of\n\
+the associated Content in that directory.\n\
 \n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL\n\
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE\n\
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+-   Eclipse Public License Version 1.0 (available at\n\
+    http://www.eclipse.org/legal/epl-v10.html)\n\
+-   Eclipse Distribution License Version 1.0 (available at\n\
+    http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+-   Common Public License Version 1.0 (available at\n\
+    http://www.eclipse.org/legal/cpl-v10.html)\n\
+-   Apache Software License 1.1 (available at\n\
+    http://www.apache.org/licenses/LICENSE)\n\
+-   Apache Software License 2.0 (available at\n\
+    http://www.apache.org/licenses/LICENSE-2.0)\n\
+-   Mozilla Public License Version 1.1 (available at\n\
+    http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO\n\
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is\n\
+provided, please contact the Eclipse Foundation to determine what terms and\n\
+conditions govern that particular Content.\n\
 \n\
-\n\Use of Provisioning Technology\n\
+Use of Provisioning Technology\n\
 \n\
-The Eclipse Foundation makes available provisioning software, examples of which include,\n\
-but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
-the purpose of allowing users to install software, documentation, information and/or\n\
-other materials (collectively "Installable Software"). This capability is provided with\n\
-the intent of allowing such users to install, extend and update Eclipse-based products.\n\
-Information about packaging Installable Software is available at\n\
+The Eclipse Foundation makes available provisioning software, examples of which\n\
+include, but are not limited to, p2 and the Eclipse Update Manager\n\
+("Provisioning Technology") for the purpose of allowing users to install\n\
+software, documentation, information and/or other materials (collectively\n\
+"Installable Software"). This capability is provided with the intent of allowing\n\
+such users to install, extend and update Eclipse-based products. Information\n\
+about packaging Installable Software is available at\n\
 http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
 \n\
-You may use Provisioning Technology to allow other parties to install Installable Software.\n\
-You shall be responsible for enabling the applicable license agreements relating to the\n\
-Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
-in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
-making it available in accordance with the Specification, you further acknowledge your\n\
-agreement to, and the acquisition of all necessary rights to permit the following:\n\
+You may use Provisioning Technology to allow other parties to install\n\
+Installable Software. You shall be responsible for enabling the applicable\n\
+license agreements relating to the Installable Software to be presented to, and\n\
+accepted by, the users of the Provisioning Technology in accordance with the\n\
+Specification. By using Provisioning Technology in such a manner and making it\n\
+available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the\n\
+following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+1.  A series of actions may occur ("Provisioning Process") in which a user may\n\
+    execute the Provisioning Technology on a machine ("Target Machine") with the\n\
+    intent of installing, extending or updating the functionality of an\n\
+    Eclipse-based product.\n\
+2.  During the Provisioning Process, the Provisioning Technology may cause third\n\
+    party Installable Software or a portion thereof to be accessed and copied to\n\
+    the Target Machine.\n\
+3.  Pursuant to the Specification, you will provide to the user the terms and\n\
+    conditions that govern the use of the Installable Software ("Installable\n\
+    Software Agreement") and such Installable Software Agreement shall be\n\
+    accessed from the Target Machine in accordance with the Specification. Such\n\
+    Installable Software Agreement must inform the user of the terms and\n\
+    conditions that govern the Installable Software and must solicit acceptance\n\
+    by the end user in the manner prescribed in such Installable\n\
+    Software Agreement. Upon such indication of agreement by the user, the\n\
+    provisioning Technology will complete installation of the\n\
+    Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
+Content may contain encryption software. The country in which you are currently\n\
+may have restrictions on the import, possession, and use, and/or re-export to\n\
+another country, of encryption software. BEFORE using any encryption software,\n\
+please check the country's laws, regulations and policies concerning the import,\n\
+possession, or use, and re-export of encryption software, to see if this is\n\
+permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the\n\
+United States, other countries, or both.\n
 ########### end of license property ##########################################
diff --git a/org.eclipse.osbp.xtext.perspective.feature/license.html b/org.eclipse.osbp.xtext.perspective.feature/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.xtext.perspective.feature/license.html
+++ b/org.eclipse.osbp.xtext.perspective.feature/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.perspective.feature/pom.xml b/org.eclipse.osbp.xtext.perspective.feature/pom.xml
index 45e9da3..ec99718 100644
--- a/org.eclipse.osbp.xtext.perspective.feature/pom.xml
+++ b/org.eclipse.osbp.xtext.perspective.feature/pom.xml
@@ -2,9 +2,11 @@
 <!--#======================================================================= -->
 <!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany). -->
 <!--# All rights reserved. This program and the accompanying materials -->
-<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Christophe Loetz  (Loetz GmbH&Co.KG) - Initial implementation API and implementation -->
diff --git a/org.eclipse.osbp.xtext.perspective.ide/pom.xml b/org.eclipse.osbp.xtext.perspective.ide/pom.xml
index c2534cd..8adaad6 100644
--- a/org.eclipse.osbp.xtext.perspective.ide/pom.xml
+++ b/org.eclipse.osbp.xtext.perspective.ide/pom.xml
@@ -2,9 +2,11 @@
 <!--#======================================================================= -->
 <!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
 <!--# All rights reserved. This program and the accompanying materials -->
-<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
diff --git a/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/AbstractPerspectiveDslIdeModule.java b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/AbstractPerspectiveDslIdeModule.java
index dca923b..f8b4225 100644
--- a/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/AbstractPerspectiveDslIdeModule.java
+++ b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/AbstractPerspectiveDslIdeModule.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/PartialPerspectiveDslContentAssistParser.java b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/PartialPerspectiveDslContentAssistParser.java
index b03b967..0c02d7f 100644
--- a/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/PartialPerspectiveDslContentAssistParser.java
+++ b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/PartialPerspectiveDslContentAssistParser.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
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 536cfa8..3d9aba7 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
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -116,18 +118,20 @@
 					put(grammarAccess.getPerspectiveSelectionAccess().getGroup(), "rule__PerspectiveSelection__Group__0");
 					put(grammarAccess.getPerspectiveTableAccess().getGroup(), "rule__PerspectiveTable__Group__0");
 					put(grammarAccess.getPerspectiveGridAccess().getGroup(), "rule__PerspectiveGrid__Group__0");
-					put(grammarAccess.getPerspectiveBeanAccess().getGroup(), "rule__PerspectiveBean__Group__0");
 					put(grammarAccess.getPerspectiveChartAccess().getGroup(), "rule__PerspectiveChart__Group__0");
 					put(grammarAccess.getPerspectiveReportAccess().getGroup(), "rule__PerspectiveReport__Group__0");
 					put(grammarAccess.getPerspectiveOrganizationAccess().getGroup(), "rule__PerspectiveOrganization__Group__0");
 					put(grammarAccess.getPerspectiveTopologyAccess().getGroup(), "rule__PerspectiveTopology__Group__0");
 					put(grammarAccess.getPerspectiveDialogAccess().getGroup(), "rule__PerspectiveDialog__Group__0");
+					put(grammarAccess.getPerspectiveBPMNAccess().getGroup(), "rule__PerspectiveBPMN__Group__0");
 					put(grammarAccess.getPerspectiveKanbanAccess().getGroup(), "rule__PerspectiveKanban__Group__0");
 					put(grammarAccess.getPerspectiveWelcomeAccess().getGroup(), "rule__PerspectiveWelcome__Group__0");
 					put(grammarAccess.getPerspectiveSearchAccess().getGroup(), "rule__PerspectiveSearch__Group__0");
 					put(grammarAccess.getPerspectiveSearchAccess().getGroup_4_0(), "rule__PerspectiveSearch__Group_4_0__0");
 					put(grammarAccess.getPerspectiveSearchAccess().getGroup_4_1(), "rule__PerspectiveSearch__Group_4_1__0");
 					put(grammarAccess.getPerspectiveDataInterchangeAccess().getGroup(), "rule__PerspectiveDataInterchange__Group__0");
+					put(grammarAccess.getPerspectiveTitleAccess().getGroup(), "rule__PerspectiveTitle__Group__0");
+					put(grammarAccess.getPerspectiveDashboardAccess().getGroup(), "rule__PerspectiveDashboard__Group__0");
 					put(grammarAccess.getXImportDeclarationAccess().getGroup(), "rule__XImportDeclaration__Group__0");
 					put(grammarAccess.getXImportDeclarationAccess().getGroup_2_0(), "rule__XImportDeclaration__Group_2_0__0");
 					put(grammarAccess.getXImportDeclarationAccess().getGroup_2_3(), "rule__XImportDeclaration__Group_2_3__0");
@@ -361,7 +365,6 @@
 					put(grammarAccess.getPerspectiveSelectionAccess().getRefAssignment_2(), "rule__PerspectiveSelection__RefAssignment_2");
 					put(grammarAccess.getPerspectiveTableAccess().getRefAssignment_2(), "rule__PerspectiveTable__RefAssignment_2");
 					put(grammarAccess.getPerspectiveGridAccess().getRefAssignment_2(), "rule__PerspectiveGrid__RefAssignment_2");
-					put(grammarAccess.getPerspectiveBeanAccess().getRefAssignment_2(), "rule__PerspectiveBean__RefAssignment_2");
 					put(grammarAccess.getPerspectiveChartAccess().getRefAssignment_2(), "rule__PerspectiveChart__RefAssignment_2");
 					put(grammarAccess.getPerspectiveReportAccess().getRefAssignment_2(), "rule__PerspectiveReport__RefAssignment_2");
 					put(grammarAccess.getPerspectiveOrganizationAccess().getRefAssignment_2(), "rule__PerspectiveOrganization__RefAssignment_2");
@@ -374,6 +377,8 @@
 					put(grammarAccess.getPerspectiveSearchAccess().getDepthAssignment_4_0_1(), "rule__PerspectiveSearch__DepthAssignment_4_0_1");
 					put(grammarAccess.getPerspectiveSearchAccess().getFilterColsAssignment_4_1_1(), "rule__PerspectiveSearch__FilterColsAssignment_4_1_1");
 					put(grammarAccess.getPerspectiveDataInterchangeAccess().getRefAssignment_2(), "rule__PerspectiveDataInterchange__RefAssignment_2");
+					put(grammarAccess.getPerspectiveTitleAccess().getHtmlNameAssignment_2(), "rule__PerspectiveTitle__HtmlNameAssignment_2");
+					put(grammarAccess.getPerspectiveDashboardAccess().getNameAssignment_2(), "rule__PerspectiveDashboard__NameAssignment_2");
 					put(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0(), "rule__XImportDeclaration__StaticAssignment_2_0_0");
 					put(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1(), "rule__XImportDeclaration__ExtensionAssignment_2_0_1");
 					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2(), "rule__XImportDeclaration__ImportedTypeAssignment_2_0_2");
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 95ca30d..e1c7345 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
@@ -338,31 +338,6 @@
 	restoreStackSize(stackSize);
 }
 
-// Entry rule entryRulePerspectiveBean
-entryRulePerspectiveBean
-:
-{ before(grammarAccess.getPerspectiveBeanRule()); }
-	 rulePerspectiveBean
-{ after(grammarAccess.getPerspectiveBeanRule()); } 
-	 EOF 
-;
-
-// Rule PerspectiveBean
-rulePerspectiveBean 
-	@init {
-		int stackSize = keepStackSize();
-	}
-	:
-	(
-		{ before(grammarAccess.getPerspectiveBeanAccess().getGroup()); }
-		(rule__PerspectiveBean__Group__0)
-		{ after(grammarAccess.getPerspectiveBeanAccess().getGroup()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
 // Entry rule entryRulePerspectiveChart
 entryRulePerspectiveChart
 :
@@ -488,6 +463,31 @@
 	restoreStackSize(stackSize);
 }
 
+// Entry rule entryRulePerspectiveBPMN
+entryRulePerspectiveBPMN
+:
+{ before(grammarAccess.getPerspectiveBPMNRule()); }
+	 rulePerspectiveBPMN
+{ after(grammarAccess.getPerspectiveBPMNRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveBPMN
+rulePerspectiveBPMN 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveBPMNAccess().getGroup()); }
+		(rule__PerspectiveBPMN__Group__0)
+		{ after(grammarAccess.getPerspectiveBPMNAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 // Entry rule entryRulePerspectiveKanban
 entryRulePerspectiveKanban
 :
@@ -588,6 +588,56 @@
 	restoreStackSize(stackSize);
 }
 
+// Entry rule entryRulePerspectiveTitle
+entryRulePerspectiveTitle
+:
+{ before(grammarAccess.getPerspectiveTitleRule()); }
+	 rulePerspectiveTitle
+{ after(grammarAccess.getPerspectiveTitleRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveTitle
+rulePerspectiveTitle 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveTitleAccess().getGroup()); }
+		(rule__PerspectiveTitle__Group__0)
+		{ after(grammarAccess.getPerspectiveTitleAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveDashboard
+entryRulePerspectiveDashboard
+:
+{ before(grammarAccess.getPerspectiveDashboardRule()); }
+	 rulePerspectiveDashboard
+{ after(grammarAccess.getPerspectiveDashboardRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveDashboard
+rulePerspectiveDashboard 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveDashboardAccess().getGroup()); }
+		(rule__PerspectiveDashboard__Group__0)
+		{ after(grammarAccess.getPerspectiveDashboardAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 // Entry rule entryRuleTRANSLATABLEID
 entryRuleTRANSLATABLEID
 :
@@ -2752,57 +2802,57 @@
 	)
 	|
 	(
-		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveBeanParserRuleCall_3()); }
-		rulePerspectiveBean
-		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveBeanParserRuleCall_3()); }
-	)
-	|
-	(
-		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_4()); }
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_3()); }
 		rulePerspectiveReport
-		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_4()); }
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_3()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_5()); }
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_4()); }
 		rulePerspectiveOrganization
-		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_5()); }
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_4()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_6()); }
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_5()); }
 		rulePerspectiveTopology
-		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_6()); }
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_5()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_7()); }
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_6()); }
 		rulePerspectiveDialog
-		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_7()); }
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_6()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_8()); }
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_7()); }
 		rulePerspectiveGrid
-		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_8()); }
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_7()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_9()); }
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_8()); }
 		rulePerspectiveWelcome
-		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_9()); }
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_8()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_10()); }
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_9()); }
 		rulePerspectiveSearch
-		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_10()); }
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_9()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_11()); }
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_10()); }
 		rulePerspectiveDataInterchange
-		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_11()); }
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_10()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveBPMNParserRuleCall_11()); }
+		rulePerspectiveBPMN
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveBPMNParserRuleCall_11()); }
 	)
 	|
 	(
@@ -2810,6 +2860,18 @@
 		rulePerspectiveKanban
 		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveKanbanParserRuleCall_12()); }
 	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveTitleParserRuleCall_13()); }
+		rulePerspectiveTitle
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveTitleParserRuleCall_13()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDashboardParserRuleCall_14()); }
+		rulePerspectiveDashboard
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveDashboardParserRuleCall_14()); }
+	)
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -6019,9 +6081,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getPerspectiveTableAccess().getTableKeyword_1()); }
-	'table'
-	{ after(grammarAccess.getPerspectiveTableAccess().getTableKeyword_1()); }
+	{ before(grammarAccess.getPerspectiveTableAccess().getReadOnlyTableKeyword_1()); }
+	'readOnlyTable'
+	{ after(grammarAccess.getPerspectiveTableAccess().getReadOnlyTableKeyword_1()); }
 )
 ;
 finally {
@@ -6100,9 +6162,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getPerspectiveGridAccess().getGridKeyword_1()); }
-	'grid'
-	{ after(grammarAccess.getPerspectiveGridAccess().getGridKeyword_1()); }
+	{ before(grammarAccess.getPerspectiveGridAccess().getEditableTableKeyword_1()); }
+	'editableTable'
+	{ after(grammarAccess.getPerspectiveGridAccess().getEditableTableKeyword_1()); }
 )
 ;
 finally {
@@ -6136,87 +6198,6 @@
 }
 
 
-rule__PerspectiveBean__Group__0
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__PerspectiveBean__Group__0__Impl
-	rule__PerspectiveBean__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__PerspectiveBean__Group__0__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getPerspectiveBeanAccess().getPerspectiveBeanAction_0()); }
-	()
-	{ after(grammarAccess.getPerspectiveBeanAccess().getPerspectiveBeanAction_0()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__PerspectiveBean__Group__1
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__PerspectiveBean__Group__1__Impl
-	rule__PerspectiveBean__Group__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__PerspectiveBean__Group__1__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getPerspectiveBeanAccess().getBeanKeyword_1()); }
-	'bean'
-	{ after(grammarAccess.getPerspectiveBeanAccess().getBeanKeyword_1()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__PerspectiveBean__Group__2
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__PerspectiveBean__Group__2__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__PerspectiveBean__Group__2__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getPerspectiveBeanAccess().getRefAssignment_2()); }
-	(rule__PerspectiveBean__RefAssignment_2)
-	{ after(grammarAccess.getPerspectiveBeanAccess().getRefAssignment_2()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
 rule__PerspectiveChart__Group__0
 	@init {
 		int stackSize = keepStackSize();
@@ -6622,6 +6603,60 @@
 }
 
 
+rule__PerspectiveBPMN__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveBPMN__Group__0__Impl
+	rule__PerspectiveBPMN__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBPMN__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveBPMNAccess().getPerspectiveBPMNAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveBPMNAccess().getPerspectiveBPMNAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBPMN__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveBPMN__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBPMN__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1()); }
+	'bpmn'
+	{ after(grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
 rule__PerspectiveKanban__Group__0
 	@init {
 		int stackSize = keepStackSize();
@@ -7216,6 +7251,168 @@
 }
 
 
+rule__PerspectiveTitle__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveTitle__Group__0__Impl
+	rule__PerspectiveTitle__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTitle__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveTitleAccess().getPerspectiveTitleAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveTitleAccess().getPerspectiveTitleAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTitle__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveTitle__Group__1__Impl
+	rule__PerspectiveTitle__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTitle__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveTitleAccess().getTitleKeyword_1()); }
+	'title'
+	{ after(grammarAccess.getPerspectiveTitleAccess().getTitleKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTitle__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveTitle__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTitle__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveTitleAccess().getHtmlNameAssignment_2()); }
+	(rule__PerspectiveTitle__HtmlNameAssignment_2)
+	{ after(grammarAccess.getPerspectiveTitleAccess().getHtmlNameAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveDashboard__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveDashboard__Group__0__Impl
+	rule__PerspectiveDashboard__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDashboard__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveDashboardAccess().getPerspectiveDashboardAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveDashboardAccess().getPerspectiveDashboardAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDashboard__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveDashboard__Group__1__Impl
+	rule__PerspectiveDashboard__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDashboard__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveDashboardAccess().getNameKeyword_1()); }
+	'name'
+	{ after(grammarAccess.getPerspectiveDashboardAccess().getNameKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDashboard__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveDashboard__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDashboard__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveDashboardAccess().getNameAssignment_2()); }
+	(rule__PerspectiveDashboard__NameAssignment_2)
+	{ after(grammarAccess.getPerspectiveDashboardAccess().getNameAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
 rule__XImportDeclaration__Group__0
 	@init {
 		int stackSize = keepStackSize();
@@ -21275,25 +21472,6 @@
 	restoreStackSize(stackSize);
 }
 
-rule__PerspectiveBean__RefAssignment_2
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getPerspectiveBeanAccess().getRefTableCrossReference_2_0()); }
-		(
-			{ before(grammarAccess.getPerspectiveBeanAccess().getRefTableIDTerminalRuleCall_2_0_1()); }
-			RULE_ID
-			{ after(grammarAccess.getPerspectiveBeanAccess().getRefTableIDTerminalRuleCall_2_0_1()); }
-		)
-		{ after(grammarAccess.getPerspectiveBeanAccess().getRefTableCrossReference_2_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
 rule__PerspectiveChart__RefAssignment_2
 	@init {
 		int stackSize = keepStackSize();
@@ -21514,6 +21692,36 @@
 	restoreStackSize(stackSize);
 }
 
+rule__PerspectiveTitle__HtmlNameAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveTitleAccess().getHtmlNameSTRINGTerminalRuleCall_2_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getPerspectiveTitleAccess().getHtmlNameSTRINGTerminalRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDashboard__NameAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveDashboardAccess().getNameSTRINGTerminalRuleCall_2_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getPerspectiveDashboardAccess().getNameSTRINGTerminalRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 rule__XImportDeclaration__StaticAssignment_2_0_0
 	@init {
 		int stackSize = keepStackSize();
diff --git a/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/internal/InternalPerspectiveDsl.tokens b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/internal/InternalPerspectiveDsl.tokens
index cfb0c81..f4954cb 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
-'#'=93
+'#'=95
 '%'=39
 '%='=20
 '&&'=15
-'&'=116
-'('=89
-')'=90
+'&'=118
+'('=91
+')'=92
 '*'=36
 '**'=37
 '*='=18
 '+'=34
 '++'=41
 '+='=16
-','=91
+','=93
 '-'=35
 '--'=42
 '-='=17
@@ -24,9 +24,9 @@
 '..<'=29
 '/'=38
 '/='=19
-':'=100
-'::'=120
-';'=87
+':'=102
+'::'=122
+';'=89
 '<'=27
 '<>'=32
 '='=13
@@ -35,54 +35,56 @@
 '=>'=31
 '>'=26
 '>='=25
-'?'=115
-'?.'=121
+'?'=117
+'?.'=123
 '?:'=33
-'@'=88
-'['=94
-']'=92
+'@'=90
+'['=96
+']'=94
 'accessibility'=60
-'as'=96
-'bean'=72
+'as'=98
+'bpmn'=77
 'card'=80
-'case'=102
-'catch'=114
-'chart'=73
+'case'=104
+'catch'=116
+'chart'=72
 'dataInterchange'=86
-'default'=101
+'default'=103
 'depth'=84
-'describedBy'=117
-'dialog'=77
-'do'=105
-'else'=98
+'describedBy'=119
+'dialog'=76
+'do'=107
+'editableTable'=71
+'else'=100
 'extends'=45
 'extension'=48
 'false'=50
 'filterColumns'=85
-'finally'=112
-'for'=103
-'grid'=71
+'finally'=114
+'for'=105
 'horizontal'=51
 'iconURI'=59
-'if'=97
+'if'=99
 'import'=47
 'in'=83
-'instanceof'=95
-'isClosable'=118
+'instanceof'=97
+'isClosable'=120
 'kanban'=78
-'new'=106
-'ns'=119
-'null'=107
+'name'=88
+'new'=108
+'ns'=121
+'null'=109
 'of'=79
-'organigram'=75
+'organigram'=74
 'orientation'=63
 'package'=53
 'part'=67
 'partStack'=66
 'perspective'=56
 'process'=57
-'report'=74
-'return'=110
+'readOnlyTable'=70
+'report'=73
+'return'=112
 'sashContainer'=62
 'search'=82
 'select'=69
@@ -90,24 +92,24 @@
 'spaceVolume'=65
 'static'=46
 'super'=49
-'switch'=99
-'synchronized'=113
-'table'=70
-'throw'=109
+'switch'=101
+'synchronized'=115
+'throw'=111
+'title'=87
 'toolbar'=61
-'topology'=76
-'true'=124
-'try'=111
-'typeof'=108
+'topology'=75
+'true'=126
+'try'=113
+'typeof'=110
 'usertask'=58
 'val'=44
-'var'=123
+'var'=125
 'vertical'=52
 'view'=68
 'welcome'=81
-'while'=104
+'while'=106
 '{'=54
-'|'=122
+'|'=124
 '||'=14
 '}'=55
 RULE_ANY_OTHER=12
@@ -144,6 +146,8 @@
 T__122=122
 T__123=123
 T__124=124
+T__125=125
+T__126=126
 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 c5f2088..260543f 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
@@ -33,7 +33,9 @@
     public static final int T__68=68;
     public static final int T__69=69;
     public static final int T__62=62;
+    public static final int T__126=126;
     public static final int T__63=63;
+    public static final int T__125=125;
     public static final int T__64=64;
     public static final int T__65=65;
     public static final int T__37=37;
@@ -1338,10 +1340,10 @@
         try {
             int _type = T__70;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:68:7: ( 'table' )
-            // InternalPerspectiveDsl.g:68:9: 'table'
+            // InternalPerspectiveDsl.g:68:7: ( 'readOnlyTable' )
+            // InternalPerspectiveDsl.g:68:9: 'readOnlyTable'
             {
-            match("table"); 
+            match("readOnlyTable"); 
 
 
             }
@@ -1359,10 +1361,10 @@
         try {
             int _type = T__71;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:69:7: ( 'grid' )
-            // InternalPerspectiveDsl.g:69:9: 'grid'
+            // InternalPerspectiveDsl.g:69:7: ( 'editableTable' )
+            // InternalPerspectiveDsl.g:69:9: 'editableTable'
             {
-            match("grid"); 
+            match("editableTable"); 
 
 
             }
@@ -1380,10 +1382,10 @@
         try {
             int _type = T__72;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:70:7: ( 'bean' )
-            // InternalPerspectiveDsl.g:70:9: 'bean'
+            // InternalPerspectiveDsl.g:70:7: ( 'chart' )
+            // InternalPerspectiveDsl.g:70:9: 'chart'
             {
-            match("bean"); 
+            match("chart"); 
 
 
             }
@@ -1401,10 +1403,10 @@
         try {
             int _type = T__73;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:71:7: ( 'chart' )
-            // InternalPerspectiveDsl.g:71:9: 'chart'
+            // InternalPerspectiveDsl.g:71:7: ( 'report' )
+            // InternalPerspectiveDsl.g:71:9: 'report'
             {
-            match("chart"); 
+            match("report"); 
 
 
             }
@@ -1422,10 +1424,10 @@
         try {
             int _type = T__74;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:72:7: ( 'report' )
-            // InternalPerspectiveDsl.g:72:9: 'report'
+            // InternalPerspectiveDsl.g:72:7: ( 'organigram' )
+            // InternalPerspectiveDsl.g:72:9: 'organigram'
             {
-            match("report"); 
+            match("organigram"); 
 
 
             }
@@ -1443,10 +1445,10 @@
         try {
             int _type = T__75;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:73:7: ( 'organigram' )
-            // InternalPerspectiveDsl.g:73:9: 'organigram'
+            // InternalPerspectiveDsl.g:73:7: ( 'topology' )
+            // InternalPerspectiveDsl.g:73:9: 'topology'
             {
-            match("organigram"); 
+            match("topology"); 
 
 
             }
@@ -1464,10 +1466,10 @@
         try {
             int _type = T__76;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:74:7: ( 'topology' )
-            // InternalPerspectiveDsl.g:74:9: 'topology'
+            // InternalPerspectiveDsl.g:74:7: ( 'dialog' )
+            // InternalPerspectiveDsl.g:74:9: 'dialog'
             {
-            match("topology"); 
+            match("dialog"); 
 
 
             }
@@ -1485,10 +1487,10 @@
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:75:7: ( 'dialog' )
-            // InternalPerspectiveDsl.g:75:9: 'dialog'
+            // InternalPerspectiveDsl.g:75:7: ( 'bpmn' )
+            // InternalPerspectiveDsl.g:75:9: 'bpmn'
             {
-            match("dialog"); 
+            match("bpmn"); 
 
 
             }
@@ -1695,10 +1697,11 @@
         try {
             int _type = T__87;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:85:7: ( ';' )
-            // InternalPerspectiveDsl.g:85:9: ';'
+            // InternalPerspectiveDsl.g:85:7: ( 'title' )
+            // InternalPerspectiveDsl.g:85:9: 'title'
             {
-            match(';'); 
+            match("title"); 
+
 
             }
 
@@ -1715,10 +1718,11 @@
         try {
             int _type = T__88;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:86:7: ( '@' )
-            // InternalPerspectiveDsl.g:86:9: '@'
+            // InternalPerspectiveDsl.g:86:7: ( 'name' )
+            // InternalPerspectiveDsl.g:86:9: 'name'
             {
-            match('@'); 
+            match("name"); 
+
 
             }
 
@@ -1735,10 +1739,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(';'); 
 
             }
 
@@ -1755,10 +1759,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('@'); 
 
             }
 
@@ -1775,10 +1779,10 @@
         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('('); 
 
             }
 
@@ -1795,10 +1799,10 @@
         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(')'); 
 
             }
 
@@ -1815,10 +1819,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(','); 
 
             }
 
@@ -1835,10 +1839,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(']'); 
 
             }
 
@@ -1855,11 +1859,10 @@
         try {
             int _type = T__95;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:93:7: ( 'instanceof' )
-            // InternalPerspectiveDsl.g:93:9: 'instanceof'
+            // InternalPerspectiveDsl.g:93:7: ( '#' )
+            // InternalPerspectiveDsl.g:93:9: '#'
             {
-            match("instanceof"); 
-
+            match('#'); 
 
             }
 
@@ -1876,11 +1879,10 @@
         try {
             int _type = T__96;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:94:7: ( 'as' )
-            // InternalPerspectiveDsl.g:94:9: 'as'
+            // InternalPerspectiveDsl.g:94:7: ( '[' )
+            // InternalPerspectiveDsl.g:94:9: '['
             {
-            match("as"); 
-
+            match('['); 
 
             }
 
@@ -1897,10 +1899,10 @@
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:95:7: ( 'if' )
-            // InternalPerspectiveDsl.g:95:9: 'if'
+            // InternalPerspectiveDsl.g:95:7: ( 'instanceof' )
+            // InternalPerspectiveDsl.g:95:9: 'instanceof'
             {
-            match("if"); 
+            match("instanceof"); 
 
 
             }
@@ -1918,10 +1920,10 @@
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:96:7: ( 'else' )
-            // InternalPerspectiveDsl.g:96:9: 'else'
+            // InternalPerspectiveDsl.g:96:7: ( 'as' )
+            // InternalPerspectiveDsl.g:96:9: 'as'
             {
-            match("else"); 
+            match("as"); 
 
 
             }
@@ -1939,10 +1941,10 @@
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:97:7: ( 'switch' )
-            // InternalPerspectiveDsl.g:97:9: 'switch'
+            // InternalPerspectiveDsl.g:97:7: ( 'if' )
+            // InternalPerspectiveDsl.g:97:9: 'if'
             {
-            match("switch"); 
+            match("if"); 
 
 
             }
@@ -1960,10 +1962,11 @@
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:98:8: ( ':' )
-            // InternalPerspectiveDsl.g:98:10: ':'
+            // InternalPerspectiveDsl.g:98:8: ( 'else' )
+            // InternalPerspectiveDsl.g:98:10: 'else'
             {
-            match(':'); 
+            match("else"); 
+
 
             }
 
@@ -1980,10 +1983,10 @@
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:99:8: ( 'default' )
-            // InternalPerspectiveDsl.g:99:10: 'default'
+            // InternalPerspectiveDsl.g:99:8: ( 'switch' )
+            // InternalPerspectiveDsl.g:99:10: 'switch'
             {
-            match("default"); 
+            match("switch"); 
 
 
             }
@@ -2001,11 +2004,10 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:100:8: ( 'case' )
-            // InternalPerspectiveDsl.g:100:10: 'case'
+            // InternalPerspectiveDsl.g:100:8: ( ':' )
+            // InternalPerspectiveDsl.g:100:10: ':'
             {
-            match("case"); 
-
+            match(':'); 
 
             }
 
@@ -2022,10 +2024,10 @@
         try {
             int _type = T__103;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:101:8: ( 'for' )
-            // InternalPerspectiveDsl.g:101:10: 'for'
+            // InternalPerspectiveDsl.g:101:8: ( 'default' )
+            // InternalPerspectiveDsl.g:101:10: 'default'
             {
-            match("for"); 
+            match("default"); 
 
 
             }
@@ -2043,10 +2045,10 @@
         try {
             int _type = T__104;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:102:8: ( 'while' )
-            // InternalPerspectiveDsl.g:102:10: 'while'
+            // InternalPerspectiveDsl.g:102:8: ( 'case' )
+            // InternalPerspectiveDsl.g:102:10: 'case'
             {
-            match("while"); 
+            match("case"); 
 
 
             }
@@ -2064,10 +2066,10 @@
         try {
             int _type = T__105;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:103:8: ( 'do' )
-            // InternalPerspectiveDsl.g:103:10: 'do'
+            // InternalPerspectiveDsl.g:103:8: ( 'for' )
+            // InternalPerspectiveDsl.g:103:10: 'for'
             {
-            match("do"); 
+            match("for"); 
 
 
             }
@@ -2085,10 +2087,10 @@
         try {
             int _type = T__106;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:104:8: ( 'new' )
-            // InternalPerspectiveDsl.g:104:10: 'new'
+            // InternalPerspectiveDsl.g:104:8: ( 'while' )
+            // InternalPerspectiveDsl.g:104:10: 'while'
             {
-            match("new"); 
+            match("while"); 
 
 
             }
@@ -2106,10 +2108,10 @@
         try {
             int _type = T__107;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:105:8: ( 'null' )
-            // InternalPerspectiveDsl.g:105:10: 'null'
+            // InternalPerspectiveDsl.g:105:8: ( 'do' )
+            // InternalPerspectiveDsl.g:105:10: 'do'
             {
-            match("null"); 
+            match("do"); 
 
 
             }
@@ -2127,10 +2129,10 @@
         try {
             int _type = T__108;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:106:8: ( 'typeof' )
-            // InternalPerspectiveDsl.g:106:10: 'typeof'
+            // InternalPerspectiveDsl.g:106:8: ( 'new' )
+            // InternalPerspectiveDsl.g:106:10: 'new'
             {
-            match("typeof"); 
+            match("new"); 
 
 
             }
@@ -2148,10 +2150,10 @@
         try {
             int _type = T__109;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:107:8: ( 'throw' )
-            // InternalPerspectiveDsl.g:107:10: 'throw'
+            // InternalPerspectiveDsl.g:107:8: ( 'null' )
+            // InternalPerspectiveDsl.g:107:10: 'null'
             {
-            match("throw"); 
+            match("null"); 
 
 
             }
@@ -2169,10 +2171,10 @@
         try {
             int _type = T__110;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:108:8: ( 'return' )
-            // InternalPerspectiveDsl.g:108:10: 'return'
+            // InternalPerspectiveDsl.g:108:8: ( 'typeof' )
+            // InternalPerspectiveDsl.g:108:10: 'typeof'
             {
-            match("return"); 
+            match("typeof"); 
 
 
             }
@@ -2190,10 +2192,10 @@
         try {
             int _type = T__111;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:109:8: ( 'try' )
-            // InternalPerspectiveDsl.g:109:10: 'try'
+            // InternalPerspectiveDsl.g:109:8: ( 'throw' )
+            // InternalPerspectiveDsl.g:109:10: 'throw'
             {
-            match("try"); 
+            match("throw"); 
 
 
             }
@@ -2211,10 +2213,10 @@
         try {
             int _type = T__112;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:110:8: ( 'finally' )
-            // InternalPerspectiveDsl.g:110:10: 'finally'
+            // InternalPerspectiveDsl.g:110:8: ( 'return' )
+            // InternalPerspectiveDsl.g:110:10: 'return'
             {
-            match("finally"); 
+            match("return"); 
 
 
             }
@@ -2232,10 +2234,10 @@
         try {
             int _type = T__113;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:111:8: ( 'synchronized' )
-            // InternalPerspectiveDsl.g:111:10: 'synchronized'
+            // InternalPerspectiveDsl.g:111:8: ( 'try' )
+            // InternalPerspectiveDsl.g:111:10: 'try'
             {
-            match("synchronized"); 
+            match("try"); 
 
 
             }
@@ -2253,10 +2255,10 @@
         try {
             int _type = T__114;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:112:8: ( 'catch' )
-            // InternalPerspectiveDsl.g:112:10: 'catch'
+            // InternalPerspectiveDsl.g:112:8: ( 'finally' )
+            // InternalPerspectiveDsl.g:112:10: 'finally'
             {
-            match("catch"); 
+            match("finally"); 
 
 
             }
@@ -2274,10 +2276,11 @@
         try {
             int _type = T__115;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:113:8: ( '?' )
-            // InternalPerspectiveDsl.g:113:10: '?'
+            // InternalPerspectiveDsl.g:113:8: ( 'synchronized' )
+            // InternalPerspectiveDsl.g:113:10: 'synchronized'
             {
-            match('?'); 
+            match("synchronized"); 
+
 
             }
 
@@ -2294,10 +2297,11 @@
         try {
             int _type = T__116;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:114:8: ( '&' )
-            // InternalPerspectiveDsl.g:114:10: '&'
+            // InternalPerspectiveDsl.g:114:8: ( 'catch' )
+            // InternalPerspectiveDsl.g:114:10: 'catch'
             {
-            match('&'); 
+            match("catch"); 
+
 
             }
 
@@ -2314,11 +2318,10 @@
         try {
             int _type = T__117;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:115:8: ( 'describedBy' )
-            // InternalPerspectiveDsl.g:115:10: 'describedBy'
+            // InternalPerspectiveDsl.g:115:8: ( '?' )
+            // InternalPerspectiveDsl.g:115:10: '?'
             {
-            match("describedBy"); 
-
+            match('?'); 
 
             }
 
@@ -2335,11 +2338,10 @@
         try {
             int _type = T__118;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:116:8: ( 'isClosable' )
-            // InternalPerspectiveDsl.g:116:10: 'isClosable'
+            // InternalPerspectiveDsl.g:116:8: ( '&' )
+            // InternalPerspectiveDsl.g:116:10: '&'
             {
-            match("isClosable"); 
-
+            match('&'); 
 
             }
 
@@ -2356,10 +2358,10 @@
         try {
             int _type = T__119;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:117:8: ( 'ns' )
-            // InternalPerspectiveDsl.g:117:10: 'ns'
+            // InternalPerspectiveDsl.g:117:8: ( 'describedBy' )
+            // InternalPerspectiveDsl.g:117:10: 'describedBy'
             {
-            match("ns"); 
+            match("describedBy"); 
 
 
             }
@@ -2377,10 +2379,10 @@
         try {
             int _type = T__120;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:118:8: ( '::' )
-            // InternalPerspectiveDsl.g:118:10: '::'
+            // InternalPerspectiveDsl.g:118:8: ( 'isClosable' )
+            // InternalPerspectiveDsl.g:118:10: 'isClosable'
             {
-            match("::"); 
+            match("isClosable"); 
 
 
             }
@@ -2398,10 +2400,10 @@
         try {
             int _type = T__121;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:119:8: ( '?.' )
-            // InternalPerspectiveDsl.g:119:10: '?.'
+            // InternalPerspectiveDsl.g:119:8: ( 'ns' )
+            // InternalPerspectiveDsl.g:119:10: 'ns'
             {
-            match("?."); 
+            match("ns"); 
 
 
             }
@@ -2419,10 +2421,11 @@
         try {
             int _type = T__122;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:120:8: ( '|' )
-            // InternalPerspectiveDsl.g:120:10: '|'
+            // InternalPerspectiveDsl.g:120:8: ( '::' )
+            // InternalPerspectiveDsl.g:120:10: '::'
             {
-            match('|'); 
+            match("::"); 
+
 
             }
 
@@ -2439,10 +2442,10 @@
         try {
             int _type = T__123;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:121:8: ( 'var' )
-            // InternalPerspectiveDsl.g:121:10: 'var'
+            // InternalPerspectiveDsl.g:121:8: ( '?.' )
+            // InternalPerspectiveDsl.g:121:10: '?.'
             {
-            match("var"); 
+            match("?."); 
 
 
             }
@@ -2460,8 +2463,49 @@
         try {
             int _type = T__124;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:122:8: ( 'true' )
-            // InternalPerspectiveDsl.g:122:10: 'true'
+            // InternalPerspectiveDsl.g:122:8: ( '|' )
+            // InternalPerspectiveDsl.g:122:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__124"
+
+    // $ANTLR start "T__125"
+    public final void mT__125() throws RecognitionException {
+        try {
+            int _type = T__125;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:123:8: ( 'var' )
+            // InternalPerspectiveDsl.g:123:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__125"
+
+    // $ANTLR start "T__126"
+    public final void mT__126() throws RecognitionException {
+        try {
+            int _type = T__126;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:124:8: ( 'true' )
+            // InternalPerspectiveDsl.g:124:10: 'true'
             {
             match("true"); 
 
@@ -2474,17 +2518,17 @@
         finally {
         }
     }
-    // $ANTLR end "T__124"
+    // $ANTLR end "T__126"
 
     // $ANTLR start "RULE_HEX"
     public final void mRULE_HEX() throws RecognitionException {
         try {
             int _type = RULE_HEX;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:23975:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // InternalPerspectiveDsl.g:23975:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalPerspectiveDsl.g:24183:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalPerspectiveDsl.g:24183:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // InternalPerspectiveDsl.g:23975:12: ( '0x' | '0X' )
+            // InternalPerspectiveDsl.g:24183:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -2512,7 +2556,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:23975:13: '0x'
+                    // InternalPerspectiveDsl.g:24183:13: '0x'
                     {
                     match("0x"); 
 
@@ -2520,7 +2564,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:23975:18: '0X'
+                    // InternalPerspectiveDsl.g:24183:18: '0X'
                     {
                     match("0X"); 
 
@@ -2530,7 +2574,7 @@
 
             }
 
-            // InternalPerspectiveDsl.g:23975:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalPerspectiveDsl.g:24183:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -2568,7 +2612,7 @@
                 cnt2++;
             } while (true);
 
-            // InternalPerspectiveDsl.g:23975:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalPerspectiveDsl.g:24183:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -2577,10 +2621,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:23975:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalPerspectiveDsl.g:24183:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // InternalPerspectiveDsl.g:23975:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalPerspectiveDsl.g:24183:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -2598,7 +2642,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:23975:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalPerspectiveDsl.g:24183:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -2622,7 +2666,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:23975:84: ( 'l' | 'L' )
+                            // InternalPerspectiveDsl.g:24183:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -2661,11 +2705,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:23977:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // InternalPerspectiveDsl.g:23977:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalPerspectiveDsl.g:24185:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalPerspectiveDsl.g:24185:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // InternalPerspectiveDsl.g:23977:21: ( '0' .. '9' | '_' )*
+            // InternalPerspectiveDsl.g:24185:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -2714,11 +2758,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:23979:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // InternalPerspectiveDsl.g:23979:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalPerspectiveDsl.g:24187:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalPerspectiveDsl.g:24187:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             {
             mRULE_INT(); 
-            // InternalPerspectiveDsl.g:23979:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalPerspectiveDsl.g:24187:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -2727,7 +2771,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:23979:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalPerspectiveDsl.g:24187:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -2738,7 +2782,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // InternalPerspectiveDsl.g:23979:36: ( '+' | '-' )?
+                    // InternalPerspectiveDsl.g:24187:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -2771,7 +2815,7 @@
 
             }
 
-            // InternalPerspectiveDsl.g:23979:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalPerspectiveDsl.g:24187:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -2783,7 +2827,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:23979:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalPerspectiveDsl.g:24187:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -2807,7 +2851,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:23979:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalPerspectiveDsl.g:24187: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();
@@ -2840,10 +2884,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:23981:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // InternalPerspectiveDsl.g:23981:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalPerspectiveDsl.g:24189:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalPerspectiveDsl.g:24189:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // InternalPerspectiveDsl.g:23981:11: ( '^' )?
+            // InternalPerspectiveDsl.g:24189:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -2852,7 +2896,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:23981:11: '^'
+                    // InternalPerspectiveDsl.g:24189:11: '^'
                     {
                     match('^'); 
 
@@ -2870,7 +2914,7 @@
                 recover(mse);
                 throw mse;}
 
-            // InternalPerspectiveDsl.g:23981:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalPerspectiveDsl.g:24189:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -2919,10 +2963,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:23983:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // InternalPerspectiveDsl.g:23983:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalPerspectiveDsl.g:24191:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalPerspectiveDsl.g:24191:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // InternalPerspectiveDsl.g:23983:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalPerspectiveDsl.g:24191:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -2940,10 +2984,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:23983:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalPerspectiveDsl.g:24191:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // InternalPerspectiveDsl.g:23983:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalPerspectiveDsl.g:24191:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -2959,7 +3003,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:23983:21: '\\\\' .
+                    	    // InternalPerspectiveDsl.g:24191:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2967,7 +3011,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalPerspectiveDsl.g:23983:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalPerspectiveDsl.g:24191:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2987,7 +3031,7 @@
                         }
                     } while (true);
 
-                    // InternalPerspectiveDsl.g:23983:44: ( '\"' )?
+                    // InternalPerspectiveDsl.g:24191:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -2996,7 +3040,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:23983:44: '\"'
+                            // InternalPerspectiveDsl.g:24191:44: '\"'
                             {
                             match('\"'); 
 
@@ -3009,10 +3053,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:23983:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalPerspectiveDsl.g:24191:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // InternalPerspectiveDsl.g:23983:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalPerspectiveDsl.g:24191:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -3028,7 +3072,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:23983:55: '\\\\' .
+                    	    // InternalPerspectiveDsl.g:24191:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -3036,7 +3080,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalPerspectiveDsl.g:23983:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalPerspectiveDsl.g:24191:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -3056,7 +3100,7 @@
                         }
                     } while (true);
 
-                    // InternalPerspectiveDsl.g:23983:79: ( '\\'' )?
+                    // InternalPerspectiveDsl.g:24191:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -3065,7 +3109,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:23983:79: '\\''
+                            // InternalPerspectiveDsl.g:24191:79: '\\''
                             {
                             match('\''); 
 
@@ -3096,12 +3140,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:23985:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // InternalPerspectiveDsl.g:23985:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalPerspectiveDsl.g:24193:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalPerspectiveDsl.g:24193:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // InternalPerspectiveDsl.g:23985:24: ( options {greedy=false; } : . )*
+            // InternalPerspectiveDsl.g:24193:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -3126,7 +3170,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:23985:52: .
+            	    // InternalPerspectiveDsl.g:24193:52: .
             	    {
             	    matchAny(); 
 
@@ -3156,12 +3200,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:23987:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // InternalPerspectiveDsl.g:23987:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalPerspectiveDsl.g:24195:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalPerspectiveDsl.g:24195:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // InternalPerspectiveDsl.g:23987:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalPerspectiveDsl.g:24195:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -3174,7 +3218,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:23987:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalPerspectiveDsl.g:24195: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();
@@ -3194,7 +3238,7 @@
                 }
             } while (true);
 
-            // InternalPerspectiveDsl.g:23987:40: ( ( '\\r' )? '\\n' )?
+            // InternalPerspectiveDsl.g:24195:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -3203,9 +3247,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:23987:41: ( '\\r' )? '\\n'
+                    // InternalPerspectiveDsl.g:24195:41: ( '\\r' )? '\\n'
                     {
-                    // InternalPerspectiveDsl.g:23987:41: ( '\\r' )?
+                    // InternalPerspectiveDsl.g:24195:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -3214,7 +3258,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:23987:41: '\\r'
+                            // InternalPerspectiveDsl.g:24195:41: '\\r'
                             {
                             match('\r'); 
 
@@ -3246,10 +3290,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:23989:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // InternalPerspectiveDsl.g:23989:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalPerspectiveDsl.g:24197:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalPerspectiveDsl.g:24197:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // InternalPerspectiveDsl.g:23989:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalPerspectiveDsl.g:24197:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -3303,8 +3347,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:23991:16: ( . )
-            // InternalPerspectiveDsl.g:23991:18: .
+            // InternalPerspectiveDsl.g:24199:16: ( . )
+            // InternalPerspectiveDsl.g:24199:18: .
             {
             matchAny(); 
 
@@ -3319,8 +3363,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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt21=121;
+        // InternalPerspectiveDsl.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=123;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
@@ -4108,63 +4152,77 @@
                 }
                 break;
             case 113 :
-                // InternalPerspectiveDsl.g:1:707: RULE_HEX
+                // InternalPerspectiveDsl.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // InternalPerspectiveDsl.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // InternalPerspectiveDsl.g:1:721: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 114 :
-                // InternalPerspectiveDsl.g:1:716: RULE_INT
+            case 116 :
+                // InternalPerspectiveDsl.g:1:730: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 115 :
-                // InternalPerspectiveDsl.g:1:725: RULE_DECIMAL
+            case 117 :
+                // InternalPerspectiveDsl.g:1:739: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 116 :
-                // InternalPerspectiveDsl.g:1:738: RULE_ID
+            case 118 :
+                // InternalPerspectiveDsl.g:1:752: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 117 :
-                // InternalPerspectiveDsl.g:1:746: RULE_STRING
+            case 119 :
+                // InternalPerspectiveDsl.g:1:760: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 118 :
-                // InternalPerspectiveDsl.g:1:758: RULE_ML_COMMENT
+            case 120 :
+                // InternalPerspectiveDsl.g:1:772: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 119 :
-                // InternalPerspectiveDsl.g:1:774: RULE_SL_COMMENT
+            case 121 :
+                // InternalPerspectiveDsl.g:1:788: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 120 :
-                // InternalPerspectiveDsl.g:1:790: RULE_WS
+            case 122 :
+                // InternalPerspectiveDsl.g:1:804: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 121 :
-                // InternalPerspectiveDsl.g:1:798: RULE_ANY_OTHER
+            case 123 :
+                // InternalPerspectiveDsl.g:1:812: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -4178,34 +4236,34 @@
 
     protected DFA21 dfa21 = new DFA21(this);
     static final String DFA21_eotS =
-        "\1\uffff\1\66\1\70\1\72\1\75\1\101\1\104\1\110\1\112\1\114\1\116\1\120\1\122\1\125\7\131\2\uffff\13\131\10\uffff\1\u0090\1\131\2\u0096\1\63\5\uffff\1\u009b\26\uffff\1\u009d\5\uffff\1\u009f\4\uffff\3\131\1\uffff\13\131\1\u00b1\1\u00b2\10\131\2\uffff\2\131\1\u00bf\6\131\1\u00c9\10\131\1\u00d7\3\131\12\uffff\2\131\1\u00dd\1\uffff\1\u0096\12\uffff\1\u00de\1\u00df\17\131\2\uffff\4\131\1\u00f3\7\131\1\uffff\5\131\1\u0100\3\131\1\uffff\15\131\1\uffff\3\131\1\u0114\1\131\3\uffff\1\131\1\u0117\1\131\1\u0119\17\131\1\uffff\2\131\1\u012c\11\131\1\uffff\1\u0136\2\131\1\u0139\1\u013a\1\131\1\u013c\1\u013d\13\131\1\uffff\1\u0149\1\131\1\uffff\1\131\1\uffff\1\131\1\u014e\12\131\1\u0159\5\131\1\uffff\6\131\1\u0165\1\131\1\u0167\1\uffff\2\131\2\uffff\1\u016a\2\uffff\1\u016b\3\131\1\u016f\5\131\1\u0175\1\uffff\3\131\1\u0179\1\uffff\1\131\1\u017c\1\u017d\1\131\1\u017f\1\131\1\u0181\3\131\1\uffff\13\131\1\uffff\1\u0190\1\uffff\2\131\2\uffff\1\u0193\1\u0194\1\u0195\1\uffff\3\131\1\u0199\1\131\1\uffff\1\131\1\u019c\1\131\1\uffff\2\131\2\uffff\1\131\1\uffff\1\131\1\uffff\1\u01a2\3\131\1\u01a6\1\131\1\u01a8\2\131\1\u01ab\2\131\1\u01ae\1\131\1\uffff\2\131\3\uffff\1\u01b2\2\131\1\uffff\1\u01b5\1\u01b6\1\uffff\5\131\1\uffff\3\131\1\uffff\1\131\1\uffff\2\131\1\uffff\1\u01c2\1\131\1\uffff\1\u01c4\2\131\1\uffff\2\131\2\uffff\1\u01c9\10\131\1\u01d2\1\131\1\uffff\1\131\1\uffff\4\131\1\uffff\4\131\1\u01dd\1\u01de\1\131\1\u01e0\1\uffff\3\131\1\u01e4\4\131\1\u01e9\1\131\2\uffff\1\131\1\uffff\1\u01ec\1\131\1\u01ee\1\uffff\1\u01ef\3\131\1\uffff\1\u01f3\1\131\1\uffff\1\131\2\uffff\1\131\1\u01f7\1\131\1\uffff\1\u01f9\1\u01fa\1\131\1\uffff\1\131\2\uffff\1\131\1\u01fe\1\u01ff\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\u0093\2\u0096\1\62\5\uffff\1\u009b\26\uffff\1\u009d\5\uffff\1\u009f\4\uffff\3\130\1\uffff\14\130\1\u00b2\1\u00b3\10\130\2\uffff\2\130\1\u00c0\6\130\1\u00ca\6\130\1\u00d7\7\130\1\u00df\13\uffff\1\u0096\12\uffff\1\u00e0\1\u00e1\20\130\2\uffff\4\130\1\u00f6\7\130\1\uffff\5\130\1\u0103\3\130\1\uffff\14\130\1\uffff\5\130\1\u0118\1\130\3\uffff\1\130\1\u011b\2\130\1\u011e\17\130\1\uffff\2\130\1\u0131\11\130\1\uffff\1\u013b\6\130\1\u0142\1\u0143\6\130\1\u014a\3\130\1\u014e\1\uffff\1\u014f\1\130\1\uffff\2\130\1\uffff\1\130\1\u0155\12\130\1\u0160\5\130\1\uffff\6\130\1\u016c\1\130\1\u016e\1\uffff\5\130\1\u0174\2\uffff\1\u0175\1\130\1\u0177\3\130\1\uffff\2\130\1\u017d\2\uffff\4\130\1\u0182\1\uffff\1\130\1\u0185\1\u0186\1\130\1\u0188\1\130\1\u018a\3\130\1\uffff\13\130\1\uffff\1\u0199\1\uffff\3\130\1\u019d\1\u019e\2\uffff\1\u019f\1\uffff\3\130\1\u01a3\1\130\1\uffff\1\130\1\u01a6\2\130\1\uffff\2\130\2\uffff\1\130\1\uffff\1\130\1\uffff\1\u01ad\3\130\1\u01b1\1\130\1\u01b3\2\130\1\u01b6\2\130\1\u01b9\1\130\1\uffff\3\130\3\uffff\1\u01be\2\130\1\uffff\1\u01c1\1\u01c2\1\uffff\6\130\1\uffff\3\130\1\uffff\1\130\1\uffff\2\130\1\uffff\1\u01cf\1\130\1\uffff\1\u01d1\3\130\1\uffff\2\130\2\uffff\1\u01d7\11\130\1\u01e1\1\130\1\uffff\1\130\1\uffff\5\130\1\uffff\5\130\1\u01ee\1\u01ef\1\130\1\u01f1\1\uffff\3\130\1\u01f5\6\130\1\u01fc\1\130\2\uffff\1\130\1\uffff\1\u01ff\1\130\1\u0201\1\uffff\1\130\1\u0203\4\130\1\uffff\1\u0208\1\130\1\uffff\1\130\1\uffff\1\130\1\uffff\1\130\1\u020d\1\u020e\1\130\1\uffff\1\u0210\1\u0211\1\u0212\1\130\2\uffff\1\130\3\uffff\1\130\1\u0216\1\u0217\2\uffff";
     static final String DFA21_eofS =
-        "\u0200\uffff";
+        "\u0218\uffff";
     static final String DFA21_minS =
-        "\1\0\1\75\1\174\1\46\1\53\1\55\2\52\3\75\1\76\2\56\1\141\1\154\1\141\1\143\1\141\1\157\1\141\2\uffff\1\163\1\143\1\141\1\146\1\162\1\145\1\141\1\145\2\141\1\145\10\uffff\1\72\1\145\2\60\1\44\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\154\1\162\1\145\1\uffff\1\164\1\163\1\141\1\160\1\163\2\141\1\151\1\156\1\160\1\157\2\44\1\103\2\154\2\162\1\143\1\162\1\157\2\uffff\1\145\1\143\1\44\1\157\1\142\1\160\1\162\1\165\1\147\1\44\1\151\2\141\1\162\1\160\1\141\1\146\1\164\1\44\1\156\1\154\1\151\12\uffff\1\167\1\154\1\44\1\uffff\1\60\12\uffff\2\44\1\164\1\167\2\145\1\164\1\145\1\150\1\145\1\162\1\143\1\164\1\143\1\157\1\156\1\164\2\uffff\1\154\1\163\1\164\1\141\1\44\1\151\1\153\1\164\1\163\1\143\1\162\1\145\1\uffff\1\154\1\157\1\154\1\145\1\157\1\44\2\145\1\141\1\uffff\1\144\1\156\1\162\1\144\1\145\1\143\1\157\1\165\1\154\1\164\1\141\1\143\1\141\1\uffff\1\142\1\143\1\154\1\44\1\154\3\uffff\1\151\1\44\1\156\1\44\1\151\1\162\1\103\2\143\1\145\1\143\1\150\1\162\1\125\1\141\1\157\2\145\1\154\1\uffff\1\172\1\141\1\44\1\160\1\145\1\164\1\163\1\142\1\154\1\145\1\157\1\167\1\uffff\1\44\2\156\2\44\1\164\2\44\1\150\2\162\1\157\1\150\1\165\1\162\1\111\1\141\1\157\1\145\1\uffff\1\44\1\143\1\uffff\1\144\1\uffff\1\143\1\44\1\157\1\164\1\150\1\126\1\150\1\162\1\164\1\122\1\156\1\163\1\44\1\162\1\154\1\157\1\147\1\164\1\uffff\1\145\1\163\1\141\1\163\1\141\1\157\1\44\1\146\1\44\1\uffff\1\164\1\151\2\uffff\1\44\2\uffff\1\44\1\164\1\156\1\147\1\44\1\154\1\151\2\156\1\155\1\44\1\uffff\1\141\1\163\1\151\1\44\1\uffff\1\156\2\44\1\157\1\44\1\157\1\44\1\111\1\143\1\141\1\uffff\1\103\1\171\1\156\1\145\1\141\1\143\2\163\1\151\1\162\1\147\1\uffff\1\44\1\uffff\1\141\1\147\2\uffff\3\44\1\uffff\1\164\1\142\1\164\1\44\1\145\1\uffff\1\154\1\44\1\157\1\uffff\1\164\1\144\2\uffff\1\154\1\uffff\1\156\1\uffff\1\44\1\145\1\142\1\157\1\44\1\164\1\44\1\143\1\164\1\44\1\153\1\142\1\44\1\171\1\uffff\1\164\1\162\3\uffff\1\44\2\145\1\uffff\2\44\1\uffff\1\156\1\141\1\105\1\165\1\151\1\uffff\1\157\2\154\1\uffff\1\141\1\uffff\1\153\1\151\1\uffff\1\44\1\151\1\uffff\1\44\1\151\1\141\1\uffff\1\144\1\162\2\uffff\1\44\1\151\1\154\1\155\1\172\1\146\1\145\1\165\1\154\1\44\1\166\1\uffff\1\154\1\uffff\1\157\1\155\1\102\1\143\1\uffff\1\156\3\145\2\44\1\155\1\44\1\uffff\1\145\1\151\1\156\1\44\1\171\1\150\1\145\1\155\1\44\1\144\2\uffff\1\156\1\uffff\1\44\1\164\1\44\1\uffff\1\44\1\141\1\162\1\145\1\uffff\1\44\1\163\1\uffff\1\171\2\uffff\1\156\1\44\1\156\1\uffff\2\44\1\147\1\uffff\1\164\2\uffff\1\145\2\44\2\uffff";
+        "\1\0\1\75\1\174\1\46\1\53\1\55\2\52\3\75\1\76\2\56\1\141\1\144\1\141\1\143\1\141\1\157\1\141\2\uffff\1\163\1\143\1\150\1\146\1\145\2\141\1\160\1\141\1\145\1\141\10\uffff\1\72\2\60\1\44\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\154\1\162\1\145\1\uffff\1\164\1\151\1\163\1\141\1\160\1\163\2\141\1\151\1\156\1\160\1\157\2\44\1\103\2\154\2\162\1\143\1\162\1\157\2\uffff\1\145\1\143\1\44\1\157\1\164\1\160\1\162\1\165\1\147\1\44\2\141\1\162\1\141\1\146\1\164\1\44\1\155\1\156\1\154\1\151\1\155\1\167\1\154\1\44\13\uffff\1\60\12\uffff\2\44\1\164\1\167\1\145\1\164\1\145\1\164\1\145\1\150\1\145\1\162\1\143\1\164\1\143\1\157\1\156\1\164\2\uffff\1\154\1\163\1\164\1\141\1\44\1\151\1\153\1\164\1\163\1\143\1\162\1\145\1\uffff\1\154\1\157\1\154\1\145\1\157\1\44\2\145\1\141\1\uffff\1\144\1\157\1\165\1\162\1\144\1\145\1\143\1\154\1\164\1\141\1\143\1\141\1\uffff\1\156\1\142\1\143\1\154\1\145\1\44\1\154\3\uffff\1\151\1\44\1\156\1\141\1\44\1\151\1\162\1\103\2\143\1\145\1\143\1\150\1\162\1\125\1\141\1\157\2\145\1\154\1\uffff\1\172\1\141\1\44\1\160\1\145\1\164\1\163\1\142\1\154\1\145\1\157\1\167\1\uffff\1\44\2\156\1\117\2\162\1\164\2\44\1\150\1\157\1\150\1\165\1\162\1\111\1\44\1\141\1\157\1\145\1\44\1\uffff\1\44\1\143\1\uffff\1\144\1\142\1\uffff\1\143\1\44\1\157\1\164\1\150\1\126\1\150\1\162\1\164\1\122\1\156\1\163\1\44\1\162\1\154\1\157\1\147\1\164\1\uffff\1\145\1\163\1\141\1\163\1\141\1\157\1\44\1\146\1\44\1\uffff\1\164\1\151\1\156\1\164\1\156\1\44\2\uffff\1\44\1\147\1\44\1\154\1\151\1\156\1\uffff\1\156\1\155\1\44\2\uffff\1\141\1\163\1\151\1\154\1\44\1\uffff\1\156\2\44\1\157\1\44\1\157\1\44\1\111\1\143\1\141\1\uffff\1\103\1\171\1\156\1\145\1\141\1\143\2\163\1\151\1\162\1\147\1\uffff\1\44\1\uffff\1\141\1\147\1\154\2\44\2\uffff\1\44\1\uffff\1\164\1\142\1\164\1\44\1\145\1\uffff\1\154\1\44\1\157\1\145\1\uffff\1\164\1\144\2\uffff\1\154\1\uffff\1\156\1\uffff\1\44\1\145\1\142\1\157\1\44\1\164\1\44\1\143\1\164\1\44\1\153\1\142\1\44\1\171\1\uffff\1\164\1\162\1\171\3\uffff\1\44\2\145\1\uffff\2\44\1\uffff\1\156\1\124\1\141\1\105\1\165\1\151\1\uffff\1\157\2\154\1\uffff\1\141\1\uffff\1\153\1\151\1\uffff\1\44\1\151\1\uffff\1\44\1\151\1\141\1\124\1\uffff\1\144\1\162\2\uffff\1\44\1\141\1\151\1\154\1\155\1\172\1\146\1\145\1\165\1\154\1\44\1\166\1\uffff\1\154\1\uffff\1\157\1\155\1\141\1\102\1\143\1\uffff\1\142\1\156\3\145\2\44\1\155\1\44\1\uffff\1\145\1\151\1\156\1\44\1\142\1\171\1\150\1\154\1\145\1\155\1\44\1\144\2\uffff\1\156\1\uffff\1\44\1\164\1\44\1\uffff\1\154\1\44\1\141\1\145\1\162\1\145\1\uffff\1\44\1\163\1\uffff\1\171\1\uffff\1\145\1\uffff\1\156\2\44\1\156\1\uffff\3\44\1\147\2\uffff\1\164\3\uffff\1\145\2\44\2\uffff";
     static final String DFA21_maxS =
-        "\1\uffff\1\76\1\174\1\46\1\75\1\76\5\75\1\76\1\56\1\72\1\151\1\170\1\171\1\163\2\157\1\162\2\uffff\2\163\1\171\2\162\1\145\1\150\1\145\1\157\1\141\1\150\10\uffff\1\72\1\165\1\170\1\154\1\172\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\2\162\1\145\1\uffff\1\164\1\163\1\141\1\160\1\163\1\154\1\141\1\151\1\156\1\160\1\157\2\172\1\103\1\154\1\156\4\162\1\157\2\uffff\1\145\1\143\1\172\1\160\1\142\1\160\1\162\1\171\1\151\1\172\1\151\2\141\2\164\1\141\1\163\1\164\1\172\1\156\1\154\1\151\12\uffff\1\167\1\154\1\172\1\uffff\1\154\12\uffff\2\172\1\164\1\167\2\145\1\164\1\145\1\150\1\145\1\162\1\143\1\164\1\143\1\157\1\156\1\164\2\uffff\1\154\1\163\1\164\1\141\1\172\1\151\1\153\1\164\1\163\1\143\1\162\1\145\1\uffff\1\154\1\157\1\154\1\145\1\157\1\172\2\145\1\141\1\uffff\1\144\1\156\1\162\1\144\1\145\1\143\1\157\1\165\1\154\1\164\1\141\1\143\1\141\1\uffff\1\142\1\143\1\154\1\172\1\154\3\uffff\1\151\1\172\1\156\1\172\1\151\1\162\1\103\2\143\1\145\1\143\1\150\1\162\1\125\1\141\1\157\2\145\1\154\1\uffff\1\172\1\141\1\172\1\160\1\145\1\164\1\163\1\142\1\154\1\145\1\157\1\167\1\uffff\1\172\2\156\2\172\1\164\2\172\1\150\2\162\1\157\1\150\1\165\1\162\1\111\1\141\1\157\1\145\1\uffff\1\172\1\143\1\uffff\1\163\1\uffff\1\143\1\172\1\157\1\164\1\150\1\126\1\150\1\162\1\164\1\122\1\156\1\163\1\172\1\162\1\154\1\157\1\147\1\164\1\uffff\1\145\1\163\1\141\1\163\1\141\1\157\1\172\1\146\1\172\1\uffff\1\164\1\151\2\uffff\1\172\2\uffff\1\172\1\164\1\156\1\147\1\172\1\154\1\151\2\156\1\155\1\172\1\uffff\1\141\1\163\1\151\1\172\1\uffff\1\156\2\172\1\157\1\172\1\157\1\172\1\111\1\143\1\141\1\uffff\1\103\1\171\1\156\1\145\1\141\1\143\2\163\1\151\1\162\1\147\1\uffff\1\172\1\uffff\1\141\1\147\2\uffff\3\172\1\uffff\1\164\1\142\1\164\1\172\1\145\1\uffff\1\154\1\172\1\157\1\uffff\1\164\1\144\2\uffff\1\154\1\uffff\1\156\1\uffff\1\172\1\145\1\142\1\157\1\172\1\164\1\172\1\143\1\164\1\172\1\153\1\142\1\172\1\171\1\uffff\1\164\1\162\3\uffff\1\172\2\145\1\uffff\2\172\1\uffff\1\156\1\141\1\105\1\165\1\151\1\uffff\1\157\2\154\1\uffff\1\141\1\uffff\1\153\1\151\1\uffff\1\172\1\151\1\uffff\1\172\1\151\1\141\1\uffff\1\144\1\162\2\uffff\1\172\1\151\1\154\1\155\1\172\1\146\1\145\1\165\1\154\1\172\1\166\1\uffff\1\154\1\uffff\1\157\1\155\1\102\1\143\1\uffff\1\156\3\145\2\172\1\155\1\172\1\uffff\1\145\1\151\1\156\1\172\1\171\1\150\1\145\1\155\1\172\1\144\2\uffff\1\156\1\uffff\1\172\1\164\1\172\1\uffff\1\172\1\141\1\162\1\145\1\uffff\1\172\1\163\1\uffff\1\171\2\uffff\1\156\1\172\1\156\1\uffff\2\172\1\147\1\uffff\1\164\2\uffff\1\145\2\172\2\uffff";
+        "\1\uffff\1\76\1\174\1\46\1\75\1\76\5\75\1\76\1\56\1\72\1\151\1\170\1\171\1\163\2\157\1\162\2\uffff\2\163\1\171\1\162\1\145\1\150\1\157\1\160\1\141\1\150\1\165\10\uffff\1\72\1\170\1\154\1\172\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\2\162\1\145\1\uffff\1\164\1\151\1\163\1\141\1\160\1\163\1\154\1\141\1\151\1\156\1\160\1\157\2\172\1\103\1\154\1\156\4\162\1\157\2\uffff\1\145\1\143\1\172\1\160\1\164\1\160\1\162\1\171\1\151\1\172\1\164\1\141\1\164\1\141\1\163\1\164\1\172\1\155\1\156\1\154\1\151\1\155\1\167\1\154\1\172\13\uffff\1\154\12\uffff\2\172\1\164\1\167\1\145\1\164\1\145\1\164\1\145\1\150\1\145\1\162\1\143\1\164\1\143\1\157\1\156\1\164\2\uffff\1\154\1\163\1\164\1\141\1\172\1\151\1\153\1\164\1\163\1\143\1\162\1\145\1\uffff\1\154\1\157\1\154\1\145\1\157\1\172\2\145\1\141\1\uffff\1\144\1\157\1\165\1\162\1\144\1\145\1\143\1\154\1\164\1\141\1\143\1\141\1\uffff\1\156\1\142\1\143\1\154\1\145\1\172\1\154\3\uffff\1\151\1\172\1\156\1\141\1\172\1\151\1\162\1\103\2\143\1\145\1\143\1\150\1\162\1\125\1\141\1\157\2\145\1\154\1\uffff\1\172\1\141\1\172\1\160\1\145\1\164\1\163\1\142\1\154\1\145\1\157\1\167\1\uffff\1\172\2\156\1\117\2\162\1\164\2\172\1\150\1\157\1\150\1\165\1\162\1\111\1\172\1\141\1\157\1\145\1\172\1\uffff\1\172\1\143\1\uffff\1\163\1\142\1\uffff\1\143\1\172\1\157\1\164\1\150\1\126\1\150\1\162\1\164\1\122\1\156\1\163\1\172\1\162\1\154\1\157\1\147\1\164\1\uffff\1\145\1\163\1\141\1\163\1\141\1\157\1\172\1\146\1\172\1\uffff\1\164\1\151\1\156\1\164\1\156\1\172\2\uffff\1\172\1\147\1\172\1\154\1\151\1\156\1\uffff\1\156\1\155\1\172\2\uffff\1\141\1\163\1\151\1\154\1\172\1\uffff\1\156\2\172\1\157\1\172\1\157\1\172\1\111\1\143\1\141\1\uffff\1\103\1\171\1\156\1\145\1\141\1\143\2\163\1\151\1\162\1\147\1\uffff\1\172\1\uffff\1\141\1\147\1\154\2\172\2\uffff\1\172\1\uffff\1\164\1\142\1\164\1\172\1\145\1\uffff\1\154\1\172\1\157\1\145\1\uffff\1\164\1\144\2\uffff\1\154\1\uffff\1\156\1\uffff\1\172\1\145\1\142\1\157\1\172\1\164\1\172\1\143\1\164\1\172\1\153\1\142\1\172\1\171\1\uffff\1\164\1\162\1\171\3\uffff\1\172\2\145\1\uffff\2\172\1\uffff\1\156\1\124\1\141\1\105\1\165\1\151\1\uffff\1\157\2\154\1\uffff\1\141\1\uffff\1\153\1\151\1\uffff\1\172\1\151\1\uffff\1\172\1\151\1\141\1\124\1\uffff\1\144\1\162\2\uffff\1\172\1\141\1\151\1\154\1\155\1\172\1\146\1\145\1\165\1\154\1\172\1\166\1\uffff\1\154\1\uffff\1\157\1\155\1\141\1\102\1\143\1\uffff\1\142\1\156\3\145\2\172\1\155\1\172\1\uffff\1\145\1\151\1\156\1\172\1\142\1\171\1\150\1\154\1\145\1\155\1\172\1\144\2\uffff\1\156\1\uffff\1\172\1\164\1\172\1\uffff\1\154\1\172\1\141\1\145\1\162\1\145\1\uffff\1\172\1\163\1\uffff\1\171\1\uffff\1\145\1\uffff\1\156\2\172\1\156\1\uffff\3\172\1\147\2\uffff\1\164\3\uffff\1\145\2\172\2\uffff";
     static final String DFA21_acceptS =
-        "\25\uffff\1\52\1\53\13\uffff\1\113\1\114\1\115\1\116\1\117\1\120\1\121\1\122\5\uffff\1\164\2\165\1\170\1\171\1\uffff\1\23\1\1\1\2\1\156\1\3\1\150\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6\1\31\1\30\1\7\1\166\1\167\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\155\1\147\3\uffff\1\164\25\uffff\1\52\1\53\26\uffff\1\113\1\114\1\115\1\116\1\117\1\120\1\121\1\122\1\154\1\130\3\uffff\1\161\1\uffff\1\162\1\163\1\165\1\170\1\13\1\11\1\14\1\12\1\21\1\22\21\uffff\1\107\1\125\14\uffff\1\124\11\uffff\1\103\15\uffff\1\135\5\uffff\1\153\1\40\1\157\23\uffff\1\133\14\uffff\1\143\23\uffff\1\136\2\uffff\1\70\1\uffff\1\126\22\uffff\1\67\11\uffff\1\160\2\uffff\1\73\1\74\1\uffff\1\104\1\132\13\uffff\1\137\4\uffff\1\45\12\uffff\1\46\13\uffff\1\72\1\uffff\1\141\2\uffff\1\75\1\146\3\uffff\1\110\5\uffff\1\134\3\uffff\1\42\2\uffff\1\71\1\106\1\uffff\1\127\1\uffff\1\43\16\uffff\1\140\2\uffff\1\76\1\142\1\101\3\uffff\1\102\2\uffff\1\41\5\uffff\1\57\3\uffff\1\144\1\uffff\1\51\2\uffff\1\55\2\uffff\1\61\3\uffff\1\131\2\uffff\1\105\1\50\13\uffff\1\56\1\uffff\1\100\4\uffff\1\44\10\uffff\1\66\12\uffff\1\123\1\152\1\uffff\1\47\3\uffff\1\77\4\uffff\1\65\2\uffff\1\54\1\uffff\1\63\1\151\3\uffff\1\145\3\uffff\1\62\1\uffff\1\111\1\60\3\uffff\1\64\1\112";
+        "\25\uffff\1\52\1\53\13\uffff\1\115\1\116\1\117\1\120\1\121\1\122\1\123\1\124\4\uffff\1\166\2\167\1\172\1\173\1\uffff\1\23\1\1\1\2\1\160\1\3\1\152\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6\1\31\1\30\1\7\1\170\1\171\1\32\1\10\1\33\1\uffff\1\34\1\15\1\16\1\24\1\17\1\uffff\1\37\1\25\1\157\1\151\3\uffff\1\166\26\uffff\1\52\1\53\31\uffff\1\115\1\116\1\117\1\120\1\121\1\122\1\123\1\124\1\156\1\132\1\163\1\uffff\1\164\1\165\1\167\1\172\1\13\1\11\1\14\1\12\1\21\1\22\22\uffff\1\107\1\127\14\uffff\1\126\11\uffff\1\103\14\uffff\1\137\7\uffff\1\155\1\40\1\161\24\uffff\1\135\14\uffff\1\145\24\uffff\1\140\2\uffff\1\70\2\uffff\1\130\22\uffff\1\67\11\uffff\1\162\6\uffff\1\104\1\134\6\uffff\1\101\3\uffff\1\114\1\141\5\uffff\1\45\12\uffff\1\46\13\uffff\1\113\1\uffff\1\143\5\uffff\1\74\1\150\1\uffff\1\110\5\uffff\1\136\4\uffff\1\42\2\uffff\1\71\1\106\1\uffff\1\131\1\uffff\1\43\16\uffff\1\142\3\uffff\1\75\1\144\1\100\3\uffff\1\102\2\uffff\1\41\6\uffff\1\57\3\uffff\1\146\1\uffff\1\51\2\uffff\1\55\2\uffff\1\61\4\uffff\1\133\2\uffff\1\105\1\50\14\uffff\1\56\1\uffff\1\77\5\uffff\1\44\11\uffff\1\66\14\uffff\1\125\1\154\1\uffff\1\47\3\uffff\1\76\6\uffff\1\65\2\uffff\1\54\1\uffff\1\63\1\uffff\1\153\4\uffff\1\147\4\uffff\1\73\1\62\1\uffff\1\111\1\60\1\72\3\uffff\1\64\1\112";
     static final String DFA21_specialS =
-        "\1\0\u01ff\uffff}>";
+        "\1\0\u0217\uffff}>";
     static final String[] DFA21_transitionS = {
-            "\11\63\2\62\2\63\1\62\22\63\1\62\1\11\1\60\1\50\1\57\1\10\1\3\1\61\1\44\1\45\1\6\1\4\1\46\1\5\1\14\1\7\1\54\11\55\1\52\1\42\1\13\1\1\1\12\1\15\1\43\32\57\1\51\1\63\1\47\1\56\1\57\1\63\1\30\1\34\1\35\1\37\1\17\1\22\1\33\1\23\1\21\1\57\1\40\2\57\1\53\1\32\1\24\1\57\1\36\1\20\1\31\1\27\1\16\1\41\3\57\1\25\1\2\1\26\uff82\63",
-            "\1\64\1\65",
-            "\1\67",
-            "\1\71",
-            "\1\74\21\uffff\1\73",
-            "\1\100\17\uffff\1\76\1\77",
-            "\1\103\22\uffff\1\102",
-            "\1\106\4\uffff\1\107\15\uffff\1\105",
-            "\1\111",
-            "\1\113",
-            "\1\115",
-            "\1\117",
-            "\1\121",
-            "\1\124\13\uffff\1\123",
-            "\1\126\3\uffff\1\127\3\uffff\1\130",
-            "\1\133\13\uffff\1\132",
+            "\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",
+            "\1\66",
+            "\1\70",
+            "\1\73\21\uffff\1\72",
+            "\1\77\17\uffff\1\75\1\76",
+            "\1\102\22\uffff\1\101",
+            "\1\105\4\uffff\1\106\15\uffff\1\104",
+            "\1\110",
+            "\1\112",
+            "\1\114",
+            "\1\116",
+            "\1\120",
+            "\1\123\13\uffff\1\122",
+            "\1\125\3\uffff\1\126\3\uffff\1\127",
+            "\1\132\7\uffff\1\133\13\uffff\1\131",
             "\1\136\3\uffff\1\137\12\uffff\1\140\3\uffff\1\134\1\135\1\uffff\1\141\1\uffff\1\142",
             "\1\144\2\uffff\1\146\6\uffff\1\143\1\145\4\uffff\1\147",
             "\1\150\7\uffff\1\151\5\uffff\1\152",
@@ -4215,15 +4273,15 @@
             "",
             "\1\161",
             "\1\162\17\uffff\1\163",
-            "\1\165\6\uffff\1\167\6\uffff\1\164\2\uffff\1\170\6\uffff\1\166",
+            "\1\167\1\165\5\uffff\1\164\2\uffff\1\170\6\uffff\1\166",
             "\1\172\13\uffff\1\171",
             "\1\173",
-            "\1\174",
-            "\1\176\6\uffff\1\175",
-            "\1\177",
-            "\1\u0082\3\uffff\1\u0081\3\uffff\1\u0080\5\uffff\1\u0083",
-            "\1\u0084",
-            "\1\u0085\2\uffff\1\u0086",
+            "\1\175\6\uffff\1\174",
+            "\1\u0080\3\uffff\1\177\3\uffff\1\176\5\uffff\1\u0081",
+            "\1\u0082",
+            "\1\u0083",
+            "\1\u0084\2\uffff\1\u0085",
+            "\1\u0086\3\uffff\1\u0087\15\uffff\1\u0089\1\uffff\1\u0088",
             "",
             "",
             "",
@@ -4232,11 +4290,10 @@
             "",
             "",
             "",
-            "\1\u008f",
-            "\1\u0091\15\uffff\1\u0093\1\uffff\1\u0092",
+            "\1\u0092",
             "\12\u0095\10\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097\13\uffff\1\u0094\6\uffff\1\u0095\2\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097\13\uffff\1\u0094",
             "\12\u0095\10\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097\22\uffff\1\u0095\2\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097",
-            "\1\131\34\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\130\34\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "",
             "",
             "",
@@ -4285,59 +4342,60 @@
             "\1\u00a6",
             "\1\u00a7",
             "\1\u00a8",
-            "\1\u00aa\12\uffff\1\u00a9",
-            "\1\u00ab",
+            "\1\u00a9",
+            "\1\u00ab\12\uffff\1\u00aa",
             "\1\u00ac",
             "\1\u00ad",
             "\1\u00ae",
             "\1\u00af",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\22\131\1\u00b0\7\131",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u00b3",
+            "\1\u00b0",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\22\130\1\u00b1\7\130",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u00b4",
-            "\1\u00b5\1\uffff\1\u00b6",
-            "\1\u00b7",
+            "\1\u00b5",
+            "\1\u00b6\1\uffff\1\u00b7",
             "\1\u00b8",
-            "\1\u00b9\16\uffff\1\u00ba",
-            "\1\u00bb",
+            "\1\u00b9",
+            "\1\u00ba\16\uffff\1\u00bb",
             "\1\u00bc",
-            "",
-            "",
             "\1\u00bd",
+            "",
+            "",
             "\1\u00be",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u00c0\1\u00c1",
-            "\1\u00c2",
+            "\1\u00bf",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u00c1\1\u00c2",
             "\1\u00c3",
             "\1\u00c4",
-            "\1\u00c6\3\uffff\1\u00c5",
-            "\1\u00c8\1\uffff\1\u00c7",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u00ca",
-            "\1\u00cb",
-            "\1\u00cc",
-            "\1\u00cd\1\u00ce\1\u00cf",
-            "\1\u00d0\3\uffff\1\u00d1",
+            "\1\u00c5",
+            "\1\u00c7\3\uffff\1\u00c6",
+            "\1\u00c9\1\uffff\1\u00c8",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u00cb\16\uffff\1\u00cc\3\uffff\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf\1\u00d0\1\u00d1",
             "\1\u00d2",
             "\1\u00d4\11\uffff\1\u00d3\2\uffff\1\u00d5",
             "\1\u00d6",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u00d8",
             "\1\u00d9",
             "\1\u00da",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
             "\1\u00db",
             "\1\u00dc",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "",
             "\12\u0095\10\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097\22\uffff\1\u0095\2\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097",
             "",
@@ -4350,10 +4408,8 @@
             "",
             "",
             "",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u00e0",
-            "\1\u00e1",
+            "\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\u00e2",
             "\1\u00e3",
             "\1\u00e4",
@@ -4367,34 +4423,34 @@
             "\1\u00ec",
             "\1\u00ed",
             "\1\u00ee",
-            "",
-            "",
             "\1\u00ef",
             "\1\u00f0",
             "\1\u00f1",
+            "",
+            "",
             "\1\u00f2",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u00f3",
             "\1\u00f4",
             "\1\u00f5",
-            "\1\u00f6",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u00f7",
             "\1\u00f8",
             "\1\u00f9",
             "\1\u00fa",
-            "",
             "\1\u00fb",
             "\1\u00fc",
             "\1\u00fd",
+            "",
             "\1\u00fe",
             "\1\u00ff",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0100",
             "\1\u0101",
             "\1\u0102",
-            "\1\u0103",
-            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u0104",
             "\1\u0105",
             "\1\u0106",
+            "",
             "\1\u0107",
             "\1\u0108",
             "\1\u0109",
@@ -4405,24 +4461,24 @@
             "\1\u010e",
             "\1\u010f",
             "\1\u0110",
-            "",
             "\1\u0111",
             "\1\u0112",
+            "",
             "\1\u0113",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0114",
             "\1\u0115",
-            "",
-            "",
-            "",
             "\1\u0116",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u0118",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0117",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0119",
+            "",
+            "",
+            "",
             "\1\u011a",
-            "\1\u011b",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u011c",
             "\1\u011d",
-            "\1\u011e",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u011f",
             "\1\u0120",
             "\1\u0121",
@@ -4433,273 +4489,299 @@
             "\1\u0126",
             "\1\u0127",
             "\1\u0128",
-            "",
             "\1\u0129",
             "\1\u012a",
-            "\1\131\13\uffff\12\131\7\uffff\22\131\1\u012b\7\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u012b",
+            "\1\u012c",
             "\1\u012d",
+            "",
             "\1\u012e",
             "\1\u012f",
-            "\1\u0130",
-            "\1\u0131",
+            "\1\130\13\uffff\12\130\7\uffff\22\130\1\u0130\7\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u0132",
             "\1\u0133",
             "\1\u0134",
             "\1\u0135",
-            "",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0136",
             "\1\u0137",
             "\1\u0138",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u013b",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0139",
+            "\1\u013a",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u013c",
+            "\1\u013d",
             "\1\u013e",
             "\1\u013f",
             "\1\u0140",
             "\1\u0141",
-            "\1\u0142",
-            "\1\u0143",
+            "\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\u0144",
             "\1\u0145",
             "\1\u0146",
             "\1\u0147",
             "\1\u0148",
-            "",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u014a",
-            "",
-            "\1\u014b\16\uffff\1\u014c",
-            "",
+            "\1\u0149",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u014b",
+            "\1\u014c",
             "\1\u014d",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u014f",
+            "\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\u0150",
-            "\1\u0151",
-            "\1\u0152",
+            "",
+            "\1\u0151\16\uffff\1\u0152",
             "\1\u0153",
+            "",
             "\1\u0154",
-            "\1\u0155",
+            "\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\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0159",
             "\1\u015a",
             "\1\u015b",
             "\1\u015c",
             "\1\u015d",
             "\1\u015e",
-            "",
             "\1\u015f",
-            "\1\u0160",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u0161",
             "\1\u0162",
             "\1\u0163",
             "\1\u0164",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u0166",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0165",
             "",
+            "\1\u0166",
+            "\1\u0167",
             "\1\u0168",
             "\1\u0169",
-            "",
-            "",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "",
-            "",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u016c",
+            "\1\u016a",
+            "\1\u016b",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u016d",
-            "\1\u016e",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
+            "\1\u016f",
             "\1\u0170",
             "\1\u0171",
             "\1\u0172",
             "\1\u0173",
-            "\1\u0174",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\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\u0176",
-            "\1\u0177",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u0178",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "",
+            "\1\u0179",
             "\1\u017a",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\4\131\1\u017b\25\131",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u017e",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u0180",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u0182",
-            "\1\u0183",
-            "\1\u0184",
             "",
-            "\1\u0185",
-            "\1\u0186",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
+            "",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\u0180",
+            "\1\u0181",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
+            "\1\u0183",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\4\130\1\u0184\25\130",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u0187",
-            "\1\u0188",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u0189",
-            "\1\u018a",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u018b",
             "\1\u018c",
             "\1\u018d",
+            "",
             "\1\u018e",
             "\1\u018f",
-            "",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "",
+            "\1\u0190",
             "\1\u0191",
             "\1\u0192",
-            "",
-            "",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "",
+            "\1\u0193",
+            "\1\u0194",
+            "\1\u0195",
             "\1\u0196",
             "\1\u0197",
             "\1\u0198",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
             "\1\u019a",
-            "",
             "\1\u019b",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u019d",
+            "\1\u019c",
+            "\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\u019e",
-            "\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\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u01a3",
+            "\1\u01a2",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01a4",
+            "",
             "\1\u01a5",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01a7",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01a8",
+            "",
             "\1\u01a9",
             "\1\u01aa",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "",
+            "\1\u01ab",
+            "",
             "\1\u01ac",
-            "\1\u01ad",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u01ae",
             "\1\u01af",
-            "",
             "\1\u01b0",
-            "\1\u01b1",
-            "",
-            "",
-            "",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u01b3",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u01b2",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01b4",
-            "",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "",
+            "\1\u01b5",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01b7",
             "\1\u01b8",
-            "\1\u01b9",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01ba",
-            "\1\u01bb",
             "",
+            "\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\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\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\u01c3",
-            "",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01c4",
             "\1\u01c5",
             "\1\u01c6",
-            "",
             "\1\u01c7",
             "\1\u01c8",
             "",
-            "",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01c9",
             "\1\u01ca",
             "\1\u01cb",
+            "",
             "\1\u01cc",
+            "",
             "\1\u01cd",
             "\1\u01ce",
-            "\1\u01cf",
-            "\1\u01d0",
-            "\1\u01d1",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\u01d3",
             "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u01d0",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u01d2",
+            "\1\u01d3",
             "\1\u01d4",
             "",
             "\1\u01d5",
             "\1\u01d6",
-            "\1\u01d7",
-            "\1\u01d8",
             "",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u01d8",
             "\1\u01d9",
             "\1\u01da",
             "\1\u01db",
             "\1\u01dc",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01dd",
+            "\1\u01de",
             "\1\u01df",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "",
-            "\1\u01e1",
+            "\1\u01e0",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01e2",
+            "",
             "\1\u01e3",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u01e4",
             "\1\u01e5",
             "\1\u01e6",
             "\1\u01e7",
             "\1\u01e8",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u01e9",
             "\1\u01ea",
-            "",
-            "",
             "\1\u01eb",
-            "",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01ec",
             "\1\u01ed",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\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\u01f0",
-            "\1\u01f1",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
             "\1\u01f2",
-            "",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01f3",
             "\1\u01f4",
-            "",
-            "\1\u01f5",
-            "",
-            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01f6",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01f7",
             "\1\u01f8",
-            "",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01f9",
+            "\1\u01fa",
             "\1\u01fb",
-            "",
-            "\1\u01fc",
-            "",
-            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01fd",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
-            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "",
+            "\1\u01fe",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0200",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
+            "\1\u0202",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0204",
+            "\1\u0205",
+            "\1\u0206",
+            "\1\u0207",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0209",
+            "",
+            "\1\u020a",
+            "",
+            "\1\u020b",
+            "",
+            "\1\u020c",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u020f",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0213",
+            "",
+            "",
+            "\1\u0214",
+            "",
+            "",
+            "",
+            "\1\u0215",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "",
             ""
     };
@@ -4734,7 +4816,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 | 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 | 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;
@@ -4796,19 +4878,19 @@
 
                         else if ( (LA21_0=='o') ) {s = 26;}
 
-                        else if ( (LA21_0=='g') ) {s = 27;}
+                        else if ( (LA21_0=='r') ) {s = 27;}
 
-                        else if ( (LA21_0=='b') ) {s = 28;}
+                        else if ( (LA21_0=='c') ) {s = 28;}
 
-                        else if ( (LA21_0=='c') ) {s = 29;}
+                        else if ( (LA21_0=='d') ) {s = 29;}
 
-                        else if ( (LA21_0=='r') ) {s = 30;}
+                        else if ( (LA21_0=='b') ) {s = 30;}
 
-                        else if ( (LA21_0=='d') ) {s = 31;}
+                        else if ( (LA21_0=='k') ) {s = 31;}
 
-                        else if ( (LA21_0=='k') ) {s = 32;}
+                        else if ( (LA21_0=='w') ) {s = 32;}
 
-                        else if ( (LA21_0=='w') ) {s = 33;}
+                        else if ( (LA21_0=='n') ) {s = 33;}
 
                         else if ( (LA21_0==';') ) {s = 34;}
 
@@ -4828,23 +4910,21 @@
 
                         else if ( (LA21_0==':') ) {s = 42;}
 
-                        else if ( (LA21_0=='n') ) {s = 43;}
+                        else if ( (LA21_0=='0') ) {s = 43;}
 
-                        else if ( (LA21_0=='0') ) {s = 44;}
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 44;}
 
-                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 45;}
+                        else if ( (LA21_0=='^') ) {s = 45;}
 
-                        else if ( (LA21_0=='^') ) {s = 46;}
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='g'||LA21_0=='j'||(LA21_0>='l' && LA21_0<='m')||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 46;}
 
-                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='j'||(LA21_0>='l' && LA21_0<='m')||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 47;}
+                        else if ( (LA21_0=='\"') ) {s = 47;}
 
-                        else if ( (LA21_0=='\"') ) {s = 48;}
+                        else if ( (LA21_0=='\'') ) {s = 48;}
 
-                        else if ( (LA21_0=='\'') ) {s = 49;}
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 49;}
 
-                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 50;}
-
-                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 51;}
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 50;}
 
                         if ( s>=0 ) return s;
                         break;
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 5c2246d..fe88b45 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
@@ -25,9 +25,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -38,7 +40,7 @@
 @SuppressWarnings("all")
 public class InternalPerspectiveDslParser extends AbstractInternalContentAssistParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'horizontal'", "'vertical'", "'package'", "'{'", "'}'", "'perspective'", "'process'", "'usertask'", "'iconURI'", "'accessibility'", "'toolbar'", "'sashContainer'", "'orientation'", "'selectedElement'", "'spaceVolume'", "'partStack'", "'part'", "'view'", "'select'", "'table'", "'grid'", "'bean'", "'chart'", "'report'", "'organigram'", "'topology'", "'dialog'", "'kanban'", "'of'", "'card'", "'welcome'", "'search'", "'in'", "'depth'", "'filterColumns'", "'dataInterchange'", "';'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'describedBy'", "'isClosable'", "'ns'", "'::'", "'?.'", "'|'", "'var'", "'true'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'horizontal'", "'vertical'", "'package'", "'{'", "'}'", "'perspective'", "'process'", "'usertask'", "'iconURI'", "'accessibility'", "'toolbar'", "'sashContainer'", "'orientation'", "'selectedElement'", "'spaceVolume'", "'partStack'", "'part'", "'view'", "'select'", "'readOnlyTable'", "'editableTable'", "'chart'", "'report'", "'organigram'", "'topology'", "'dialog'", "'bpmn'", "'kanban'", "'of'", "'card'", "'welcome'", "'search'", "'in'", "'depth'", "'filterColumns'", "'dataInterchange'", "'title'", "'name'", "';'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'describedBy'", "'isClosable'", "'ns'", "'::'", "'?.'", "'|'", "'var'", "'true'"
     };
     public static final int RULE_HEX=6;
     public static final int T__50=50;
@@ -61,7 +63,9 @@
     public static final int T__68=68;
     public static final int T__69=69;
     public static final int T__62=62;
+    public static final int T__126=126;
     public static final int T__63=63;
+    public static final int T__125=125;
     public static final int T__64=64;
     public static final int T__65=65;
     public static final int T__37=37;
@@ -1133,97 +1137,12 @@
     // $ANTLR end "rulePerspectiveGrid"
 
 
-    // $ANTLR start "entryRulePerspectiveBean"
-    // InternalPerspectiveDsl.g:342:1: entryRulePerspectiveBean : rulePerspectiveBean EOF ;
-    public final void entryRulePerspectiveBean() throws RecognitionException {
-        try {
-            // InternalPerspectiveDsl.g:343:1: ( rulePerspectiveBean EOF )
-            // InternalPerspectiveDsl.g:344:1: rulePerspectiveBean EOF
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectiveBeanRule()); 
-            }
-            pushFollow(FOLLOW_1);
-            rulePerspectiveBean();
-
-            state._fsp--;
-            if (state.failed) return ;
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectiveBeanRule()); 
-            }
-            match(input,EOF,FOLLOW_2); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end "entryRulePerspectiveBean"
-
-
-    // $ANTLR start "rulePerspectiveBean"
-    // InternalPerspectiveDsl.g:351:1: rulePerspectiveBean : ( ( rule__PerspectiveBean__Group__0 ) ) ;
-    public final void rulePerspectiveBean() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalPerspectiveDsl.g:355:2: ( ( ( rule__PerspectiveBean__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:356:2: ( ( rule__PerspectiveBean__Group__0 ) )
-            {
-            // InternalPerspectiveDsl.g:356:2: ( ( rule__PerspectiveBean__Group__0 ) )
-            // InternalPerspectiveDsl.g:357:3: ( rule__PerspectiveBean__Group__0 )
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectiveBeanAccess().getGroup()); 
-            }
-            // InternalPerspectiveDsl.g:358:3: ( rule__PerspectiveBean__Group__0 )
-            // InternalPerspectiveDsl.g:358:4: rule__PerspectiveBean__Group__0
-            {
-            pushFollow(FOLLOW_2);
-            rule__PerspectiveBean__Group__0();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectiveBeanAccess().getGroup()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rulePerspectiveBean"
-
-
     // $ANTLR start "entryRulePerspectiveChart"
-    // InternalPerspectiveDsl.g:367:1: entryRulePerspectiveChart : rulePerspectiveChart EOF ;
+    // InternalPerspectiveDsl.g:342:1: entryRulePerspectiveChart : rulePerspectiveChart EOF ;
     public final void entryRulePerspectiveChart() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:368:1: ( rulePerspectiveChart EOF )
-            // InternalPerspectiveDsl.g:369:1: rulePerspectiveChart EOF
+            // InternalPerspectiveDsl.g:343:1: ( rulePerspectiveChart EOF )
+            // InternalPerspectiveDsl.g:344:1: rulePerspectiveChart EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveChartRule()); 
@@ -1253,23 +1172,23 @@
 
 
     // $ANTLR start "rulePerspectiveChart"
-    // InternalPerspectiveDsl.g:376:1: rulePerspectiveChart : ( ( rule__PerspectiveChart__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:351:1: rulePerspectiveChart : ( ( rule__PerspectiveChart__Group__0 ) ) ;
     public final void rulePerspectiveChart() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:380:2: ( ( ( rule__PerspectiveChart__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:381:2: ( ( rule__PerspectiveChart__Group__0 ) )
+            // InternalPerspectiveDsl.g:355:2: ( ( ( rule__PerspectiveChart__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:356:2: ( ( rule__PerspectiveChart__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:381:2: ( ( rule__PerspectiveChart__Group__0 ) )
-            // InternalPerspectiveDsl.g:382:3: ( rule__PerspectiveChart__Group__0 )
+            // InternalPerspectiveDsl.g:356:2: ( ( rule__PerspectiveChart__Group__0 ) )
+            // InternalPerspectiveDsl.g:357:3: ( rule__PerspectiveChart__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveChartAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:383:3: ( rule__PerspectiveChart__Group__0 )
-            // InternalPerspectiveDsl.g:383:4: rule__PerspectiveChart__Group__0
+            // InternalPerspectiveDsl.g:358:3: ( rule__PerspectiveChart__Group__0 )
+            // InternalPerspectiveDsl.g:358:4: rule__PerspectiveChart__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveChart__Group__0();
@@ -1304,11 +1223,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveReport"
-    // InternalPerspectiveDsl.g:392:1: entryRulePerspectiveReport : rulePerspectiveReport EOF ;
+    // InternalPerspectiveDsl.g:367:1: entryRulePerspectiveReport : rulePerspectiveReport EOF ;
     public final void entryRulePerspectiveReport() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:393:1: ( rulePerspectiveReport EOF )
-            // InternalPerspectiveDsl.g:394:1: rulePerspectiveReport EOF
+            // InternalPerspectiveDsl.g:368:1: ( rulePerspectiveReport EOF )
+            // InternalPerspectiveDsl.g:369:1: rulePerspectiveReport EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveReportRule()); 
@@ -1338,23 +1257,23 @@
 
 
     // $ANTLR start "rulePerspectiveReport"
-    // InternalPerspectiveDsl.g:401:1: rulePerspectiveReport : ( ( rule__PerspectiveReport__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:376:1: rulePerspectiveReport : ( ( rule__PerspectiveReport__Group__0 ) ) ;
     public final void rulePerspectiveReport() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:405:2: ( ( ( rule__PerspectiveReport__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:406:2: ( ( rule__PerspectiveReport__Group__0 ) )
+            // InternalPerspectiveDsl.g:380:2: ( ( ( rule__PerspectiveReport__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:381:2: ( ( rule__PerspectiveReport__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:406:2: ( ( rule__PerspectiveReport__Group__0 ) )
-            // InternalPerspectiveDsl.g:407:3: ( rule__PerspectiveReport__Group__0 )
+            // InternalPerspectiveDsl.g:381:2: ( ( rule__PerspectiveReport__Group__0 ) )
+            // InternalPerspectiveDsl.g:382:3: ( rule__PerspectiveReport__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveReportAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:408:3: ( rule__PerspectiveReport__Group__0 )
-            // InternalPerspectiveDsl.g:408:4: rule__PerspectiveReport__Group__0
+            // InternalPerspectiveDsl.g:383:3: ( rule__PerspectiveReport__Group__0 )
+            // InternalPerspectiveDsl.g:383:4: rule__PerspectiveReport__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveReport__Group__0();
@@ -1389,11 +1308,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveOrganization"
-    // InternalPerspectiveDsl.g:417:1: entryRulePerspectiveOrganization : rulePerspectiveOrganization EOF ;
+    // InternalPerspectiveDsl.g:392:1: entryRulePerspectiveOrganization : rulePerspectiveOrganization EOF ;
     public final void entryRulePerspectiveOrganization() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:418:1: ( rulePerspectiveOrganization EOF )
-            // InternalPerspectiveDsl.g:419:1: rulePerspectiveOrganization EOF
+            // InternalPerspectiveDsl.g:393:1: ( rulePerspectiveOrganization EOF )
+            // InternalPerspectiveDsl.g:394:1: rulePerspectiveOrganization EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveOrganizationRule()); 
@@ -1423,23 +1342,23 @@
 
 
     // $ANTLR start "rulePerspectiveOrganization"
-    // InternalPerspectiveDsl.g:426:1: rulePerspectiveOrganization : ( ( rule__PerspectiveOrganization__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:401:1: rulePerspectiveOrganization : ( ( rule__PerspectiveOrganization__Group__0 ) ) ;
     public final void rulePerspectiveOrganization() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:430:2: ( ( ( rule__PerspectiveOrganization__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:431:2: ( ( rule__PerspectiveOrganization__Group__0 ) )
+            // InternalPerspectiveDsl.g:405:2: ( ( ( rule__PerspectiveOrganization__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:406:2: ( ( rule__PerspectiveOrganization__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:431:2: ( ( rule__PerspectiveOrganization__Group__0 ) )
-            // InternalPerspectiveDsl.g:432:3: ( rule__PerspectiveOrganization__Group__0 )
+            // InternalPerspectiveDsl.g:406:2: ( ( rule__PerspectiveOrganization__Group__0 ) )
+            // InternalPerspectiveDsl.g:407:3: ( rule__PerspectiveOrganization__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveOrganizationAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:433:3: ( rule__PerspectiveOrganization__Group__0 )
-            // InternalPerspectiveDsl.g:433:4: rule__PerspectiveOrganization__Group__0
+            // InternalPerspectiveDsl.g:408:3: ( rule__PerspectiveOrganization__Group__0 )
+            // InternalPerspectiveDsl.g:408:4: rule__PerspectiveOrganization__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveOrganization__Group__0();
@@ -1474,11 +1393,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveTopology"
-    // InternalPerspectiveDsl.g:442:1: entryRulePerspectiveTopology : rulePerspectiveTopology EOF ;
+    // InternalPerspectiveDsl.g:417:1: entryRulePerspectiveTopology : rulePerspectiveTopology EOF ;
     public final void entryRulePerspectiveTopology() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:443:1: ( rulePerspectiveTopology EOF )
-            // InternalPerspectiveDsl.g:444:1: rulePerspectiveTopology EOF
+            // InternalPerspectiveDsl.g:418:1: ( rulePerspectiveTopology EOF )
+            // InternalPerspectiveDsl.g:419:1: rulePerspectiveTopology EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTopologyRule()); 
@@ -1508,23 +1427,23 @@
 
 
     // $ANTLR start "rulePerspectiveTopology"
-    // InternalPerspectiveDsl.g:451:1: rulePerspectiveTopology : ( ( rule__PerspectiveTopology__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:426:1: rulePerspectiveTopology : ( ( rule__PerspectiveTopology__Group__0 ) ) ;
     public final void rulePerspectiveTopology() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:455:2: ( ( ( rule__PerspectiveTopology__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:456:2: ( ( rule__PerspectiveTopology__Group__0 ) )
+            // InternalPerspectiveDsl.g:430:2: ( ( ( rule__PerspectiveTopology__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:431:2: ( ( rule__PerspectiveTopology__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:456:2: ( ( rule__PerspectiveTopology__Group__0 ) )
-            // InternalPerspectiveDsl.g:457:3: ( rule__PerspectiveTopology__Group__0 )
+            // InternalPerspectiveDsl.g:431:2: ( ( rule__PerspectiveTopology__Group__0 ) )
+            // InternalPerspectiveDsl.g:432:3: ( rule__PerspectiveTopology__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTopologyAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:458:3: ( rule__PerspectiveTopology__Group__0 )
-            // InternalPerspectiveDsl.g:458:4: rule__PerspectiveTopology__Group__0
+            // InternalPerspectiveDsl.g:433:3: ( rule__PerspectiveTopology__Group__0 )
+            // InternalPerspectiveDsl.g:433:4: rule__PerspectiveTopology__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveTopology__Group__0();
@@ -1559,11 +1478,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveDialog"
-    // InternalPerspectiveDsl.g:467:1: entryRulePerspectiveDialog : rulePerspectiveDialog EOF ;
+    // InternalPerspectiveDsl.g:442:1: entryRulePerspectiveDialog : rulePerspectiveDialog EOF ;
     public final void entryRulePerspectiveDialog() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:468:1: ( rulePerspectiveDialog EOF )
-            // InternalPerspectiveDsl.g:469:1: rulePerspectiveDialog EOF
+            // InternalPerspectiveDsl.g:443:1: ( rulePerspectiveDialog EOF )
+            // InternalPerspectiveDsl.g:444:1: rulePerspectiveDialog EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDialogRule()); 
@@ -1593,23 +1512,23 @@
 
 
     // $ANTLR start "rulePerspectiveDialog"
-    // InternalPerspectiveDsl.g:476:1: rulePerspectiveDialog : ( ( rule__PerspectiveDialog__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:451:1: rulePerspectiveDialog : ( ( rule__PerspectiveDialog__Group__0 ) ) ;
     public final void rulePerspectiveDialog() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:480:2: ( ( ( rule__PerspectiveDialog__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:481:2: ( ( rule__PerspectiveDialog__Group__0 ) )
+            // InternalPerspectiveDsl.g:455:2: ( ( ( rule__PerspectiveDialog__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:456:2: ( ( rule__PerspectiveDialog__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:481:2: ( ( rule__PerspectiveDialog__Group__0 ) )
-            // InternalPerspectiveDsl.g:482:3: ( rule__PerspectiveDialog__Group__0 )
+            // InternalPerspectiveDsl.g:456:2: ( ( rule__PerspectiveDialog__Group__0 ) )
+            // InternalPerspectiveDsl.g:457:3: ( rule__PerspectiveDialog__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDialogAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:483:3: ( rule__PerspectiveDialog__Group__0 )
-            // InternalPerspectiveDsl.g:483:4: rule__PerspectiveDialog__Group__0
+            // InternalPerspectiveDsl.g:458:3: ( rule__PerspectiveDialog__Group__0 )
+            // InternalPerspectiveDsl.g:458:4: rule__PerspectiveDialog__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveDialog__Group__0();
@@ -1643,6 +1562,91 @@
     // $ANTLR end "rulePerspectiveDialog"
 
 
+    // $ANTLR start "entryRulePerspectiveBPMN"
+    // InternalPerspectiveDsl.g:467:1: entryRulePerspectiveBPMN : rulePerspectiveBPMN EOF ;
+    public final void entryRulePerspectiveBPMN() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:468:1: ( rulePerspectiveBPMN EOF )
+            // InternalPerspectiveDsl.g:469:1: rulePerspectiveBPMN EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBPMNRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveBPMN();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBPMNRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveBPMN"
+
+
+    // $ANTLR start "rulePerspectiveBPMN"
+    // InternalPerspectiveDsl.g:476:1: rulePerspectiveBPMN : ( ( rule__PerspectiveBPMN__Group__0 ) ) ;
+    public final void rulePerspectiveBPMN() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:480:2: ( ( ( rule__PerspectiveBPMN__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:481:2: ( ( rule__PerspectiveBPMN__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:481:2: ( ( rule__PerspectiveBPMN__Group__0 ) )
+            // InternalPerspectiveDsl.g:482:3: ( rule__PerspectiveBPMN__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBPMNAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:483:3: ( rule__PerspectiveBPMN__Group__0 )
+            // InternalPerspectiveDsl.g:483:4: rule__PerspectiveBPMN__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveBPMN__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBPMNAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveBPMN"
+
+
     // $ANTLR start "entryRulePerspectiveKanban"
     // InternalPerspectiveDsl.g:492:1: entryRulePerspectiveKanban : rulePerspectiveKanban EOF ;
     public final void entryRulePerspectiveKanban() throws RecognitionException {
@@ -1983,12 +1987,182 @@
     // $ANTLR end "rulePerspectiveDataInterchange"
 
 
+    // $ANTLR start "entryRulePerspectiveTitle"
+    // InternalPerspectiveDsl.g:592:1: entryRulePerspectiveTitle : rulePerspectiveTitle EOF ;
+    public final void entryRulePerspectiveTitle() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:593:1: ( rulePerspectiveTitle EOF )
+            // InternalPerspectiveDsl.g:594:1: rulePerspectiveTitle EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTitleRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveTitle();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTitleRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveTitle"
+
+
+    // $ANTLR start "rulePerspectiveTitle"
+    // InternalPerspectiveDsl.g:601:1: rulePerspectiveTitle : ( ( rule__PerspectiveTitle__Group__0 ) ) ;
+    public final void rulePerspectiveTitle() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:605:2: ( ( ( rule__PerspectiveTitle__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:606:2: ( ( rule__PerspectiveTitle__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:606:2: ( ( rule__PerspectiveTitle__Group__0 ) )
+            // InternalPerspectiveDsl.g:607:3: ( rule__PerspectiveTitle__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTitleAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:608:3: ( rule__PerspectiveTitle__Group__0 )
+            // InternalPerspectiveDsl.g:608:4: rule__PerspectiveTitle__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveTitle__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTitleAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveTitle"
+
+
+    // $ANTLR start "entryRulePerspectiveDashboard"
+    // InternalPerspectiveDsl.g:617:1: entryRulePerspectiveDashboard : rulePerspectiveDashboard EOF ;
+    public final void entryRulePerspectiveDashboard() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:618:1: ( rulePerspectiveDashboard EOF )
+            // InternalPerspectiveDsl.g:619:1: rulePerspectiveDashboard EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDashboardRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveDashboard();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDashboardRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveDashboard"
+
+
+    // $ANTLR start "rulePerspectiveDashboard"
+    // InternalPerspectiveDsl.g:626:1: rulePerspectiveDashboard : ( ( rule__PerspectiveDashboard__Group__0 ) ) ;
+    public final void rulePerspectiveDashboard() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:630:2: ( ( ( rule__PerspectiveDashboard__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:631:2: ( ( rule__PerspectiveDashboard__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:631:2: ( ( rule__PerspectiveDashboard__Group__0 ) )
+            // InternalPerspectiveDsl.g:632:3: ( rule__PerspectiveDashboard__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDashboardAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:633:3: ( rule__PerspectiveDashboard__Group__0 )
+            // InternalPerspectiveDsl.g:633:4: rule__PerspectiveDashboard__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveDashboard__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDashboardAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveDashboard"
+
+
     // $ANTLR start "entryRuleTRANSLATABLEID"
-    // InternalPerspectiveDsl.g:592:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
+    // InternalPerspectiveDsl.g:642:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
     public final void entryRuleTRANSLATABLEID() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:593:1: ( ruleTRANSLATABLEID EOF )
-            // InternalPerspectiveDsl.g:594:1: ruleTRANSLATABLEID EOF
+            // InternalPerspectiveDsl.g:643:1: ( ruleTRANSLATABLEID EOF )
+            // InternalPerspectiveDsl.g:644:1: ruleTRANSLATABLEID EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLEIDRule()); 
@@ -2018,17 +2192,17 @@
 
 
     // $ANTLR start "ruleTRANSLATABLEID"
-    // InternalPerspectiveDsl.g:601:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
+    // InternalPerspectiveDsl.g:651:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
     public final void ruleTRANSLATABLEID() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:605:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:606:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:655:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:656:2: ( RULE_ID )
             {
-            // InternalPerspectiveDsl.g:606:2: ( RULE_ID )
-            // InternalPerspectiveDsl.g:607:3: RULE_ID
+            // InternalPerspectiveDsl.g:656:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:657:3: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
@@ -2059,11 +2233,11 @@
 
 
     // $ANTLR start "entryRuleTRANSLATABLESTRING"
-    // InternalPerspectiveDsl.g:617:1: entryRuleTRANSLATABLESTRING : ruleTRANSLATABLESTRING EOF ;
+    // InternalPerspectiveDsl.g:667:1: entryRuleTRANSLATABLESTRING : ruleTRANSLATABLESTRING EOF ;
     public final void entryRuleTRANSLATABLESTRING() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:618:1: ( ruleTRANSLATABLESTRING EOF )
-            // InternalPerspectiveDsl.g:619:1: ruleTRANSLATABLESTRING EOF
+            // InternalPerspectiveDsl.g:668:1: ( ruleTRANSLATABLESTRING EOF )
+            // InternalPerspectiveDsl.g:669:1: ruleTRANSLATABLESTRING EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLESTRINGRule()); 
@@ -2093,17 +2267,17 @@
 
 
     // $ANTLR start "ruleTRANSLATABLESTRING"
-    // InternalPerspectiveDsl.g:626:1: ruleTRANSLATABLESTRING : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:676:1: ruleTRANSLATABLESTRING : ( RULE_STRING ) ;
     public final void ruleTRANSLATABLESTRING() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:630:2: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:631:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:680:2: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:681:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:631:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:632:3: RULE_STRING
+            // InternalPerspectiveDsl.g:681:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:682:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
@@ -2134,11 +2308,11 @@
 
 
     // $ANTLR start "entryRuleXImportDeclaration"
-    // InternalPerspectiveDsl.g:642:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
+    // InternalPerspectiveDsl.g:692:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
     public final void entryRuleXImportDeclaration() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:643:1: ( ruleXImportDeclaration EOF )
-            // InternalPerspectiveDsl.g:644:1: ruleXImportDeclaration EOF
+            // InternalPerspectiveDsl.g:693:1: ( ruleXImportDeclaration EOF )
+            // InternalPerspectiveDsl.g:694:1: ruleXImportDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationRule()); 
@@ -2168,23 +2342,23 @@
 
 
     // $ANTLR start "ruleXImportDeclaration"
-    // InternalPerspectiveDsl.g:651:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:701:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
     public final void ruleXImportDeclaration() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:655:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:656:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            // InternalPerspectiveDsl.g:705:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:706:2: ( ( rule__XImportDeclaration__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:656:2: ( ( rule__XImportDeclaration__Group__0 ) )
-            // InternalPerspectiveDsl.g:657:3: ( rule__XImportDeclaration__Group__0 )
+            // InternalPerspectiveDsl.g:706:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            // InternalPerspectiveDsl.g:707:3: ( rule__XImportDeclaration__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:658:3: ( rule__XImportDeclaration__Group__0 )
-            // InternalPerspectiveDsl.g:658:4: rule__XImportDeclaration__Group__0
+            // InternalPerspectiveDsl.g:708:3: ( rule__XImportDeclaration__Group__0 )
+            // InternalPerspectiveDsl.g:708:4: rule__XImportDeclaration__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group__0();
@@ -2219,11 +2393,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotation"
-    // InternalPerspectiveDsl.g:667:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
+    // InternalPerspectiveDsl.g:717:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
     public final void entryRuleXAnnotation() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:668:1: ( ruleXAnnotation EOF )
-            // InternalPerspectiveDsl.g:669:1: ruleXAnnotation EOF
+            // InternalPerspectiveDsl.g:718:1: ( ruleXAnnotation EOF )
+            // InternalPerspectiveDsl.g:719:1: ruleXAnnotation EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationRule()); 
@@ -2253,23 +2427,23 @@
 
 
     // $ANTLR start "ruleXAnnotation"
-    // InternalPerspectiveDsl.g:676:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:726:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
     public final void ruleXAnnotation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:680:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:681:2: ( ( rule__XAnnotation__Group__0 ) )
+            // InternalPerspectiveDsl.g:730:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:731:2: ( ( rule__XAnnotation__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:681:2: ( ( rule__XAnnotation__Group__0 ) )
-            // InternalPerspectiveDsl.g:682:3: ( rule__XAnnotation__Group__0 )
+            // InternalPerspectiveDsl.g:731:2: ( ( rule__XAnnotation__Group__0 ) )
+            // InternalPerspectiveDsl.g:732:3: ( rule__XAnnotation__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:683:3: ( rule__XAnnotation__Group__0 )
-            // InternalPerspectiveDsl.g:683:4: rule__XAnnotation__Group__0
+            // InternalPerspectiveDsl.g:733:3: ( rule__XAnnotation__Group__0 )
+            // InternalPerspectiveDsl.g:733:4: rule__XAnnotation__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group__0();
@@ -2304,11 +2478,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValuePair"
-    // InternalPerspectiveDsl.g:692:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
+    // InternalPerspectiveDsl.g:742:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
     public final void entryRuleXAnnotationElementValuePair() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:693:1: ( ruleXAnnotationElementValuePair EOF )
-            // InternalPerspectiveDsl.g:694:1: ruleXAnnotationElementValuePair EOF
+            // InternalPerspectiveDsl.g:743:1: ( ruleXAnnotationElementValuePair EOF )
+            // InternalPerspectiveDsl.g:744:1: ruleXAnnotationElementValuePair EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairRule()); 
@@ -2338,23 +2512,23 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValuePair"
-    // InternalPerspectiveDsl.g:701:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:751:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
     public final void ruleXAnnotationElementValuePair() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:705:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:706:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // InternalPerspectiveDsl.g:755:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:756:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:706:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
-            // InternalPerspectiveDsl.g:707:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            // InternalPerspectiveDsl.g:756:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // InternalPerspectiveDsl.g:757:3: ( rule__XAnnotationElementValuePair__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:708:3: ( rule__XAnnotationElementValuePair__Group__0 )
-            // InternalPerspectiveDsl.g:708:4: rule__XAnnotationElementValuePair__Group__0
+            // InternalPerspectiveDsl.g:758:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            // InternalPerspectiveDsl.g:758:4: rule__XAnnotationElementValuePair__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group__0();
@@ -2389,11 +2563,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
-    // InternalPerspectiveDsl.g:717:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
+    // InternalPerspectiveDsl.g:767:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
     public final void entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:718:1: ( ruleXAnnotationElementValueOrCommaList EOF )
-            // InternalPerspectiveDsl.g:719:1: ruleXAnnotationElementValueOrCommaList EOF
+            // InternalPerspectiveDsl.g:768:1: ( ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalPerspectiveDsl.g:769:1: ruleXAnnotationElementValueOrCommaList EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
@@ -2423,23 +2597,23 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
-    // InternalPerspectiveDsl.g:726:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:776:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
     public final void ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:730:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:731:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // InternalPerspectiveDsl.g:780:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:781:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:731:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
-            // InternalPerspectiveDsl.g:732:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // InternalPerspectiveDsl.g:781:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // InternalPerspectiveDsl.g:782:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:733:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
-            // InternalPerspectiveDsl.g:733:4: rule__XAnnotationElementValueOrCommaList__Alternatives
+            // InternalPerspectiveDsl.g:783:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // InternalPerspectiveDsl.g:783:4: rule__XAnnotationElementValueOrCommaList__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Alternatives();
@@ -2474,11 +2648,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValue"
-    // InternalPerspectiveDsl.g:742:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
+    // InternalPerspectiveDsl.g:792:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
     public final void entryRuleXAnnotationElementValue() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:743:1: ( ruleXAnnotationElementValue EOF )
-            // InternalPerspectiveDsl.g:744:1: ruleXAnnotationElementValue EOF
+            // InternalPerspectiveDsl.g:793:1: ( ruleXAnnotationElementValue EOF )
+            // InternalPerspectiveDsl.g:794:1: ruleXAnnotationElementValue EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueRule()); 
@@ -2508,23 +2682,23 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValue"
-    // InternalPerspectiveDsl.g:751:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:801:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
     public final void ruleXAnnotationElementValue() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:755:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:756:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // InternalPerspectiveDsl.g:805:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:806:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:756:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
-            // InternalPerspectiveDsl.g:757:3: ( rule__XAnnotationElementValue__Alternatives )
+            // InternalPerspectiveDsl.g:806:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // InternalPerspectiveDsl.g:807:3: ( rule__XAnnotationElementValue__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:758:3: ( rule__XAnnotationElementValue__Alternatives )
-            // InternalPerspectiveDsl.g:758:4: rule__XAnnotationElementValue__Alternatives
+            // InternalPerspectiveDsl.g:808:3: ( rule__XAnnotationElementValue__Alternatives )
+            // InternalPerspectiveDsl.g:808:4: rule__XAnnotationElementValue__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Alternatives();
@@ -2559,11 +2733,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationOrExpression"
-    // InternalPerspectiveDsl.g:767:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
+    // InternalPerspectiveDsl.g:817:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
     public final void entryRuleXAnnotationOrExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:768:1: ( ruleXAnnotationOrExpression EOF )
-            // InternalPerspectiveDsl.g:769:1: ruleXAnnotationOrExpression EOF
+            // InternalPerspectiveDsl.g:818:1: ( ruleXAnnotationOrExpression EOF )
+            // InternalPerspectiveDsl.g:819:1: ruleXAnnotationOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationOrExpressionRule()); 
@@ -2593,23 +2767,23 @@
 
 
     // $ANTLR start "ruleXAnnotationOrExpression"
-    // InternalPerspectiveDsl.g:776:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:826:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
     public final void ruleXAnnotationOrExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:780:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:781:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // InternalPerspectiveDsl.g:830:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:831:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:781:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
-            // InternalPerspectiveDsl.g:782:3: ( rule__XAnnotationOrExpression__Alternatives )
+            // InternalPerspectiveDsl.g:831:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // InternalPerspectiveDsl.g:832:3: ( rule__XAnnotationOrExpression__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:783:3: ( rule__XAnnotationOrExpression__Alternatives )
-            // InternalPerspectiveDsl.g:783:4: rule__XAnnotationOrExpression__Alternatives
+            // InternalPerspectiveDsl.g:833:3: ( rule__XAnnotationOrExpression__Alternatives )
+            // InternalPerspectiveDsl.g:833:4: rule__XAnnotationOrExpression__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationOrExpression__Alternatives();
@@ -2644,11 +2818,11 @@
 
 
     // $ANTLR start "entryRuleXExpression"
-    // InternalPerspectiveDsl.g:792:1: entryRuleXExpression : ruleXExpression EOF ;
+    // InternalPerspectiveDsl.g:842:1: entryRuleXExpression : ruleXExpression EOF ;
     public final void entryRuleXExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:793:1: ( ruleXExpression EOF )
-            // InternalPerspectiveDsl.g:794:1: ruleXExpression EOF
+            // InternalPerspectiveDsl.g:843:1: ( ruleXExpression EOF )
+            // InternalPerspectiveDsl.g:844:1: ruleXExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionRule()); 
@@ -2678,17 +2852,17 @@
 
 
     // $ANTLR start "ruleXExpression"
-    // InternalPerspectiveDsl.g:801:1: ruleXExpression : ( ruleXAssignment ) ;
+    // InternalPerspectiveDsl.g:851:1: ruleXExpression : ( ruleXAssignment ) ;
     public final void ruleXExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:805:2: ( ( ruleXAssignment ) )
-            // InternalPerspectiveDsl.g:806:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:855:2: ( ( ruleXAssignment ) )
+            // InternalPerspectiveDsl.g:856:2: ( ruleXAssignment )
             {
-            // InternalPerspectiveDsl.g:806:2: ( ruleXAssignment )
-            // InternalPerspectiveDsl.g:807:3: ruleXAssignment
+            // InternalPerspectiveDsl.g:856:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:857:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
@@ -2723,11 +2897,11 @@
 
 
     // $ANTLR start "entryRuleXAssignment"
-    // InternalPerspectiveDsl.g:817:1: entryRuleXAssignment : ruleXAssignment EOF ;
+    // InternalPerspectiveDsl.g:867:1: entryRuleXAssignment : ruleXAssignment EOF ;
     public final void entryRuleXAssignment() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:818:1: ( ruleXAssignment EOF )
-            // InternalPerspectiveDsl.g:819:1: ruleXAssignment EOF
+            // InternalPerspectiveDsl.g:868:1: ( ruleXAssignment EOF )
+            // InternalPerspectiveDsl.g:869:1: ruleXAssignment EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentRule()); 
@@ -2757,23 +2931,23 @@
 
 
     // $ANTLR start "ruleXAssignment"
-    // InternalPerspectiveDsl.g:826:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:876:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
     public final void ruleXAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:830:2: ( ( ( rule__XAssignment__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:831:2: ( ( rule__XAssignment__Alternatives ) )
+            // InternalPerspectiveDsl.g:880:2: ( ( ( rule__XAssignment__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:881:2: ( ( rule__XAssignment__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:831:2: ( ( rule__XAssignment__Alternatives ) )
-            // InternalPerspectiveDsl.g:832:3: ( rule__XAssignment__Alternatives )
+            // InternalPerspectiveDsl.g:881:2: ( ( rule__XAssignment__Alternatives ) )
+            // InternalPerspectiveDsl.g:882:3: ( rule__XAssignment__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:833:3: ( rule__XAssignment__Alternatives )
-            // InternalPerspectiveDsl.g:833:4: rule__XAssignment__Alternatives
+            // InternalPerspectiveDsl.g:883:3: ( rule__XAssignment__Alternatives )
+            // InternalPerspectiveDsl.g:883:4: rule__XAssignment__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Alternatives();
@@ -2808,11 +2982,11 @@
 
 
     // $ANTLR start "entryRuleOpSingleAssign"
-    // InternalPerspectiveDsl.g:842:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
+    // InternalPerspectiveDsl.g:892:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
     public final void entryRuleOpSingleAssign() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:843:1: ( ruleOpSingleAssign EOF )
-            // InternalPerspectiveDsl.g:844:1: ruleOpSingleAssign EOF
+            // InternalPerspectiveDsl.g:893:1: ( ruleOpSingleAssign EOF )
+            // InternalPerspectiveDsl.g:894:1: ruleOpSingleAssign EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpSingleAssignRule()); 
@@ -2842,17 +3016,17 @@
 
 
     // $ANTLR start "ruleOpSingleAssign"
-    // InternalPerspectiveDsl.g:851:1: ruleOpSingleAssign : ( '=' ) ;
+    // InternalPerspectiveDsl.g:901:1: ruleOpSingleAssign : ( '=' ) ;
     public final void ruleOpSingleAssign() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:855:2: ( ( '=' ) )
-            // InternalPerspectiveDsl.g:856:2: ( '=' )
+            // InternalPerspectiveDsl.g:905:2: ( ( '=' ) )
+            // InternalPerspectiveDsl.g:906:2: ( '=' )
             {
-            // InternalPerspectiveDsl.g:856:2: ( '=' )
-            // InternalPerspectiveDsl.g:857:3: '='
+            // InternalPerspectiveDsl.g:906:2: ( '=' )
+            // InternalPerspectiveDsl.g:907:3: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
@@ -2883,11 +3057,11 @@
 
 
     // $ANTLR start "entryRuleOpMultiAssign"
-    // InternalPerspectiveDsl.g:867:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
+    // InternalPerspectiveDsl.g:917:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
     public final void entryRuleOpMultiAssign() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:868:1: ( ruleOpMultiAssign EOF )
-            // InternalPerspectiveDsl.g:869:1: ruleOpMultiAssign EOF
+            // InternalPerspectiveDsl.g:918:1: ( ruleOpMultiAssign EOF )
+            // InternalPerspectiveDsl.g:919:1: ruleOpMultiAssign EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignRule()); 
@@ -2917,23 +3091,23 @@
 
 
     // $ANTLR start "ruleOpMultiAssign"
-    // InternalPerspectiveDsl.g:876:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:926:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
     public final void ruleOpMultiAssign() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:880:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:881:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            // InternalPerspectiveDsl.g:930:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:931:2: ( ( rule__OpMultiAssign__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:881:2: ( ( rule__OpMultiAssign__Alternatives ) )
-            // InternalPerspectiveDsl.g:882:3: ( rule__OpMultiAssign__Alternatives )
+            // InternalPerspectiveDsl.g:931:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            // InternalPerspectiveDsl.g:932:3: ( rule__OpMultiAssign__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:883:3: ( rule__OpMultiAssign__Alternatives )
-            // InternalPerspectiveDsl.g:883:4: rule__OpMultiAssign__Alternatives
+            // InternalPerspectiveDsl.g:933:3: ( rule__OpMultiAssign__Alternatives )
+            // InternalPerspectiveDsl.g:933:4: rule__OpMultiAssign__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpMultiAssign__Alternatives();
@@ -2968,11 +3142,11 @@
 
 
     // $ANTLR start "entryRuleXOrExpression"
-    // InternalPerspectiveDsl.g:892:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
+    // InternalPerspectiveDsl.g:942:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
     public final void entryRuleXOrExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:893:1: ( ruleXOrExpression EOF )
-            // InternalPerspectiveDsl.g:894:1: ruleXOrExpression EOF
+            // InternalPerspectiveDsl.g:943:1: ( ruleXOrExpression EOF )
+            // InternalPerspectiveDsl.g:944:1: ruleXOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionRule()); 
@@ -3002,23 +3176,23 @@
 
 
     // $ANTLR start "ruleXOrExpression"
-    // InternalPerspectiveDsl.g:901:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:951:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
     public final void ruleXOrExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:905:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:906:2: ( ( rule__XOrExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:955:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:956:2: ( ( rule__XOrExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:906:2: ( ( rule__XOrExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:907:3: ( rule__XOrExpression__Group__0 )
+            // InternalPerspectiveDsl.g:956:2: ( ( rule__XOrExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:957:3: ( rule__XOrExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:908:3: ( rule__XOrExpression__Group__0 )
-            // InternalPerspectiveDsl.g:908:4: rule__XOrExpression__Group__0
+            // InternalPerspectiveDsl.g:958:3: ( rule__XOrExpression__Group__0 )
+            // InternalPerspectiveDsl.g:958:4: rule__XOrExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group__0();
@@ -3053,11 +3227,11 @@
 
 
     // $ANTLR start "entryRuleOpOr"
-    // InternalPerspectiveDsl.g:917:1: entryRuleOpOr : ruleOpOr EOF ;
+    // InternalPerspectiveDsl.g:967:1: entryRuleOpOr : ruleOpOr EOF ;
     public final void entryRuleOpOr() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:918:1: ( ruleOpOr EOF )
-            // InternalPerspectiveDsl.g:919:1: ruleOpOr EOF
+            // InternalPerspectiveDsl.g:968:1: ( ruleOpOr EOF )
+            // InternalPerspectiveDsl.g:969:1: ruleOpOr EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOrRule()); 
@@ -3087,17 +3261,17 @@
 
 
     // $ANTLR start "ruleOpOr"
-    // InternalPerspectiveDsl.g:926:1: ruleOpOr : ( '||' ) ;
+    // InternalPerspectiveDsl.g:976:1: ruleOpOr : ( '||' ) ;
     public final void ruleOpOr() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:930:2: ( ( '||' ) )
-            // InternalPerspectiveDsl.g:931:2: ( '||' )
+            // InternalPerspectiveDsl.g:980:2: ( ( '||' ) )
+            // InternalPerspectiveDsl.g:981:2: ( '||' )
             {
-            // InternalPerspectiveDsl.g:931:2: ( '||' )
-            // InternalPerspectiveDsl.g:932:3: '||'
+            // InternalPerspectiveDsl.g:981:2: ( '||' )
+            // InternalPerspectiveDsl.g:982:3: '||'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
@@ -3128,11 +3302,11 @@
 
 
     // $ANTLR start "entryRuleXAndExpression"
-    // InternalPerspectiveDsl.g:942:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
+    // InternalPerspectiveDsl.g:992:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
     public final void entryRuleXAndExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:943:1: ( ruleXAndExpression EOF )
-            // InternalPerspectiveDsl.g:944:1: ruleXAndExpression EOF
+            // InternalPerspectiveDsl.g:993:1: ( ruleXAndExpression EOF )
+            // InternalPerspectiveDsl.g:994:1: ruleXAndExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionRule()); 
@@ -3162,23 +3336,23 @@
 
 
     // $ANTLR start "ruleXAndExpression"
-    // InternalPerspectiveDsl.g:951:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1001:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
     public final void ruleXAndExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:955:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:956:2: ( ( rule__XAndExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1005:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1006:2: ( ( rule__XAndExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:956:2: ( ( rule__XAndExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:957:3: ( rule__XAndExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1006:2: ( ( rule__XAndExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1007:3: ( rule__XAndExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:958:3: ( rule__XAndExpression__Group__0 )
-            // InternalPerspectiveDsl.g:958:4: rule__XAndExpression__Group__0
+            // InternalPerspectiveDsl.g:1008:3: ( rule__XAndExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1008:4: rule__XAndExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group__0();
@@ -3213,11 +3387,11 @@
 
 
     // $ANTLR start "entryRuleOpAnd"
-    // InternalPerspectiveDsl.g:967:1: entryRuleOpAnd : ruleOpAnd EOF ;
+    // InternalPerspectiveDsl.g:1017:1: entryRuleOpAnd : ruleOpAnd EOF ;
     public final void entryRuleOpAnd() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:968:1: ( ruleOpAnd EOF )
-            // InternalPerspectiveDsl.g:969:1: ruleOpAnd EOF
+            // InternalPerspectiveDsl.g:1018:1: ( ruleOpAnd EOF )
+            // InternalPerspectiveDsl.g:1019:1: ruleOpAnd EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAndRule()); 
@@ -3247,17 +3421,17 @@
 
 
     // $ANTLR start "ruleOpAnd"
-    // InternalPerspectiveDsl.g:976:1: ruleOpAnd : ( '&&' ) ;
+    // InternalPerspectiveDsl.g:1026:1: ruleOpAnd : ( '&&' ) ;
     public final void ruleOpAnd() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:980:2: ( ( '&&' ) )
-            // InternalPerspectiveDsl.g:981:2: ( '&&' )
+            // InternalPerspectiveDsl.g:1030:2: ( ( '&&' ) )
+            // InternalPerspectiveDsl.g:1031:2: ( '&&' )
             {
-            // InternalPerspectiveDsl.g:981:2: ( '&&' )
-            // InternalPerspectiveDsl.g:982:3: '&&'
+            // InternalPerspectiveDsl.g:1031:2: ( '&&' )
+            // InternalPerspectiveDsl.g:1032:3: '&&'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
@@ -3288,11 +3462,11 @@
 
 
     // $ANTLR start "entryRuleXEqualityExpression"
-    // InternalPerspectiveDsl.g:992:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
+    // InternalPerspectiveDsl.g:1042:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
     public final void entryRuleXEqualityExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:993:1: ( ruleXEqualityExpression EOF )
-            // InternalPerspectiveDsl.g:994:1: ruleXEqualityExpression EOF
+            // InternalPerspectiveDsl.g:1043:1: ( ruleXEqualityExpression EOF )
+            // InternalPerspectiveDsl.g:1044:1: ruleXEqualityExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionRule()); 
@@ -3322,23 +3496,23 @@
 
 
     // $ANTLR start "ruleXEqualityExpression"
-    // InternalPerspectiveDsl.g:1001:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1051:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
     public final void ruleXEqualityExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1005:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1006:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1055:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1056:2: ( ( rule__XEqualityExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1006:2: ( ( rule__XEqualityExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1007:3: ( rule__XEqualityExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1056:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1057:3: ( rule__XEqualityExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1008:3: ( rule__XEqualityExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1008:4: rule__XEqualityExpression__Group__0
+            // InternalPerspectiveDsl.g:1058:3: ( rule__XEqualityExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1058:4: rule__XEqualityExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group__0();
@@ -3373,11 +3547,11 @@
 
 
     // $ANTLR start "entryRuleOpEquality"
-    // InternalPerspectiveDsl.g:1017:1: entryRuleOpEquality : ruleOpEquality EOF ;
+    // InternalPerspectiveDsl.g:1067:1: entryRuleOpEquality : ruleOpEquality EOF ;
     public final void entryRuleOpEquality() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1018:1: ( ruleOpEquality EOF )
-            // InternalPerspectiveDsl.g:1019:1: ruleOpEquality EOF
+            // InternalPerspectiveDsl.g:1068:1: ( ruleOpEquality EOF )
+            // InternalPerspectiveDsl.g:1069:1: ruleOpEquality EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpEqualityRule()); 
@@ -3407,23 +3581,23 @@
 
 
     // $ANTLR start "ruleOpEquality"
-    // InternalPerspectiveDsl.g:1026:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1076:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
     public final void ruleOpEquality() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1030:2: ( ( ( rule__OpEquality__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1031:2: ( ( rule__OpEquality__Alternatives ) )
+            // InternalPerspectiveDsl.g:1080:2: ( ( ( rule__OpEquality__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1081:2: ( ( rule__OpEquality__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1031:2: ( ( rule__OpEquality__Alternatives ) )
-            // InternalPerspectiveDsl.g:1032:3: ( rule__OpEquality__Alternatives )
+            // InternalPerspectiveDsl.g:1081:2: ( ( rule__OpEquality__Alternatives ) )
+            // InternalPerspectiveDsl.g:1082:3: ( rule__OpEquality__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpEqualityAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1033:3: ( rule__OpEquality__Alternatives )
-            // InternalPerspectiveDsl.g:1033:4: rule__OpEquality__Alternatives
+            // InternalPerspectiveDsl.g:1083:3: ( rule__OpEquality__Alternatives )
+            // InternalPerspectiveDsl.g:1083:4: rule__OpEquality__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpEquality__Alternatives();
@@ -3458,11 +3632,11 @@
 
 
     // $ANTLR start "entryRuleXRelationalExpression"
-    // InternalPerspectiveDsl.g:1042:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
+    // InternalPerspectiveDsl.g:1092:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
     public final void entryRuleXRelationalExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1043:1: ( ruleXRelationalExpression EOF )
-            // InternalPerspectiveDsl.g:1044:1: ruleXRelationalExpression EOF
+            // InternalPerspectiveDsl.g:1093:1: ( ruleXRelationalExpression EOF )
+            // InternalPerspectiveDsl.g:1094:1: ruleXRelationalExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionRule()); 
@@ -3492,23 +3666,23 @@
 
 
     // $ANTLR start "ruleXRelationalExpression"
-    // InternalPerspectiveDsl.g:1051:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1101:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
     public final void ruleXRelationalExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1055:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1056:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1105:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1106:2: ( ( rule__XRelationalExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1056:2: ( ( rule__XRelationalExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1057:3: ( rule__XRelationalExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1106:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1107:3: ( rule__XRelationalExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1058:3: ( rule__XRelationalExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1058:4: rule__XRelationalExpression__Group__0
+            // InternalPerspectiveDsl.g:1108:3: ( rule__XRelationalExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1108:4: rule__XRelationalExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group__0();
@@ -3543,11 +3717,11 @@
 
 
     // $ANTLR start "entryRuleOpCompare"
-    // InternalPerspectiveDsl.g:1067:1: entryRuleOpCompare : ruleOpCompare EOF ;
+    // InternalPerspectiveDsl.g:1117:1: entryRuleOpCompare : ruleOpCompare EOF ;
     public final void entryRuleOpCompare() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1068:1: ( ruleOpCompare EOF )
-            // InternalPerspectiveDsl.g:1069:1: ruleOpCompare EOF
+            // InternalPerspectiveDsl.g:1118:1: ( ruleOpCompare EOF )
+            // InternalPerspectiveDsl.g:1119:1: ruleOpCompare EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareRule()); 
@@ -3577,23 +3751,23 @@
 
 
     // $ANTLR start "ruleOpCompare"
-    // InternalPerspectiveDsl.g:1076:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1126:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
     public final void ruleOpCompare() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1080:2: ( ( ( rule__OpCompare__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1081:2: ( ( rule__OpCompare__Alternatives ) )
+            // InternalPerspectiveDsl.g:1130:2: ( ( ( rule__OpCompare__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1131:2: ( ( rule__OpCompare__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1081:2: ( ( rule__OpCompare__Alternatives ) )
-            // InternalPerspectiveDsl.g:1082:3: ( rule__OpCompare__Alternatives )
+            // InternalPerspectiveDsl.g:1131:2: ( ( rule__OpCompare__Alternatives ) )
+            // InternalPerspectiveDsl.g:1132:3: ( rule__OpCompare__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1083:3: ( rule__OpCompare__Alternatives )
-            // InternalPerspectiveDsl.g:1083:4: rule__OpCompare__Alternatives
+            // InternalPerspectiveDsl.g:1133:3: ( rule__OpCompare__Alternatives )
+            // InternalPerspectiveDsl.g:1133:4: rule__OpCompare__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpCompare__Alternatives();
@@ -3628,11 +3802,11 @@
 
 
     // $ANTLR start "entryRuleXOtherOperatorExpression"
-    // InternalPerspectiveDsl.g:1092:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
+    // InternalPerspectiveDsl.g:1142:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
     public final void entryRuleXOtherOperatorExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1093:1: ( ruleXOtherOperatorExpression EOF )
-            // InternalPerspectiveDsl.g:1094:1: ruleXOtherOperatorExpression EOF
+            // InternalPerspectiveDsl.g:1143:1: ( ruleXOtherOperatorExpression EOF )
+            // InternalPerspectiveDsl.g:1144:1: ruleXOtherOperatorExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionRule()); 
@@ -3662,23 +3836,23 @@
 
 
     // $ANTLR start "ruleXOtherOperatorExpression"
-    // InternalPerspectiveDsl.g:1101:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1151:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
     public final void ruleXOtherOperatorExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1105:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1106:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1155:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1156:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1106:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1107:3: ( rule__XOtherOperatorExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1156:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1157:3: ( rule__XOtherOperatorExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1108:3: ( rule__XOtherOperatorExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1108:4: rule__XOtherOperatorExpression__Group__0
+            // InternalPerspectiveDsl.g:1158:3: ( rule__XOtherOperatorExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1158:4: rule__XOtherOperatorExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group__0();
@@ -3713,11 +3887,11 @@
 
 
     // $ANTLR start "entryRuleOpOther"
-    // InternalPerspectiveDsl.g:1117:1: entryRuleOpOther : ruleOpOther EOF ;
+    // InternalPerspectiveDsl.g:1167:1: entryRuleOpOther : ruleOpOther EOF ;
     public final void entryRuleOpOther() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1118:1: ( ruleOpOther EOF )
-            // InternalPerspectiveDsl.g:1119:1: ruleOpOther EOF
+            // InternalPerspectiveDsl.g:1168:1: ( ruleOpOther EOF )
+            // InternalPerspectiveDsl.g:1169:1: ruleOpOther EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherRule()); 
@@ -3747,23 +3921,23 @@
 
 
     // $ANTLR start "ruleOpOther"
-    // InternalPerspectiveDsl.g:1126:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1176:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
     public final void ruleOpOther() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1130:2: ( ( ( rule__OpOther__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1131:2: ( ( rule__OpOther__Alternatives ) )
+            // InternalPerspectiveDsl.g:1180:2: ( ( ( rule__OpOther__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1181:2: ( ( rule__OpOther__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1131:2: ( ( rule__OpOther__Alternatives ) )
-            // InternalPerspectiveDsl.g:1132:3: ( rule__OpOther__Alternatives )
+            // InternalPerspectiveDsl.g:1181:2: ( ( rule__OpOther__Alternatives ) )
+            // InternalPerspectiveDsl.g:1182:3: ( rule__OpOther__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1133:3: ( rule__OpOther__Alternatives )
-            // InternalPerspectiveDsl.g:1133:4: rule__OpOther__Alternatives
+            // InternalPerspectiveDsl.g:1183:3: ( rule__OpOther__Alternatives )
+            // InternalPerspectiveDsl.g:1183:4: rule__OpOther__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Alternatives();
@@ -3798,11 +3972,11 @@
 
 
     // $ANTLR start "entryRuleXAdditiveExpression"
-    // InternalPerspectiveDsl.g:1142:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
+    // InternalPerspectiveDsl.g:1192:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
     public final void entryRuleXAdditiveExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1143:1: ( ruleXAdditiveExpression EOF )
-            // InternalPerspectiveDsl.g:1144:1: ruleXAdditiveExpression EOF
+            // InternalPerspectiveDsl.g:1193:1: ( ruleXAdditiveExpression EOF )
+            // InternalPerspectiveDsl.g:1194:1: ruleXAdditiveExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionRule()); 
@@ -3832,23 +4006,23 @@
 
 
     // $ANTLR start "ruleXAdditiveExpression"
-    // InternalPerspectiveDsl.g:1151:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1201:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
     public final void ruleXAdditiveExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1155:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1156:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1205:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1206:2: ( ( rule__XAdditiveExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1156:2: ( ( rule__XAdditiveExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1157:3: ( rule__XAdditiveExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1206:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1207:3: ( rule__XAdditiveExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1158:3: ( rule__XAdditiveExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1158:4: rule__XAdditiveExpression__Group__0
+            // InternalPerspectiveDsl.g:1208:3: ( rule__XAdditiveExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1208:4: rule__XAdditiveExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group__0();
@@ -3883,11 +4057,11 @@
 
 
     // $ANTLR start "entryRuleOpAdd"
-    // InternalPerspectiveDsl.g:1167:1: entryRuleOpAdd : ruleOpAdd EOF ;
+    // InternalPerspectiveDsl.g:1217:1: entryRuleOpAdd : ruleOpAdd EOF ;
     public final void entryRuleOpAdd() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1168:1: ( ruleOpAdd EOF )
-            // InternalPerspectiveDsl.g:1169:1: ruleOpAdd EOF
+            // InternalPerspectiveDsl.g:1218:1: ( ruleOpAdd EOF )
+            // InternalPerspectiveDsl.g:1219:1: ruleOpAdd EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAddRule()); 
@@ -3917,23 +4091,23 @@
 
 
     // $ANTLR start "ruleOpAdd"
-    // InternalPerspectiveDsl.g:1176:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1226:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
     public final void ruleOpAdd() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1180:2: ( ( ( rule__OpAdd__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1181:2: ( ( rule__OpAdd__Alternatives ) )
+            // InternalPerspectiveDsl.g:1230:2: ( ( ( rule__OpAdd__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1231:2: ( ( rule__OpAdd__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1181:2: ( ( rule__OpAdd__Alternatives ) )
-            // InternalPerspectiveDsl.g:1182:3: ( rule__OpAdd__Alternatives )
+            // InternalPerspectiveDsl.g:1231:2: ( ( rule__OpAdd__Alternatives ) )
+            // InternalPerspectiveDsl.g:1232:3: ( rule__OpAdd__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAddAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1183:3: ( rule__OpAdd__Alternatives )
-            // InternalPerspectiveDsl.g:1183:4: rule__OpAdd__Alternatives
+            // InternalPerspectiveDsl.g:1233:3: ( rule__OpAdd__Alternatives )
+            // InternalPerspectiveDsl.g:1233:4: rule__OpAdd__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpAdd__Alternatives();
@@ -3968,11 +4142,11 @@
 
 
     // $ANTLR start "entryRuleXMultiplicativeExpression"
-    // InternalPerspectiveDsl.g:1192:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
+    // InternalPerspectiveDsl.g:1242:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
     public final void entryRuleXMultiplicativeExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1193:1: ( ruleXMultiplicativeExpression EOF )
-            // InternalPerspectiveDsl.g:1194:1: ruleXMultiplicativeExpression EOF
+            // InternalPerspectiveDsl.g:1243:1: ( ruleXMultiplicativeExpression EOF )
+            // InternalPerspectiveDsl.g:1244:1: ruleXMultiplicativeExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionRule()); 
@@ -4002,23 +4176,23 @@
 
 
     // $ANTLR start "ruleXMultiplicativeExpression"
-    // InternalPerspectiveDsl.g:1201:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1251:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
     public final void ruleXMultiplicativeExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1205:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1206:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1255:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1256:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1206:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1207:3: ( rule__XMultiplicativeExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1256:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1257:3: ( rule__XMultiplicativeExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1208:3: ( rule__XMultiplicativeExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1208:4: rule__XMultiplicativeExpression__Group__0
+            // InternalPerspectiveDsl.g:1258:3: ( rule__XMultiplicativeExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1258:4: rule__XMultiplicativeExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group__0();
@@ -4053,11 +4227,11 @@
 
 
     // $ANTLR start "entryRuleOpMulti"
-    // InternalPerspectiveDsl.g:1217:1: entryRuleOpMulti : ruleOpMulti EOF ;
+    // InternalPerspectiveDsl.g:1267:1: entryRuleOpMulti : ruleOpMulti EOF ;
     public final void entryRuleOpMulti() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1218:1: ( ruleOpMulti EOF )
-            // InternalPerspectiveDsl.g:1219:1: ruleOpMulti EOF
+            // InternalPerspectiveDsl.g:1268:1: ( ruleOpMulti EOF )
+            // InternalPerspectiveDsl.g:1269:1: ruleOpMulti EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiRule()); 
@@ -4087,23 +4261,23 @@
 
 
     // $ANTLR start "ruleOpMulti"
-    // InternalPerspectiveDsl.g:1226:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1276:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
     public final void ruleOpMulti() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1230:2: ( ( ( rule__OpMulti__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1231:2: ( ( rule__OpMulti__Alternatives ) )
+            // InternalPerspectiveDsl.g:1280:2: ( ( ( rule__OpMulti__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1281:2: ( ( rule__OpMulti__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1231:2: ( ( rule__OpMulti__Alternatives ) )
-            // InternalPerspectiveDsl.g:1232:3: ( rule__OpMulti__Alternatives )
+            // InternalPerspectiveDsl.g:1281:2: ( ( rule__OpMulti__Alternatives ) )
+            // InternalPerspectiveDsl.g:1282:3: ( rule__OpMulti__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1233:3: ( rule__OpMulti__Alternatives )
-            // InternalPerspectiveDsl.g:1233:4: rule__OpMulti__Alternatives
+            // InternalPerspectiveDsl.g:1283:3: ( rule__OpMulti__Alternatives )
+            // InternalPerspectiveDsl.g:1283:4: rule__OpMulti__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpMulti__Alternatives();
@@ -4138,11 +4312,11 @@
 
 
     // $ANTLR start "entryRuleXUnaryOperation"
-    // InternalPerspectiveDsl.g:1242:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
+    // InternalPerspectiveDsl.g:1292:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
     public final void entryRuleXUnaryOperation() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1243:1: ( ruleXUnaryOperation EOF )
-            // InternalPerspectiveDsl.g:1244:1: ruleXUnaryOperation EOF
+            // InternalPerspectiveDsl.g:1293:1: ( ruleXUnaryOperation EOF )
+            // InternalPerspectiveDsl.g:1294:1: ruleXUnaryOperation EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationRule()); 
@@ -4172,23 +4346,23 @@
 
 
     // $ANTLR start "ruleXUnaryOperation"
-    // InternalPerspectiveDsl.g:1251:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1301:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
     public final void ruleXUnaryOperation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1255:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1256:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            // InternalPerspectiveDsl.g:1305:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1306:2: ( ( rule__XUnaryOperation__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1256:2: ( ( rule__XUnaryOperation__Alternatives ) )
-            // InternalPerspectiveDsl.g:1257:3: ( rule__XUnaryOperation__Alternatives )
+            // InternalPerspectiveDsl.g:1306:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            // InternalPerspectiveDsl.g:1307:3: ( rule__XUnaryOperation__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1258:3: ( rule__XUnaryOperation__Alternatives )
-            // InternalPerspectiveDsl.g:1258:4: rule__XUnaryOperation__Alternatives
+            // InternalPerspectiveDsl.g:1308:3: ( rule__XUnaryOperation__Alternatives )
+            // InternalPerspectiveDsl.g:1308:4: rule__XUnaryOperation__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__Alternatives();
@@ -4223,11 +4397,11 @@
 
 
     // $ANTLR start "entryRuleOpUnary"
-    // InternalPerspectiveDsl.g:1267:1: entryRuleOpUnary : ruleOpUnary EOF ;
+    // InternalPerspectiveDsl.g:1317:1: entryRuleOpUnary : ruleOpUnary EOF ;
     public final void entryRuleOpUnary() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1268:1: ( ruleOpUnary EOF )
-            // InternalPerspectiveDsl.g:1269:1: ruleOpUnary EOF
+            // InternalPerspectiveDsl.g:1318:1: ( ruleOpUnary EOF )
+            // InternalPerspectiveDsl.g:1319:1: ruleOpUnary EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpUnaryRule()); 
@@ -4257,23 +4431,23 @@
 
 
     // $ANTLR start "ruleOpUnary"
-    // InternalPerspectiveDsl.g:1276:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1326:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
     public final void ruleOpUnary() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1280:2: ( ( ( rule__OpUnary__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1281:2: ( ( rule__OpUnary__Alternatives ) )
+            // InternalPerspectiveDsl.g:1330:2: ( ( ( rule__OpUnary__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1331:2: ( ( rule__OpUnary__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1281:2: ( ( rule__OpUnary__Alternatives ) )
-            // InternalPerspectiveDsl.g:1282:3: ( rule__OpUnary__Alternatives )
+            // InternalPerspectiveDsl.g:1331:2: ( ( rule__OpUnary__Alternatives ) )
+            // InternalPerspectiveDsl.g:1332:3: ( rule__OpUnary__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpUnaryAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1283:3: ( rule__OpUnary__Alternatives )
-            // InternalPerspectiveDsl.g:1283:4: rule__OpUnary__Alternatives
+            // InternalPerspectiveDsl.g:1333:3: ( rule__OpUnary__Alternatives )
+            // InternalPerspectiveDsl.g:1333:4: rule__OpUnary__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpUnary__Alternatives();
@@ -4308,11 +4482,11 @@
 
 
     // $ANTLR start "entryRuleXCastedExpression"
-    // InternalPerspectiveDsl.g:1292:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
+    // InternalPerspectiveDsl.g:1342:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
     public final void entryRuleXCastedExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1293:1: ( ruleXCastedExpression EOF )
-            // InternalPerspectiveDsl.g:1294:1: ruleXCastedExpression EOF
+            // InternalPerspectiveDsl.g:1343:1: ( ruleXCastedExpression EOF )
+            // InternalPerspectiveDsl.g:1344:1: ruleXCastedExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionRule()); 
@@ -4342,23 +4516,23 @@
 
 
     // $ANTLR start "ruleXCastedExpression"
-    // InternalPerspectiveDsl.g:1301:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1351:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
     public final void ruleXCastedExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1305:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1306:2: ( ( rule__XCastedExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1355:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1356:2: ( ( rule__XCastedExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1306:2: ( ( rule__XCastedExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1307:3: ( rule__XCastedExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1356:2: ( ( rule__XCastedExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1357:3: ( rule__XCastedExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1308:3: ( rule__XCastedExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1308:4: rule__XCastedExpression__Group__0
+            // InternalPerspectiveDsl.g:1358:3: ( rule__XCastedExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1358:4: rule__XCastedExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group__0();
@@ -4393,11 +4567,11 @@
 
 
     // $ANTLR start "entryRuleXPostfixOperation"
-    // InternalPerspectiveDsl.g:1317:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
+    // InternalPerspectiveDsl.g:1367:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
     public final void entryRuleXPostfixOperation() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1318:1: ( ruleXPostfixOperation EOF )
-            // InternalPerspectiveDsl.g:1319:1: ruleXPostfixOperation EOF
+            // InternalPerspectiveDsl.g:1368:1: ( ruleXPostfixOperation EOF )
+            // InternalPerspectiveDsl.g:1369:1: ruleXPostfixOperation EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationRule()); 
@@ -4427,23 +4601,23 @@
 
 
     // $ANTLR start "ruleXPostfixOperation"
-    // InternalPerspectiveDsl.g:1326:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1376:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
     public final void ruleXPostfixOperation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1330:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1331:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            // InternalPerspectiveDsl.g:1380:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1381:2: ( ( rule__XPostfixOperation__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1331:2: ( ( rule__XPostfixOperation__Group__0 ) )
-            // InternalPerspectiveDsl.g:1332:3: ( rule__XPostfixOperation__Group__0 )
+            // InternalPerspectiveDsl.g:1381:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            // InternalPerspectiveDsl.g:1382:3: ( rule__XPostfixOperation__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1333:3: ( rule__XPostfixOperation__Group__0 )
-            // InternalPerspectiveDsl.g:1333:4: rule__XPostfixOperation__Group__0
+            // InternalPerspectiveDsl.g:1383:3: ( rule__XPostfixOperation__Group__0 )
+            // InternalPerspectiveDsl.g:1383:4: rule__XPostfixOperation__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group__0();
@@ -4478,11 +4652,11 @@
 
 
     // $ANTLR start "entryRuleOpPostfix"
-    // InternalPerspectiveDsl.g:1342:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
+    // InternalPerspectiveDsl.g:1392:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
     public final void entryRuleOpPostfix() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1343:1: ( ruleOpPostfix EOF )
-            // InternalPerspectiveDsl.g:1344:1: ruleOpPostfix EOF
+            // InternalPerspectiveDsl.g:1393:1: ( ruleOpPostfix EOF )
+            // InternalPerspectiveDsl.g:1394:1: ruleOpPostfix EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpPostfixRule()); 
@@ -4512,23 +4686,23 @@
 
 
     // $ANTLR start "ruleOpPostfix"
-    // InternalPerspectiveDsl.g:1351:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1401:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
     public final void ruleOpPostfix() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1355:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1356:2: ( ( rule__OpPostfix__Alternatives ) )
+            // InternalPerspectiveDsl.g:1405:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1406:2: ( ( rule__OpPostfix__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1356:2: ( ( rule__OpPostfix__Alternatives ) )
-            // InternalPerspectiveDsl.g:1357:3: ( rule__OpPostfix__Alternatives )
+            // InternalPerspectiveDsl.g:1406:2: ( ( rule__OpPostfix__Alternatives ) )
+            // InternalPerspectiveDsl.g:1407:3: ( rule__OpPostfix__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpPostfixAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1358:3: ( rule__OpPostfix__Alternatives )
-            // InternalPerspectiveDsl.g:1358:4: rule__OpPostfix__Alternatives
+            // InternalPerspectiveDsl.g:1408:3: ( rule__OpPostfix__Alternatives )
+            // InternalPerspectiveDsl.g:1408:4: rule__OpPostfix__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpPostfix__Alternatives();
@@ -4563,11 +4737,11 @@
 
 
     // $ANTLR start "entryRuleXMemberFeatureCall"
-    // InternalPerspectiveDsl.g:1367:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
+    // InternalPerspectiveDsl.g:1417:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
     public final void entryRuleXMemberFeatureCall() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1368:1: ( ruleXMemberFeatureCall EOF )
-            // InternalPerspectiveDsl.g:1369:1: ruleXMemberFeatureCall EOF
+            // InternalPerspectiveDsl.g:1418:1: ( ruleXMemberFeatureCall EOF )
+            // InternalPerspectiveDsl.g:1419:1: ruleXMemberFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallRule()); 
@@ -4597,23 +4771,23 @@
 
 
     // $ANTLR start "ruleXMemberFeatureCall"
-    // InternalPerspectiveDsl.g:1376:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1426:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
     public final void ruleXMemberFeatureCall() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1380:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1381:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // InternalPerspectiveDsl.g:1430:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1431:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1381:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
-            // InternalPerspectiveDsl.g:1382:3: ( rule__XMemberFeatureCall__Group__0 )
+            // InternalPerspectiveDsl.g:1431:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // InternalPerspectiveDsl.g:1432:3: ( rule__XMemberFeatureCall__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1383:3: ( rule__XMemberFeatureCall__Group__0 )
-            // InternalPerspectiveDsl.g:1383:4: rule__XMemberFeatureCall__Group__0
+            // InternalPerspectiveDsl.g:1433:3: ( rule__XMemberFeatureCall__Group__0 )
+            // InternalPerspectiveDsl.g:1433:4: rule__XMemberFeatureCall__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group__0();
@@ -4648,11 +4822,11 @@
 
 
     // $ANTLR start "entryRuleXPrimaryExpression"
-    // InternalPerspectiveDsl.g:1392:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
+    // InternalPerspectiveDsl.g:1442:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
     public final void entryRuleXPrimaryExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1393:1: ( ruleXPrimaryExpression EOF )
-            // InternalPerspectiveDsl.g:1394:1: ruleXPrimaryExpression EOF
+            // InternalPerspectiveDsl.g:1443:1: ( ruleXPrimaryExpression EOF )
+            // InternalPerspectiveDsl.g:1444:1: ruleXPrimaryExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPrimaryExpressionRule()); 
@@ -4682,23 +4856,23 @@
 
 
     // $ANTLR start "ruleXPrimaryExpression"
-    // InternalPerspectiveDsl.g:1401:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1451:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
     public final void ruleXPrimaryExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1405:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1406:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // InternalPerspectiveDsl.g:1455:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1456:2: ( ( rule__XPrimaryExpression__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1406:2: ( ( rule__XPrimaryExpression__Alternatives ) )
-            // InternalPerspectiveDsl.g:1407:3: ( rule__XPrimaryExpression__Alternatives )
+            // InternalPerspectiveDsl.g:1456:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // InternalPerspectiveDsl.g:1457:3: ( rule__XPrimaryExpression__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1408:3: ( rule__XPrimaryExpression__Alternatives )
-            // InternalPerspectiveDsl.g:1408:4: rule__XPrimaryExpression__Alternatives
+            // InternalPerspectiveDsl.g:1458:3: ( rule__XPrimaryExpression__Alternatives )
+            // InternalPerspectiveDsl.g:1458:4: rule__XPrimaryExpression__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XPrimaryExpression__Alternatives();
@@ -4733,11 +4907,11 @@
 
 
     // $ANTLR start "entryRuleXLiteral"
-    // InternalPerspectiveDsl.g:1417:1: entryRuleXLiteral : ruleXLiteral EOF ;
+    // InternalPerspectiveDsl.g:1467:1: entryRuleXLiteral : ruleXLiteral EOF ;
     public final void entryRuleXLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1418:1: ( ruleXLiteral EOF )
-            // InternalPerspectiveDsl.g:1419:1: ruleXLiteral EOF
+            // InternalPerspectiveDsl.g:1468:1: ( ruleXLiteral EOF )
+            // InternalPerspectiveDsl.g:1469:1: ruleXLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXLiteralRule()); 
@@ -4767,23 +4941,23 @@
 
 
     // $ANTLR start "ruleXLiteral"
-    // InternalPerspectiveDsl.g:1426:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1476:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
     public final void ruleXLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1430:2: ( ( ( rule__XLiteral__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1431:2: ( ( rule__XLiteral__Alternatives ) )
+            // InternalPerspectiveDsl.g:1480:2: ( ( ( rule__XLiteral__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1481:2: ( ( rule__XLiteral__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1431:2: ( ( rule__XLiteral__Alternatives ) )
-            // InternalPerspectiveDsl.g:1432:3: ( rule__XLiteral__Alternatives )
+            // InternalPerspectiveDsl.g:1481:2: ( ( rule__XLiteral__Alternatives ) )
+            // InternalPerspectiveDsl.g:1482:3: ( rule__XLiteral__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXLiteralAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1433:3: ( rule__XLiteral__Alternatives )
-            // InternalPerspectiveDsl.g:1433:4: rule__XLiteral__Alternatives
+            // InternalPerspectiveDsl.g:1483:3: ( rule__XLiteral__Alternatives )
+            // InternalPerspectiveDsl.g:1483:4: rule__XLiteral__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XLiteral__Alternatives();
@@ -4818,11 +4992,11 @@
 
 
     // $ANTLR start "entryRuleXCollectionLiteral"
-    // InternalPerspectiveDsl.g:1442:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
+    // InternalPerspectiveDsl.g:1492:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
     public final void entryRuleXCollectionLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1443:1: ( ruleXCollectionLiteral EOF )
-            // InternalPerspectiveDsl.g:1444:1: ruleXCollectionLiteral EOF
+            // InternalPerspectiveDsl.g:1493:1: ( ruleXCollectionLiteral EOF )
+            // InternalPerspectiveDsl.g:1494:1: ruleXCollectionLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCollectionLiteralRule()); 
@@ -4852,23 +5026,23 @@
 
 
     // $ANTLR start "ruleXCollectionLiteral"
-    // InternalPerspectiveDsl.g:1451:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1501:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
     public final void ruleXCollectionLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1455:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1456:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // InternalPerspectiveDsl.g:1505:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1506:2: ( ( rule__XCollectionLiteral__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1456:2: ( ( rule__XCollectionLiteral__Alternatives ) )
-            // InternalPerspectiveDsl.g:1457:3: ( rule__XCollectionLiteral__Alternatives )
+            // InternalPerspectiveDsl.g:1506:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // InternalPerspectiveDsl.g:1507:3: ( rule__XCollectionLiteral__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1458:3: ( rule__XCollectionLiteral__Alternatives )
-            // InternalPerspectiveDsl.g:1458:4: rule__XCollectionLiteral__Alternatives
+            // InternalPerspectiveDsl.g:1508:3: ( rule__XCollectionLiteral__Alternatives )
+            // InternalPerspectiveDsl.g:1508:4: rule__XCollectionLiteral__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XCollectionLiteral__Alternatives();
@@ -4903,11 +5077,11 @@
 
 
     // $ANTLR start "entryRuleXSetLiteral"
-    // InternalPerspectiveDsl.g:1467:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
+    // InternalPerspectiveDsl.g:1517:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
     public final void entryRuleXSetLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1468:1: ( ruleXSetLiteral EOF )
-            // InternalPerspectiveDsl.g:1469:1: ruleXSetLiteral EOF
+            // InternalPerspectiveDsl.g:1518:1: ( ruleXSetLiteral EOF )
+            // InternalPerspectiveDsl.g:1519:1: ruleXSetLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralRule()); 
@@ -4937,23 +5111,23 @@
 
 
     // $ANTLR start "ruleXSetLiteral"
-    // InternalPerspectiveDsl.g:1476:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1526:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
     public final void ruleXSetLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1480:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1481:2: ( ( rule__XSetLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:1530:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1531:2: ( ( rule__XSetLiteral__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1481:2: ( ( rule__XSetLiteral__Group__0 ) )
-            // InternalPerspectiveDsl.g:1482:3: ( rule__XSetLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:1531:2: ( ( rule__XSetLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:1532:3: ( rule__XSetLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1483:3: ( rule__XSetLiteral__Group__0 )
-            // InternalPerspectiveDsl.g:1483:4: rule__XSetLiteral__Group__0
+            // InternalPerspectiveDsl.g:1533:3: ( rule__XSetLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:1533:4: rule__XSetLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group__0();
@@ -4988,11 +5162,11 @@
 
 
     // $ANTLR start "entryRuleXListLiteral"
-    // InternalPerspectiveDsl.g:1492:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
+    // InternalPerspectiveDsl.g:1542:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
     public final void entryRuleXListLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1493:1: ( ruleXListLiteral EOF )
-            // InternalPerspectiveDsl.g:1494:1: ruleXListLiteral EOF
+            // InternalPerspectiveDsl.g:1543:1: ( ruleXListLiteral EOF )
+            // InternalPerspectiveDsl.g:1544:1: ruleXListLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralRule()); 
@@ -5022,23 +5196,23 @@
 
 
     // $ANTLR start "ruleXListLiteral"
-    // InternalPerspectiveDsl.g:1501:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1551:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
     public final void ruleXListLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1505:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1506:2: ( ( rule__XListLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:1555:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1556:2: ( ( rule__XListLiteral__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1506:2: ( ( rule__XListLiteral__Group__0 ) )
-            // InternalPerspectiveDsl.g:1507:3: ( rule__XListLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:1556:2: ( ( rule__XListLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:1557:3: ( rule__XListLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1508:3: ( rule__XListLiteral__Group__0 )
-            // InternalPerspectiveDsl.g:1508:4: rule__XListLiteral__Group__0
+            // InternalPerspectiveDsl.g:1558:3: ( rule__XListLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:1558:4: rule__XListLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group__0();
@@ -5073,11 +5247,11 @@
 
 
     // $ANTLR start "entryRuleXClosure"
-    // InternalPerspectiveDsl.g:1517:1: entryRuleXClosure : ruleXClosure EOF ;
+    // InternalPerspectiveDsl.g:1567:1: entryRuleXClosure : ruleXClosure EOF ;
     public final void entryRuleXClosure() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1518:1: ( ruleXClosure EOF )
-            // InternalPerspectiveDsl.g:1519:1: ruleXClosure EOF
+            // InternalPerspectiveDsl.g:1568:1: ( ruleXClosure EOF )
+            // InternalPerspectiveDsl.g:1569:1: ruleXClosure EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureRule()); 
@@ -5107,23 +5281,23 @@
 
 
     // $ANTLR start "ruleXClosure"
-    // InternalPerspectiveDsl.g:1526:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1576:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
     public final void ruleXClosure() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1530:2: ( ( ( rule__XClosure__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1531:2: ( ( rule__XClosure__Group__0 ) )
+            // InternalPerspectiveDsl.g:1580:2: ( ( ( rule__XClosure__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1581:2: ( ( rule__XClosure__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1531:2: ( ( rule__XClosure__Group__0 ) )
-            // InternalPerspectiveDsl.g:1532:3: ( rule__XClosure__Group__0 )
+            // InternalPerspectiveDsl.g:1581:2: ( ( rule__XClosure__Group__0 ) )
+            // InternalPerspectiveDsl.g:1582:3: ( rule__XClosure__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1533:3: ( rule__XClosure__Group__0 )
-            // InternalPerspectiveDsl.g:1533:4: rule__XClosure__Group__0
+            // InternalPerspectiveDsl.g:1583:3: ( rule__XClosure__Group__0 )
+            // InternalPerspectiveDsl.g:1583:4: rule__XClosure__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group__0();
@@ -5158,11 +5332,11 @@
 
 
     // $ANTLR start "entryRuleXExpressionInClosure"
-    // InternalPerspectiveDsl.g:1542:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
+    // InternalPerspectiveDsl.g:1592:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
     public final void entryRuleXExpressionInClosure() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1543:1: ( ruleXExpressionInClosure EOF )
-            // InternalPerspectiveDsl.g:1544:1: ruleXExpressionInClosure EOF
+            // InternalPerspectiveDsl.g:1593:1: ( ruleXExpressionInClosure EOF )
+            // InternalPerspectiveDsl.g:1594:1: ruleXExpressionInClosure EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureRule()); 
@@ -5192,23 +5366,23 @@
 
 
     // $ANTLR start "ruleXExpressionInClosure"
-    // InternalPerspectiveDsl.g:1551:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1601:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
     public final void ruleXExpressionInClosure() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1555:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1556:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // InternalPerspectiveDsl.g:1605:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1606:2: ( ( rule__XExpressionInClosure__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1556:2: ( ( rule__XExpressionInClosure__Group__0 ) )
-            // InternalPerspectiveDsl.g:1557:3: ( rule__XExpressionInClosure__Group__0 )
+            // InternalPerspectiveDsl.g:1606:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // InternalPerspectiveDsl.g:1607:3: ( rule__XExpressionInClosure__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1558:3: ( rule__XExpressionInClosure__Group__0 )
-            // InternalPerspectiveDsl.g:1558:4: rule__XExpressionInClosure__Group__0
+            // InternalPerspectiveDsl.g:1608:3: ( rule__XExpressionInClosure__Group__0 )
+            // InternalPerspectiveDsl.g:1608:4: rule__XExpressionInClosure__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__Group__0();
@@ -5243,11 +5417,11 @@
 
 
     // $ANTLR start "entryRuleXShortClosure"
-    // InternalPerspectiveDsl.g:1567:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
+    // InternalPerspectiveDsl.g:1617:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
     public final void entryRuleXShortClosure() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1568:1: ( ruleXShortClosure EOF )
-            // InternalPerspectiveDsl.g:1569:1: ruleXShortClosure EOF
+            // InternalPerspectiveDsl.g:1618:1: ( ruleXShortClosure EOF )
+            // InternalPerspectiveDsl.g:1619:1: ruleXShortClosure EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureRule()); 
@@ -5277,23 +5451,23 @@
 
 
     // $ANTLR start "ruleXShortClosure"
-    // InternalPerspectiveDsl.g:1576:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1626:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
     public final void ruleXShortClosure() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1580:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1581:2: ( ( rule__XShortClosure__Group__0 ) )
+            // InternalPerspectiveDsl.g:1630:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1631:2: ( ( rule__XShortClosure__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1581:2: ( ( rule__XShortClosure__Group__0 ) )
-            // InternalPerspectiveDsl.g:1582:3: ( rule__XShortClosure__Group__0 )
+            // InternalPerspectiveDsl.g:1631:2: ( ( rule__XShortClosure__Group__0 ) )
+            // InternalPerspectiveDsl.g:1632:3: ( rule__XShortClosure__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1583:3: ( rule__XShortClosure__Group__0 )
-            // InternalPerspectiveDsl.g:1583:4: rule__XShortClosure__Group__0
+            // InternalPerspectiveDsl.g:1633:3: ( rule__XShortClosure__Group__0 )
+            // InternalPerspectiveDsl.g:1633:4: rule__XShortClosure__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group__0();
@@ -5328,11 +5502,11 @@
 
 
     // $ANTLR start "entryRuleXParenthesizedExpression"
-    // InternalPerspectiveDsl.g:1592:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
+    // InternalPerspectiveDsl.g:1642:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
     public final void entryRuleXParenthesizedExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1593:1: ( ruleXParenthesizedExpression EOF )
-            // InternalPerspectiveDsl.g:1594:1: ruleXParenthesizedExpression EOF
+            // InternalPerspectiveDsl.g:1643:1: ( ruleXParenthesizedExpression EOF )
+            // InternalPerspectiveDsl.g:1644:1: ruleXParenthesizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionRule()); 
@@ -5362,23 +5536,23 @@
 
 
     // $ANTLR start "ruleXParenthesizedExpression"
-    // InternalPerspectiveDsl.g:1601:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1651:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
     public final void ruleXParenthesizedExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1605:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1606:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1655:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1656:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1606:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1607:3: ( rule__XParenthesizedExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1656:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1657:3: ( rule__XParenthesizedExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1608:3: ( rule__XParenthesizedExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1608:4: rule__XParenthesizedExpression__Group__0
+            // InternalPerspectiveDsl.g:1658:3: ( rule__XParenthesizedExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1658:4: rule__XParenthesizedExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XParenthesizedExpression__Group__0();
@@ -5413,11 +5587,11 @@
 
 
     // $ANTLR start "entryRuleXIfExpression"
-    // InternalPerspectiveDsl.g:1617:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
+    // InternalPerspectiveDsl.g:1667:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
     public final void entryRuleXIfExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1618:1: ( ruleXIfExpression EOF )
-            // InternalPerspectiveDsl.g:1619:1: ruleXIfExpression EOF
+            // InternalPerspectiveDsl.g:1668:1: ( ruleXIfExpression EOF )
+            // InternalPerspectiveDsl.g:1669:1: ruleXIfExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionRule()); 
@@ -5447,23 +5621,23 @@
 
 
     // $ANTLR start "ruleXIfExpression"
-    // InternalPerspectiveDsl.g:1626:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1676:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
     public final void ruleXIfExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1630:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1631:2: ( ( rule__XIfExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1680:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1681:2: ( ( rule__XIfExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1631:2: ( ( rule__XIfExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1632:3: ( rule__XIfExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1681:2: ( ( rule__XIfExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1682:3: ( rule__XIfExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1633:3: ( rule__XIfExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1633:4: rule__XIfExpression__Group__0
+            // InternalPerspectiveDsl.g:1683:3: ( rule__XIfExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1683:4: rule__XIfExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__Group__0();
@@ -5498,11 +5672,11 @@
 
 
     // $ANTLR start "entryRuleXSwitchExpression"
-    // InternalPerspectiveDsl.g:1642:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
+    // InternalPerspectiveDsl.g:1692:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
     public final void entryRuleXSwitchExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1643:1: ( ruleXSwitchExpression EOF )
-            // InternalPerspectiveDsl.g:1644:1: ruleXSwitchExpression EOF
+            // InternalPerspectiveDsl.g:1693:1: ( ruleXSwitchExpression EOF )
+            // InternalPerspectiveDsl.g:1694:1: ruleXSwitchExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionRule()); 
@@ -5532,23 +5706,23 @@
 
 
     // $ANTLR start "ruleXSwitchExpression"
-    // InternalPerspectiveDsl.g:1651:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1701:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
     public final void ruleXSwitchExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1655:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1656:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1705:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1706:2: ( ( rule__XSwitchExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1656:2: ( ( rule__XSwitchExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1657:3: ( rule__XSwitchExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1706:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1707:3: ( rule__XSwitchExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1658:3: ( rule__XSwitchExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1658:4: rule__XSwitchExpression__Group__0
+            // InternalPerspectiveDsl.g:1708:3: ( rule__XSwitchExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1708:4: rule__XSwitchExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group__0();
@@ -5583,11 +5757,11 @@
 
 
     // $ANTLR start "entryRuleXCasePart"
-    // InternalPerspectiveDsl.g:1667:1: entryRuleXCasePart : ruleXCasePart EOF ;
+    // InternalPerspectiveDsl.g:1717:1: entryRuleXCasePart : ruleXCasePart EOF ;
     public final void entryRuleXCasePart() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1668:1: ( ruleXCasePart EOF )
-            // InternalPerspectiveDsl.g:1669:1: ruleXCasePart EOF
+            // InternalPerspectiveDsl.g:1718:1: ( ruleXCasePart EOF )
+            // InternalPerspectiveDsl.g:1719:1: ruleXCasePart EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartRule()); 
@@ -5617,23 +5791,23 @@
 
 
     // $ANTLR start "ruleXCasePart"
-    // InternalPerspectiveDsl.g:1676:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1726:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
     public final void ruleXCasePart() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1680:2: ( ( ( rule__XCasePart__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1681:2: ( ( rule__XCasePart__Group__0 ) )
+            // InternalPerspectiveDsl.g:1730:2: ( ( ( rule__XCasePart__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1731:2: ( ( rule__XCasePart__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1681:2: ( ( rule__XCasePart__Group__0 ) )
-            // InternalPerspectiveDsl.g:1682:3: ( rule__XCasePart__Group__0 )
+            // InternalPerspectiveDsl.g:1731:2: ( ( rule__XCasePart__Group__0 ) )
+            // InternalPerspectiveDsl.g:1732:3: ( rule__XCasePart__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1683:3: ( rule__XCasePart__Group__0 )
-            // InternalPerspectiveDsl.g:1683:4: rule__XCasePart__Group__0
+            // InternalPerspectiveDsl.g:1733:3: ( rule__XCasePart__Group__0 )
+            // InternalPerspectiveDsl.g:1733:4: rule__XCasePart__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group__0();
@@ -5668,11 +5842,11 @@
 
 
     // $ANTLR start "entryRuleXForLoopExpression"
-    // InternalPerspectiveDsl.g:1692:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
+    // InternalPerspectiveDsl.g:1742:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
     public final void entryRuleXForLoopExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1693:1: ( ruleXForLoopExpression EOF )
-            // InternalPerspectiveDsl.g:1694:1: ruleXForLoopExpression EOF
+            // InternalPerspectiveDsl.g:1743:1: ( ruleXForLoopExpression EOF )
+            // InternalPerspectiveDsl.g:1744:1: ruleXForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionRule()); 
@@ -5702,23 +5876,23 @@
 
 
     // $ANTLR start "ruleXForLoopExpression"
-    // InternalPerspectiveDsl.g:1701:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1751:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
     public final void ruleXForLoopExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1705:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1706:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1755:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1756:2: ( ( rule__XForLoopExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1706:2: ( ( rule__XForLoopExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1707:3: ( rule__XForLoopExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1756:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1757:3: ( rule__XForLoopExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1708:3: ( rule__XForLoopExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1708:4: rule__XForLoopExpression__Group__0
+            // InternalPerspectiveDsl.g:1758:3: ( rule__XForLoopExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1758:4: rule__XForLoopExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group__0();
@@ -5753,11 +5927,11 @@
 
 
     // $ANTLR start "entryRuleXBasicForLoopExpression"
-    // InternalPerspectiveDsl.g:1717:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
+    // InternalPerspectiveDsl.g:1767:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
     public final void entryRuleXBasicForLoopExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1718:1: ( ruleXBasicForLoopExpression EOF )
-            // InternalPerspectiveDsl.g:1719:1: ruleXBasicForLoopExpression EOF
+            // InternalPerspectiveDsl.g:1768:1: ( ruleXBasicForLoopExpression EOF )
+            // InternalPerspectiveDsl.g:1769:1: ruleXBasicForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionRule()); 
@@ -5787,23 +5961,23 @@
 
 
     // $ANTLR start "ruleXBasicForLoopExpression"
-    // InternalPerspectiveDsl.g:1726:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1776:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
     public final void ruleXBasicForLoopExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1730:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1731:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1780:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1781:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1731:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1732:3: ( rule__XBasicForLoopExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1781:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1782:3: ( rule__XBasicForLoopExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1733:3: ( rule__XBasicForLoopExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1733:4: rule__XBasicForLoopExpression__Group__0
+            // InternalPerspectiveDsl.g:1783:3: ( rule__XBasicForLoopExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1783:4: rule__XBasicForLoopExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group__0();
@@ -5838,11 +6012,11 @@
 
 
     // $ANTLR start "entryRuleXWhileExpression"
-    // InternalPerspectiveDsl.g:1742:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
+    // InternalPerspectiveDsl.g:1792:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
     public final void entryRuleXWhileExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1743:1: ( ruleXWhileExpression EOF )
-            // InternalPerspectiveDsl.g:1744:1: ruleXWhileExpression EOF
+            // InternalPerspectiveDsl.g:1793:1: ( ruleXWhileExpression EOF )
+            // InternalPerspectiveDsl.g:1794:1: ruleXWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionRule()); 
@@ -5872,23 +6046,23 @@
 
 
     // $ANTLR start "ruleXWhileExpression"
-    // InternalPerspectiveDsl.g:1751:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1801:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
     public final void ruleXWhileExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1755:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1756:2: ( ( rule__XWhileExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1805:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1806:2: ( ( rule__XWhileExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1756:2: ( ( rule__XWhileExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1757:3: ( rule__XWhileExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1806:2: ( ( rule__XWhileExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1807:3: ( rule__XWhileExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1758:3: ( rule__XWhileExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1758:4: rule__XWhileExpression__Group__0
+            // InternalPerspectiveDsl.g:1808:3: ( rule__XWhileExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1808:4: rule__XWhileExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__Group__0();
@@ -5923,11 +6097,11 @@
 
 
     // $ANTLR start "entryRuleXDoWhileExpression"
-    // InternalPerspectiveDsl.g:1767:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
+    // InternalPerspectiveDsl.g:1817:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
     public final void entryRuleXDoWhileExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1768:1: ( ruleXDoWhileExpression EOF )
-            // InternalPerspectiveDsl.g:1769:1: ruleXDoWhileExpression EOF
+            // InternalPerspectiveDsl.g:1818:1: ( ruleXDoWhileExpression EOF )
+            // InternalPerspectiveDsl.g:1819:1: ruleXDoWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionRule()); 
@@ -5957,23 +6131,23 @@
 
 
     // $ANTLR start "ruleXDoWhileExpression"
-    // InternalPerspectiveDsl.g:1776:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1826:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
     public final void ruleXDoWhileExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1780:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1781:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1830:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1831:2: ( ( rule__XDoWhileExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1781:2: ( ( rule__XDoWhileExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1782:3: ( rule__XDoWhileExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1831:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1832:3: ( rule__XDoWhileExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1783:3: ( rule__XDoWhileExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1783:4: rule__XDoWhileExpression__Group__0
+            // InternalPerspectiveDsl.g:1833:3: ( rule__XDoWhileExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1833:4: rule__XDoWhileExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__Group__0();
@@ -6008,11 +6182,11 @@
 
 
     // $ANTLR start "entryRuleXBlockExpression"
-    // InternalPerspectiveDsl.g:1792:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
+    // InternalPerspectiveDsl.g:1842:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
     public final void entryRuleXBlockExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1793:1: ( ruleXBlockExpression EOF )
-            // InternalPerspectiveDsl.g:1794:1: ruleXBlockExpression EOF
+            // InternalPerspectiveDsl.g:1843:1: ( ruleXBlockExpression EOF )
+            // InternalPerspectiveDsl.g:1844:1: ruleXBlockExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionRule()); 
@@ -6042,23 +6216,23 @@
 
 
     // $ANTLR start "ruleXBlockExpression"
-    // InternalPerspectiveDsl.g:1801:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1851:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
     public final void ruleXBlockExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1805:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1806:2: ( ( rule__XBlockExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1855:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1856:2: ( ( rule__XBlockExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1806:2: ( ( rule__XBlockExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1807:3: ( rule__XBlockExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1856:2: ( ( rule__XBlockExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1857:3: ( rule__XBlockExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1808:3: ( rule__XBlockExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1808:4: rule__XBlockExpression__Group__0
+            // InternalPerspectiveDsl.g:1858:3: ( rule__XBlockExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1858:4: rule__XBlockExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__Group__0();
@@ -6093,11 +6267,11 @@
 
 
     // $ANTLR start "entryRuleXExpressionOrVarDeclaration"
-    // InternalPerspectiveDsl.g:1817:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
+    // InternalPerspectiveDsl.g:1867:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
     public final void entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1818:1: ( ruleXExpressionOrVarDeclaration EOF )
-            // InternalPerspectiveDsl.g:1819:1: ruleXExpressionOrVarDeclaration EOF
+            // InternalPerspectiveDsl.g:1868:1: ( ruleXExpressionOrVarDeclaration EOF )
+            // InternalPerspectiveDsl.g:1869:1: ruleXExpressionOrVarDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionOrVarDeclarationRule()); 
@@ -6127,23 +6301,23 @@
 
 
     // $ANTLR start "ruleXExpressionOrVarDeclaration"
-    // InternalPerspectiveDsl.g:1826:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1876:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
     public final void ruleXExpressionOrVarDeclaration() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1830:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1831:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // InternalPerspectiveDsl.g:1880:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1881:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1831:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
-            // InternalPerspectiveDsl.g:1832:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // InternalPerspectiveDsl.g:1881:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // InternalPerspectiveDsl.g:1882:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1833:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
-            // InternalPerspectiveDsl.g:1833:4: rule__XExpressionOrVarDeclaration__Alternatives
+            // InternalPerspectiveDsl.g:1883:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // InternalPerspectiveDsl.g:1883:4: rule__XExpressionOrVarDeclaration__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionOrVarDeclaration__Alternatives();
@@ -6178,11 +6352,11 @@
 
 
     // $ANTLR start "entryRuleXVariableDeclaration"
-    // InternalPerspectiveDsl.g:1842:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
+    // InternalPerspectiveDsl.g:1892:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
     public final void entryRuleXVariableDeclaration() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1843:1: ( ruleXVariableDeclaration EOF )
-            // InternalPerspectiveDsl.g:1844:1: ruleXVariableDeclaration EOF
+            // InternalPerspectiveDsl.g:1893:1: ( ruleXVariableDeclaration EOF )
+            // InternalPerspectiveDsl.g:1894:1: ruleXVariableDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationRule()); 
@@ -6212,23 +6386,23 @@
 
 
     // $ANTLR start "ruleXVariableDeclaration"
-    // InternalPerspectiveDsl.g:1851:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1901:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
     public final void ruleXVariableDeclaration() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1855:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1856:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // InternalPerspectiveDsl.g:1905:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1906:2: ( ( rule__XVariableDeclaration__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1856:2: ( ( rule__XVariableDeclaration__Group__0 ) )
-            // InternalPerspectiveDsl.g:1857:3: ( rule__XVariableDeclaration__Group__0 )
+            // InternalPerspectiveDsl.g:1906:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // InternalPerspectiveDsl.g:1907:3: ( rule__XVariableDeclaration__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1858:3: ( rule__XVariableDeclaration__Group__0 )
-            // InternalPerspectiveDsl.g:1858:4: rule__XVariableDeclaration__Group__0
+            // InternalPerspectiveDsl.g:1908:3: ( rule__XVariableDeclaration__Group__0 )
+            // InternalPerspectiveDsl.g:1908:4: rule__XVariableDeclaration__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group__0();
@@ -6263,11 +6437,11 @@
 
 
     // $ANTLR start "entryRuleJvmFormalParameter"
-    // InternalPerspectiveDsl.g:1867:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
+    // InternalPerspectiveDsl.g:1917:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
     public final void entryRuleJvmFormalParameter() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1868:1: ( ruleJvmFormalParameter EOF )
-            // InternalPerspectiveDsl.g:1869:1: ruleJvmFormalParameter EOF
+            // InternalPerspectiveDsl.g:1918:1: ( ruleJvmFormalParameter EOF )
+            // InternalPerspectiveDsl.g:1919:1: ruleJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterRule()); 
@@ -6297,23 +6471,23 @@
 
 
     // $ANTLR start "ruleJvmFormalParameter"
-    // InternalPerspectiveDsl.g:1876:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1926:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
     public final void ruleJvmFormalParameter() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1880:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1881:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // InternalPerspectiveDsl.g:1930:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1931:2: ( ( rule__JvmFormalParameter__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1881:2: ( ( rule__JvmFormalParameter__Group__0 ) )
-            // InternalPerspectiveDsl.g:1882:3: ( rule__JvmFormalParameter__Group__0 )
+            // InternalPerspectiveDsl.g:1931:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // InternalPerspectiveDsl.g:1932:3: ( rule__JvmFormalParameter__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1883:3: ( rule__JvmFormalParameter__Group__0 )
-            // InternalPerspectiveDsl.g:1883:4: rule__JvmFormalParameter__Group__0
+            // InternalPerspectiveDsl.g:1933:3: ( rule__JvmFormalParameter__Group__0 )
+            // InternalPerspectiveDsl.g:1933:4: rule__JvmFormalParameter__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmFormalParameter__Group__0();
@@ -6348,11 +6522,11 @@
 
 
     // $ANTLR start "entryRuleFullJvmFormalParameter"
-    // InternalPerspectiveDsl.g:1892:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
+    // InternalPerspectiveDsl.g:1942:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
     public final void entryRuleFullJvmFormalParameter() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1893:1: ( ruleFullJvmFormalParameter EOF )
-            // InternalPerspectiveDsl.g:1894:1: ruleFullJvmFormalParameter EOF
+            // InternalPerspectiveDsl.g:1943:1: ( ruleFullJvmFormalParameter EOF )
+            // InternalPerspectiveDsl.g:1944:1: ruleFullJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterRule()); 
@@ -6382,23 +6556,23 @@
 
 
     // $ANTLR start "ruleFullJvmFormalParameter"
-    // InternalPerspectiveDsl.g:1901:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1951:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
     public final void ruleFullJvmFormalParameter() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1905:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1906:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // InternalPerspectiveDsl.g:1955:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1956:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1906:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
-            // InternalPerspectiveDsl.g:1907:3: ( rule__FullJvmFormalParameter__Group__0 )
+            // InternalPerspectiveDsl.g:1956:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // InternalPerspectiveDsl.g:1957:3: ( rule__FullJvmFormalParameter__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1908:3: ( rule__FullJvmFormalParameter__Group__0 )
-            // InternalPerspectiveDsl.g:1908:4: rule__FullJvmFormalParameter__Group__0
+            // InternalPerspectiveDsl.g:1958:3: ( rule__FullJvmFormalParameter__Group__0 )
+            // InternalPerspectiveDsl.g:1958:4: rule__FullJvmFormalParameter__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__Group__0();
@@ -6433,11 +6607,11 @@
 
 
     // $ANTLR start "entryRuleXFeatureCall"
-    // InternalPerspectiveDsl.g:1917:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
+    // InternalPerspectiveDsl.g:1967:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
     public final void entryRuleXFeatureCall() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1918:1: ( ruleXFeatureCall EOF )
-            // InternalPerspectiveDsl.g:1919:1: ruleXFeatureCall EOF
+            // InternalPerspectiveDsl.g:1968:1: ( ruleXFeatureCall EOF )
+            // InternalPerspectiveDsl.g:1969:1: ruleXFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallRule()); 
@@ -6467,23 +6641,23 @@
 
 
     // $ANTLR start "ruleXFeatureCall"
-    // InternalPerspectiveDsl.g:1926:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1976:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
     public final void ruleXFeatureCall() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1930:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1931:2: ( ( rule__XFeatureCall__Group__0 ) )
+            // InternalPerspectiveDsl.g:1980:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1981:2: ( ( rule__XFeatureCall__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1931:2: ( ( rule__XFeatureCall__Group__0 ) )
-            // InternalPerspectiveDsl.g:1932:3: ( rule__XFeatureCall__Group__0 )
+            // InternalPerspectiveDsl.g:1981:2: ( ( rule__XFeatureCall__Group__0 ) )
+            // InternalPerspectiveDsl.g:1982:3: ( rule__XFeatureCall__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1933:3: ( rule__XFeatureCall__Group__0 )
-            // InternalPerspectiveDsl.g:1933:4: rule__XFeatureCall__Group__0
+            // InternalPerspectiveDsl.g:1983:3: ( rule__XFeatureCall__Group__0 )
+            // InternalPerspectiveDsl.g:1983:4: rule__XFeatureCall__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group__0();
@@ -6518,11 +6692,11 @@
 
 
     // $ANTLR start "entryRuleFeatureCallID"
-    // InternalPerspectiveDsl.g:1942:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
+    // InternalPerspectiveDsl.g:1992:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
     public final void entryRuleFeatureCallID() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1943:1: ( ruleFeatureCallID EOF )
-            // InternalPerspectiveDsl.g:1944:1: ruleFeatureCallID EOF
+            // InternalPerspectiveDsl.g:1993:1: ( ruleFeatureCallID EOF )
+            // InternalPerspectiveDsl.g:1994:1: ruleFeatureCallID EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFeatureCallIDRule()); 
@@ -6552,23 +6726,23 @@
 
 
     // $ANTLR start "ruleFeatureCallID"
-    // InternalPerspectiveDsl.g:1951:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:2001:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
     public final void ruleFeatureCallID() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1955:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1956:2: ( ( rule__FeatureCallID__Alternatives ) )
+            // InternalPerspectiveDsl.g:2005:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2006:2: ( ( rule__FeatureCallID__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1956:2: ( ( rule__FeatureCallID__Alternatives ) )
-            // InternalPerspectiveDsl.g:1957:3: ( rule__FeatureCallID__Alternatives )
+            // InternalPerspectiveDsl.g:2006:2: ( ( rule__FeatureCallID__Alternatives ) )
+            // InternalPerspectiveDsl.g:2007:3: ( rule__FeatureCallID__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1958:3: ( rule__FeatureCallID__Alternatives )
-            // InternalPerspectiveDsl.g:1958:4: rule__FeatureCallID__Alternatives
+            // InternalPerspectiveDsl.g:2008:3: ( rule__FeatureCallID__Alternatives )
+            // InternalPerspectiveDsl.g:2008:4: rule__FeatureCallID__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__FeatureCallID__Alternatives();
@@ -6603,11 +6777,11 @@
 
 
     // $ANTLR start "entryRuleIdOrSuper"
-    // InternalPerspectiveDsl.g:1967:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
+    // InternalPerspectiveDsl.g:2017:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
     public final void entryRuleIdOrSuper() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1968:1: ( ruleIdOrSuper EOF )
-            // InternalPerspectiveDsl.g:1969:1: ruleIdOrSuper EOF
+            // InternalPerspectiveDsl.g:2018:1: ( ruleIdOrSuper EOF )
+            // InternalPerspectiveDsl.g:2019:1: ruleIdOrSuper EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIdOrSuperRule()); 
@@ -6637,23 +6811,23 @@
 
 
     // $ANTLR start "ruleIdOrSuper"
-    // InternalPerspectiveDsl.g:1976:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:2026:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
     public final void ruleIdOrSuper() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1980:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1981:2: ( ( rule__IdOrSuper__Alternatives ) )
+            // InternalPerspectiveDsl.g:2030:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2031:2: ( ( rule__IdOrSuper__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1981:2: ( ( rule__IdOrSuper__Alternatives ) )
-            // InternalPerspectiveDsl.g:1982:3: ( rule__IdOrSuper__Alternatives )
+            // InternalPerspectiveDsl.g:2031:2: ( ( rule__IdOrSuper__Alternatives ) )
+            // InternalPerspectiveDsl.g:2032:3: ( rule__IdOrSuper__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIdOrSuperAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1983:3: ( rule__IdOrSuper__Alternatives )
-            // InternalPerspectiveDsl.g:1983:4: rule__IdOrSuper__Alternatives
+            // InternalPerspectiveDsl.g:2033:3: ( rule__IdOrSuper__Alternatives )
+            // InternalPerspectiveDsl.g:2033:4: rule__IdOrSuper__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__IdOrSuper__Alternatives();
@@ -6688,11 +6862,11 @@
 
 
     // $ANTLR start "entryRuleXConstructorCall"
-    // InternalPerspectiveDsl.g:1992:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
+    // InternalPerspectiveDsl.g:2042:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
     public final void entryRuleXConstructorCall() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1993:1: ( ruleXConstructorCall EOF )
-            // InternalPerspectiveDsl.g:1994:1: ruleXConstructorCall EOF
+            // InternalPerspectiveDsl.g:2043:1: ( ruleXConstructorCall EOF )
+            // InternalPerspectiveDsl.g:2044:1: ruleXConstructorCall EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallRule()); 
@@ -6722,23 +6896,23 @@
 
 
     // $ANTLR start "ruleXConstructorCall"
-    // InternalPerspectiveDsl.g:2001:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2051:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
     public final void ruleXConstructorCall() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2005:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2006:2: ( ( rule__XConstructorCall__Group__0 ) )
+            // InternalPerspectiveDsl.g:2055:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2056:2: ( ( rule__XConstructorCall__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2006:2: ( ( rule__XConstructorCall__Group__0 ) )
-            // InternalPerspectiveDsl.g:2007:3: ( rule__XConstructorCall__Group__0 )
+            // InternalPerspectiveDsl.g:2056:2: ( ( rule__XConstructorCall__Group__0 ) )
+            // InternalPerspectiveDsl.g:2057:3: ( rule__XConstructorCall__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2008:3: ( rule__XConstructorCall__Group__0 )
-            // InternalPerspectiveDsl.g:2008:4: rule__XConstructorCall__Group__0
+            // InternalPerspectiveDsl.g:2058:3: ( rule__XConstructorCall__Group__0 )
+            // InternalPerspectiveDsl.g:2058:4: rule__XConstructorCall__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group__0();
@@ -6773,11 +6947,11 @@
 
 
     // $ANTLR start "entryRuleXBooleanLiteral"
-    // InternalPerspectiveDsl.g:2017:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
+    // InternalPerspectiveDsl.g:2067:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
     public final void entryRuleXBooleanLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2018:1: ( ruleXBooleanLiteral EOF )
-            // InternalPerspectiveDsl.g:2019:1: ruleXBooleanLiteral EOF
+            // InternalPerspectiveDsl.g:2068:1: ( ruleXBooleanLiteral EOF )
+            // InternalPerspectiveDsl.g:2069:1: ruleXBooleanLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralRule()); 
@@ -6807,23 +6981,23 @@
 
 
     // $ANTLR start "ruleXBooleanLiteral"
-    // InternalPerspectiveDsl.g:2026:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2076:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
     public final void ruleXBooleanLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2030:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2031:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2080:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2081:2: ( ( rule__XBooleanLiteral__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2031:2: ( ( rule__XBooleanLiteral__Group__0 ) )
-            // InternalPerspectiveDsl.g:2032:3: ( rule__XBooleanLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2081:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2082:3: ( rule__XBooleanLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2033:3: ( rule__XBooleanLiteral__Group__0 )
-            // InternalPerspectiveDsl.g:2033:4: rule__XBooleanLiteral__Group__0
+            // InternalPerspectiveDsl.g:2083:3: ( rule__XBooleanLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2083:4: rule__XBooleanLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XBooleanLiteral__Group__0();
@@ -6858,11 +7032,11 @@
 
 
     // $ANTLR start "entryRuleXNullLiteral"
-    // InternalPerspectiveDsl.g:2042:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
+    // InternalPerspectiveDsl.g:2092:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
     public final void entryRuleXNullLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2043:1: ( ruleXNullLiteral EOF )
-            // InternalPerspectiveDsl.g:2044:1: ruleXNullLiteral EOF
+            // InternalPerspectiveDsl.g:2093:1: ( ruleXNullLiteral EOF )
+            // InternalPerspectiveDsl.g:2094:1: ruleXNullLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralRule()); 
@@ -6892,23 +7066,23 @@
 
 
     // $ANTLR start "ruleXNullLiteral"
-    // InternalPerspectiveDsl.g:2051:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2101:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
     public final void ruleXNullLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2055:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2056:2: ( ( rule__XNullLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2105:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2106:2: ( ( rule__XNullLiteral__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2056:2: ( ( rule__XNullLiteral__Group__0 ) )
-            // InternalPerspectiveDsl.g:2057:3: ( rule__XNullLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2106:2: ( ( rule__XNullLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2107:3: ( rule__XNullLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2058:3: ( rule__XNullLiteral__Group__0 )
-            // InternalPerspectiveDsl.g:2058:4: rule__XNullLiteral__Group__0
+            // InternalPerspectiveDsl.g:2108:3: ( rule__XNullLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2108:4: rule__XNullLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XNullLiteral__Group__0();
@@ -6943,11 +7117,11 @@
 
 
     // $ANTLR start "entryRuleXNumberLiteral"
-    // InternalPerspectiveDsl.g:2067:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
+    // InternalPerspectiveDsl.g:2117:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
     public final void entryRuleXNumberLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2068:1: ( ruleXNumberLiteral EOF )
-            // InternalPerspectiveDsl.g:2069:1: ruleXNumberLiteral EOF
+            // InternalPerspectiveDsl.g:2118:1: ( ruleXNumberLiteral EOF )
+            // InternalPerspectiveDsl.g:2119:1: ruleXNumberLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralRule()); 
@@ -6977,23 +7151,23 @@
 
 
     // $ANTLR start "ruleXNumberLiteral"
-    // InternalPerspectiveDsl.g:2076:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2126:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
     public final void ruleXNumberLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2080:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2081:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2130:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2131:2: ( ( rule__XNumberLiteral__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2081:2: ( ( rule__XNumberLiteral__Group__0 ) )
-            // InternalPerspectiveDsl.g:2082:3: ( rule__XNumberLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2131:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2132:3: ( rule__XNumberLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2083:3: ( rule__XNumberLiteral__Group__0 )
-            // InternalPerspectiveDsl.g:2083:4: rule__XNumberLiteral__Group__0
+            // InternalPerspectiveDsl.g:2133:3: ( rule__XNumberLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2133:4: rule__XNumberLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XNumberLiteral__Group__0();
@@ -7028,11 +7202,11 @@
 
 
     // $ANTLR start "entryRuleXStringLiteral"
-    // InternalPerspectiveDsl.g:2092:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
+    // InternalPerspectiveDsl.g:2142:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
     public final void entryRuleXStringLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2093:1: ( ruleXStringLiteral EOF )
-            // InternalPerspectiveDsl.g:2094:1: ruleXStringLiteral EOF
+            // InternalPerspectiveDsl.g:2143:1: ( ruleXStringLiteral EOF )
+            // InternalPerspectiveDsl.g:2144:1: ruleXStringLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralRule()); 
@@ -7062,23 +7236,23 @@
 
 
     // $ANTLR start "ruleXStringLiteral"
-    // InternalPerspectiveDsl.g:2101:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2151:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
     public final void ruleXStringLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2105:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2106:2: ( ( rule__XStringLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2155:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2156:2: ( ( rule__XStringLiteral__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2106:2: ( ( rule__XStringLiteral__Group__0 ) )
-            // InternalPerspectiveDsl.g:2107:3: ( rule__XStringLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2156:2: ( ( rule__XStringLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2157:3: ( rule__XStringLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2108:3: ( rule__XStringLiteral__Group__0 )
-            // InternalPerspectiveDsl.g:2108:4: rule__XStringLiteral__Group__0
+            // InternalPerspectiveDsl.g:2158:3: ( rule__XStringLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2158:4: rule__XStringLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XStringLiteral__Group__0();
@@ -7113,11 +7287,11 @@
 
 
     // $ANTLR start "entryRuleXTypeLiteral"
-    // InternalPerspectiveDsl.g:2117:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
+    // InternalPerspectiveDsl.g:2167:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
     public final void entryRuleXTypeLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2118:1: ( ruleXTypeLiteral EOF )
-            // InternalPerspectiveDsl.g:2119:1: ruleXTypeLiteral EOF
+            // InternalPerspectiveDsl.g:2168:1: ( ruleXTypeLiteral EOF )
+            // InternalPerspectiveDsl.g:2169:1: ruleXTypeLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralRule()); 
@@ -7147,23 +7321,23 @@
 
 
     // $ANTLR start "ruleXTypeLiteral"
-    // InternalPerspectiveDsl.g:2126:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2176:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
     public final void ruleXTypeLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2130:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2131:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2180:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2181:2: ( ( rule__XTypeLiteral__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2131:2: ( ( rule__XTypeLiteral__Group__0 ) )
-            // InternalPerspectiveDsl.g:2132:3: ( rule__XTypeLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2181:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2182:3: ( rule__XTypeLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2133:3: ( rule__XTypeLiteral__Group__0 )
-            // InternalPerspectiveDsl.g:2133:4: rule__XTypeLiteral__Group__0
+            // InternalPerspectiveDsl.g:2183:3: ( rule__XTypeLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2183:4: rule__XTypeLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XTypeLiteral__Group__0();
@@ -7198,11 +7372,11 @@
 
 
     // $ANTLR start "entryRuleXThrowExpression"
-    // InternalPerspectiveDsl.g:2142:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
+    // InternalPerspectiveDsl.g:2192:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
     public final void entryRuleXThrowExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2143:1: ( ruleXThrowExpression EOF )
-            // InternalPerspectiveDsl.g:2144:1: ruleXThrowExpression EOF
+            // InternalPerspectiveDsl.g:2193:1: ( ruleXThrowExpression EOF )
+            // InternalPerspectiveDsl.g:2194:1: ruleXThrowExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionRule()); 
@@ -7232,23 +7406,23 @@
 
 
     // $ANTLR start "ruleXThrowExpression"
-    // InternalPerspectiveDsl.g:2151:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2201:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
     public final void ruleXThrowExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2155:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2156:2: ( ( rule__XThrowExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2205:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2206:2: ( ( rule__XThrowExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2156:2: ( ( rule__XThrowExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:2157:3: ( rule__XThrowExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2206:2: ( ( rule__XThrowExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2207:3: ( rule__XThrowExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2158:3: ( rule__XThrowExpression__Group__0 )
-            // InternalPerspectiveDsl.g:2158:4: rule__XThrowExpression__Group__0
+            // InternalPerspectiveDsl.g:2208:3: ( rule__XThrowExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2208:4: rule__XThrowExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XThrowExpression__Group__0();
@@ -7283,11 +7457,11 @@
 
 
     // $ANTLR start "entryRuleXReturnExpression"
-    // InternalPerspectiveDsl.g:2167:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
+    // InternalPerspectiveDsl.g:2217:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
     public final void entryRuleXReturnExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2168:1: ( ruleXReturnExpression EOF )
-            // InternalPerspectiveDsl.g:2169:1: ruleXReturnExpression EOF
+            // InternalPerspectiveDsl.g:2218:1: ( ruleXReturnExpression EOF )
+            // InternalPerspectiveDsl.g:2219:1: ruleXReturnExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionRule()); 
@@ -7317,23 +7491,23 @@
 
 
     // $ANTLR start "ruleXReturnExpression"
-    // InternalPerspectiveDsl.g:2176:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2226:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
     public final void ruleXReturnExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2180:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2181:2: ( ( rule__XReturnExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2230:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2231:2: ( ( rule__XReturnExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2181:2: ( ( rule__XReturnExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:2182:3: ( rule__XReturnExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2231:2: ( ( rule__XReturnExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2232:3: ( rule__XReturnExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2183:3: ( rule__XReturnExpression__Group__0 )
-            // InternalPerspectiveDsl.g:2183:4: rule__XReturnExpression__Group__0
+            // InternalPerspectiveDsl.g:2233:3: ( rule__XReturnExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2233:4: rule__XReturnExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XReturnExpression__Group__0();
@@ -7368,11 +7542,11 @@
 
 
     // $ANTLR start "entryRuleXTryCatchFinallyExpression"
-    // InternalPerspectiveDsl.g:2192:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
+    // InternalPerspectiveDsl.g:2242:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
     public final void entryRuleXTryCatchFinallyExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2193:1: ( ruleXTryCatchFinallyExpression EOF )
-            // InternalPerspectiveDsl.g:2194:1: ruleXTryCatchFinallyExpression EOF
+            // InternalPerspectiveDsl.g:2243:1: ( ruleXTryCatchFinallyExpression EOF )
+            // InternalPerspectiveDsl.g:2244:1: ruleXTryCatchFinallyExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionRule()); 
@@ -7402,23 +7576,23 @@
 
 
     // $ANTLR start "ruleXTryCatchFinallyExpression"
-    // InternalPerspectiveDsl.g:2201:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2251:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
     public final void ruleXTryCatchFinallyExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2205:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2206:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2255:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2256:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2206:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:2207:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2256:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2257:3: ( rule__XTryCatchFinallyExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2208:3: ( rule__XTryCatchFinallyExpression__Group__0 )
-            // InternalPerspectiveDsl.g:2208:4: rule__XTryCatchFinallyExpression__Group__0
+            // InternalPerspectiveDsl.g:2258:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2258:4: rule__XTryCatchFinallyExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group__0();
@@ -7453,11 +7627,11 @@
 
 
     // $ANTLR start "entryRuleXSynchronizedExpression"
-    // InternalPerspectiveDsl.g:2217:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
+    // InternalPerspectiveDsl.g:2267:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
     public final void entryRuleXSynchronizedExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2218:1: ( ruleXSynchronizedExpression EOF )
-            // InternalPerspectiveDsl.g:2219:1: ruleXSynchronizedExpression EOF
+            // InternalPerspectiveDsl.g:2268:1: ( ruleXSynchronizedExpression EOF )
+            // InternalPerspectiveDsl.g:2269:1: ruleXSynchronizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionRule()); 
@@ -7487,23 +7661,23 @@
 
 
     // $ANTLR start "ruleXSynchronizedExpression"
-    // InternalPerspectiveDsl.g:2226:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2276:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
     public final void ruleXSynchronizedExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2230:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2231:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2280:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2281:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2231:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:2232:3: ( rule__XSynchronizedExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2281:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2282:3: ( rule__XSynchronizedExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2233:3: ( rule__XSynchronizedExpression__Group__0 )
-            // InternalPerspectiveDsl.g:2233:4: rule__XSynchronizedExpression__Group__0
+            // InternalPerspectiveDsl.g:2283:3: ( rule__XSynchronizedExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2283:4: rule__XSynchronizedExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group__0();
@@ -7538,11 +7712,11 @@
 
 
     // $ANTLR start "entryRuleXCatchClause"
-    // InternalPerspectiveDsl.g:2242:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
+    // InternalPerspectiveDsl.g:2292:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
     public final void entryRuleXCatchClause() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2243:1: ( ruleXCatchClause EOF )
-            // InternalPerspectiveDsl.g:2244:1: ruleXCatchClause EOF
+            // InternalPerspectiveDsl.g:2293:1: ( ruleXCatchClause EOF )
+            // InternalPerspectiveDsl.g:2294:1: ruleXCatchClause EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseRule()); 
@@ -7572,23 +7746,23 @@
 
 
     // $ANTLR start "ruleXCatchClause"
-    // InternalPerspectiveDsl.g:2251:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2301:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
     public final void ruleXCatchClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2255:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2256:2: ( ( rule__XCatchClause__Group__0 ) )
+            // InternalPerspectiveDsl.g:2305:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2306:2: ( ( rule__XCatchClause__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2256:2: ( ( rule__XCatchClause__Group__0 ) )
-            // InternalPerspectiveDsl.g:2257:3: ( rule__XCatchClause__Group__0 )
+            // InternalPerspectiveDsl.g:2306:2: ( ( rule__XCatchClause__Group__0 ) )
+            // InternalPerspectiveDsl.g:2307:3: ( rule__XCatchClause__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2258:3: ( rule__XCatchClause__Group__0 )
-            // InternalPerspectiveDsl.g:2258:4: rule__XCatchClause__Group__0
+            // InternalPerspectiveDsl.g:2308:3: ( rule__XCatchClause__Group__0 )
+            // InternalPerspectiveDsl.g:2308:4: rule__XCatchClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__Group__0();
@@ -7623,11 +7797,11 @@
 
 
     // $ANTLR start "entryRuleQualifiedName"
-    // InternalPerspectiveDsl.g:2267:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
+    // InternalPerspectiveDsl.g:2317:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
     public final void entryRuleQualifiedName() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2268:1: ( ruleQualifiedName EOF )
-            // InternalPerspectiveDsl.g:2269:1: ruleQualifiedName EOF
+            // InternalPerspectiveDsl.g:2318:1: ( ruleQualifiedName EOF )
+            // InternalPerspectiveDsl.g:2319:1: ruleQualifiedName EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameRule()); 
@@ -7657,23 +7831,23 @@
 
 
     // $ANTLR start "ruleQualifiedName"
-    // InternalPerspectiveDsl.g:2276:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2326:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
     public final void ruleQualifiedName() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2280:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2281:2: ( ( rule__QualifiedName__Group__0 ) )
+            // InternalPerspectiveDsl.g:2330:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2331:2: ( ( rule__QualifiedName__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2281:2: ( ( rule__QualifiedName__Group__0 ) )
-            // InternalPerspectiveDsl.g:2282:3: ( rule__QualifiedName__Group__0 )
+            // InternalPerspectiveDsl.g:2331:2: ( ( rule__QualifiedName__Group__0 ) )
+            // InternalPerspectiveDsl.g:2332:3: ( rule__QualifiedName__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2283:3: ( rule__QualifiedName__Group__0 )
-            // InternalPerspectiveDsl.g:2283:4: rule__QualifiedName__Group__0
+            // InternalPerspectiveDsl.g:2333:3: ( rule__QualifiedName__Group__0 )
+            // InternalPerspectiveDsl.g:2333:4: rule__QualifiedName__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedName__Group__0();
@@ -7708,14 +7882,14 @@
 
 
     // $ANTLR start "entryRuleNumber"
-    // InternalPerspectiveDsl.g:2292:1: entryRuleNumber : ruleNumber EOF ;
+    // InternalPerspectiveDsl.g:2342:1: entryRuleNumber : ruleNumber EOF ;
     public final void entryRuleNumber() throws RecognitionException {
          
         	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
 
         try {
-            // InternalPerspectiveDsl.g:2296:1: ( ruleNumber EOF )
-            // InternalPerspectiveDsl.g:2297:1: ruleNumber EOF
+            // InternalPerspectiveDsl.g:2346:1: ( ruleNumber EOF )
+            // InternalPerspectiveDsl.g:2347:1: ruleNumber EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberRule()); 
@@ -7748,24 +7922,24 @@
 
 
     // $ANTLR start "ruleNumber"
-    // InternalPerspectiveDsl.g:2307:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:2357:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
     public final void ruleNumber() throws RecognitionException {
 
         		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2312:2: ( ( ( rule__Number__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:2313:2: ( ( rule__Number__Alternatives ) )
+            // InternalPerspectiveDsl.g:2362:2: ( ( ( rule__Number__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2363:2: ( ( rule__Number__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:2313:2: ( ( rule__Number__Alternatives ) )
-            // InternalPerspectiveDsl.g:2314:3: ( rule__Number__Alternatives )
+            // InternalPerspectiveDsl.g:2363:2: ( ( rule__Number__Alternatives ) )
+            // InternalPerspectiveDsl.g:2364:3: ( rule__Number__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:2315:3: ( rule__Number__Alternatives )
-            // InternalPerspectiveDsl.g:2315:4: rule__Number__Alternatives
+            // InternalPerspectiveDsl.g:2365:3: ( rule__Number__Alternatives )
+            // InternalPerspectiveDsl.g:2365:4: rule__Number__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__Number__Alternatives();
@@ -7801,11 +7975,11 @@
 
 
     // $ANTLR start "entryRuleJvmTypeReference"
-    // InternalPerspectiveDsl.g:2325:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
+    // InternalPerspectiveDsl.g:2375:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
     public final void entryRuleJvmTypeReference() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2326:1: ( ruleJvmTypeReference EOF )
-            // InternalPerspectiveDsl.g:2327:1: ruleJvmTypeReference EOF
+            // InternalPerspectiveDsl.g:2376:1: ( ruleJvmTypeReference EOF )
+            // InternalPerspectiveDsl.g:2377:1: ruleJvmTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceRule()); 
@@ -7835,23 +8009,23 @@
 
 
     // $ANTLR start "ruleJvmTypeReference"
-    // InternalPerspectiveDsl.g:2334:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:2384:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
     public final void ruleJvmTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2338:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:2339:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            // InternalPerspectiveDsl.g:2388:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2389:2: ( ( rule__JvmTypeReference__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:2339:2: ( ( rule__JvmTypeReference__Alternatives ) )
-            // InternalPerspectiveDsl.g:2340:3: ( rule__JvmTypeReference__Alternatives )
+            // InternalPerspectiveDsl.g:2389:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            // InternalPerspectiveDsl.g:2390:3: ( rule__JvmTypeReference__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:2341:3: ( rule__JvmTypeReference__Alternatives )
-            // InternalPerspectiveDsl.g:2341:4: rule__JvmTypeReference__Alternatives
+            // InternalPerspectiveDsl.g:2391:3: ( rule__JvmTypeReference__Alternatives )
+            // InternalPerspectiveDsl.g:2391:4: rule__JvmTypeReference__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Alternatives();
@@ -7886,11 +8060,11 @@
 
 
     // $ANTLR start "entryRuleArrayBrackets"
-    // InternalPerspectiveDsl.g:2350:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
+    // InternalPerspectiveDsl.g:2400:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
     public final void entryRuleArrayBrackets() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2351:1: ( ruleArrayBrackets EOF )
-            // InternalPerspectiveDsl.g:2352:1: ruleArrayBrackets EOF
+            // InternalPerspectiveDsl.g:2401:1: ( ruleArrayBrackets EOF )
+            // InternalPerspectiveDsl.g:2402:1: ruleArrayBrackets EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsRule()); 
@@ -7920,23 +8094,23 @@
 
 
     // $ANTLR start "ruleArrayBrackets"
-    // InternalPerspectiveDsl.g:2359:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2409:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
     public final void ruleArrayBrackets() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2363:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2364:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            // InternalPerspectiveDsl.g:2413:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2414:2: ( ( rule__ArrayBrackets__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2364:2: ( ( rule__ArrayBrackets__Group__0 ) )
-            // InternalPerspectiveDsl.g:2365:3: ( rule__ArrayBrackets__Group__0 )
+            // InternalPerspectiveDsl.g:2414:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            // InternalPerspectiveDsl.g:2415:3: ( rule__ArrayBrackets__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2366:3: ( rule__ArrayBrackets__Group__0 )
-            // InternalPerspectiveDsl.g:2366:4: rule__ArrayBrackets__Group__0
+            // InternalPerspectiveDsl.g:2416:3: ( rule__ArrayBrackets__Group__0 )
+            // InternalPerspectiveDsl.g:2416:4: rule__ArrayBrackets__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ArrayBrackets__Group__0();
@@ -7971,11 +8145,11 @@
 
 
     // $ANTLR start "entryRuleXFunctionTypeRef"
-    // InternalPerspectiveDsl.g:2375:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
+    // InternalPerspectiveDsl.g:2425:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
     public final void entryRuleXFunctionTypeRef() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2376:1: ( ruleXFunctionTypeRef EOF )
-            // InternalPerspectiveDsl.g:2377:1: ruleXFunctionTypeRef EOF
+            // InternalPerspectiveDsl.g:2426:1: ( ruleXFunctionTypeRef EOF )
+            // InternalPerspectiveDsl.g:2427:1: ruleXFunctionTypeRef EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefRule()); 
@@ -8005,23 +8179,23 @@
 
 
     // $ANTLR start "ruleXFunctionTypeRef"
-    // InternalPerspectiveDsl.g:2384:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2434:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
     public final void ruleXFunctionTypeRef() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2388:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2389:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // InternalPerspectiveDsl.g:2438:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2439:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2389:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
-            // InternalPerspectiveDsl.g:2390:3: ( rule__XFunctionTypeRef__Group__0 )
+            // InternalPerspectiveDsl.g:2439:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // InternalPerspectiveDsl.g:2440:3: ( rule__XFunctionTypeRef__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2391:3: ( rule__XFunctionTypeRef__Group__0 )
-            // InternalPerspectiveDsl.g:2391:4: rule__XFunctionTypeRef__Group__0
+            // InternalPerspectiveDsl.g:2441:3: ( rule__XFunctionTypeRef__Group__0 )
+            // InternalPerspectiveDsl.g:2441:4: rule__XFunctionTypeRef__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group__0();
@@ -8056,11 +8230,11 @@
 
 
     // $ANTLR start "entryRuleJvmParameterizedTypeReference"
-    // InternalPerspectiveDsl.g:2400:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
+    // InternalPerspectiveDsl.g:2450:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
     public final void entryRuleJvmParameterizedTypeReference() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2401:1: ( ruleJvmParameterizedTypeReference EOF )
-            // InternalPerspectiveDsl.g:2402:1: ruleJvmParameterizedTypeReference EOF
+            // InternalPerspectiveDsl.g:2451:1: ( ruleJvmParameterizedTypeReference EOF )
+            // InternalPerspectiveDsl.g:2452:1: ruleJvmParameterizedTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
@@ -8090,23 +8264,23 @@
 
 
     // $ANTLR start "ruleJvmParameterizedTypeReference"
-    // InternalPerspectiveDsl.g:2409:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2459:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
     public final void ruleJvmParameterizedTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2413:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2414:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // InternalPerspectiveDsl.g:2463:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2464:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2414:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
-            // InternalPerspectiveDsl.g:2415:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // InternalPerspectiveDsl.g:2464:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // InternalPerspectiveDsl.g:2465:3: ( rule__JvmParameterizedTypeReference__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2416:3: ( rule__JvmParameterizedTypeReference__Group__0 )
-            // InternalPerspectiveDsl.g:2416:4: rule__JvmParameterizedTypeReference__Group__0
+            // InternalPerspectiveDsl.g:2466:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // InternalPerspectiveDsl.g:2466:4: rule__JvmParameterizedTypeReference__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group__0();
@@ -8141,11 +8315,11 @@
 
 
     // $ANTLR start "entryRuleJvmArgumentTypeReference"
-    // InternalPerspectiveDsl.g:2425:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
+    // InternalPerspectiveDsl.g:2475:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
     public final void entryRuleJvmArgumentTypeReference() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2426:1: ( ruleJvmArgumentTypeReference EOF )
-            // InternalPerspectiveDsl.g:2427:1: ruleJvmArgumentTypeReference EOF
+            // InternalPerspectiveDsl.g:2476:1: ( ruleJvmArgumentTypeReference EOF )
+            // InternalPerspectiveDsl.g:2477:1: ruleJvmArgumentTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmArgumentTypeReferenceRule()); 
@@ -8175,23 +8349,23 @@
 
 
     // $ANTLR start "ruleJvmArgumentTypeReference"
-    // InternalPerspectiveDsl.g:2434:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:2484:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
     public final void ruleJvmArgumentTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2438:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:2439:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // InternalPerspectiveDsl.g:2488:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2489:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:2439:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
-            // InternalPerspectiveDsl.g:2440:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            // InternalPerspectiveDsl.g:2489:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // InternalPerspectiveDsl.g:2490:3: ( rule__JvmArgumentTypeReference__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:2441:3: ( rule__JvmArgumentTypeReference__Alternatives )
-            // InternalPerspectiveDsl.g:2441:4: rule__JvmArgumentTypeReference__Alternatives
+            // InternalPerspectiveDsl.g:2491:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            // InternalPerspectiveDsl.g:2491:4: rule__JvmArgumentTypeReference__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__JvmArgumentTypeReference__Alternatives();
@@ -8226,11 +8400,11 @@
 
 
     // $ANTLR start "entryRuleJvmWildcardTypeReference"
-    // InternalPerspectiveDsl.g:2450:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
+    // InternalPerspectiveDsl.g:2500:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
     public final void entryRuleJvmWildcardTypeReference() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2451:1: ( ruleJvmWildcardTypeReference EOF )
-            // InternalPerspectiveDsl.g:2452:1: ruleJvmWildcardTypeReference EOF
+            // InternalPerspectiveDsl.g:2501:1: ( ruleJvmWildcardTypeReference EOF )
+            // InternalPerspectiveDsl.g:2502:1: ruleJvmWildcardTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceRule()); 
@@ -8260,23 +8434,23 @@
 
 
     // $ANTLR start "ruleJvmWildcardTypeReference"
-    // InternalPerspectiveDsl.g:2459:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2509:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
     public final void ruleJvmWildcardTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2463:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2464:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // InternalPerspectiveDsl.g:2513:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2514:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2464:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
-            // InternalPerspectiveDsl.g:2465:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            // InternalPerspectiveDsl.g:2514:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // InternalPerspectiveDsl.g:2515:3: ( rule__JvmWildcardTypeReference__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2466:3: ( rule__JvmWildcardTypeReference__Group__0 )
-            // InternalPerspectiveDsl.g:2466:4: rule__JvmWildcardTypeReference__Group__0
+            // InternalPerspectiveDsl.g:2516:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            // InternalPerspectiveDsl.g:2516:4: rule__JvmWildcardTypeReference__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group__0();
@@ -8311,11 +8485,11 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBound"
-    // InternalPerspectiveDsl.g:2475:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
+    // InternalPerspectiveDsl.g:2525:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
     public final void entryRuleJvmUpperBound() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2476:1: ( ruleJvmUpperBound EOF )
-            // InternalPerspectiveDsl.g:2477:1: ruleJvmUpperBound EOF
+            // InternalPerspectiveDsl.g:2526:1: ( ruleJvmUpperBound EOF )
+            // InternalPerspectiveDsl.g:2527:1: ruleJvmUpperBound EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundRule()); 
@@ -8345,23 +8519,23 @@
 
 
     // $ANTLR start "ruleJvmUpperBound"
-    // InternalPerspectiveDsl.g:2484:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2534:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
     public final void ruleJvmUpperBound() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2488:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2489:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            // InternalPerspectiveDsl.g:2538:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2539:2: ( ( rule__JvmUpperBound__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2489:2: ( ( rule__JvmUpperBound__Group__0 ) )
-            // InternalPerspectiveDsl.g:2490:3: ( rule__JvmUpperBound__Group__0 )
+            // InternalPerspectiveDsl.g:2539:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            // InternalPerspectiveDsl.g:2540:3: ( rule__JvmUpperBound__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2491:3: ( rule__JvmUpperBound__Group__0 )
-            // InternalPerspectiveDsl.g:2491:4: rule__JvmUpperBound__Group__0
+            // InternalPerspectiveDsl.g:2541:3: ( rule__JvmUpperBound__Group__0 )
+            // InternalPerspectiveDsl.g:2541:4: rule__JvmUpperBound__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBound__Group__0();
@@ -8396,11 +8570,11 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBoundAnded"
-    // InternalPerspectiveDsl.g:2500:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
+    // InternalPerspectiveDsl.g:2550:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
     public final void entryRuleJvmUpperBoundAnded() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2501:1: ( ruleJvmUpperBoundAnded EOF )
-            // InternalPerspectiveDsl.g:2502:1: ruleJvmUpperBoundAnded EOF
+            // InternalPerspectiveDsl.g:2551:1: ( ruleJvmUpperBoundAnded EOF )
+            // InternalPerspectiveDsl.g:2552:1: ruleJvmUpperBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedRule()); 
@@ -8430,23 +8604,23 @@
 
 
     // $ANTLR start "ruleJvmUpperBoundAnded"
-    // InternalPerspectiveDsl.g:2509:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2559:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
     public final void ruleJvmUpperBoundAnded() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2513:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2514:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // InternalPerspectiveDsl.g:2563:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2564:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2514:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
-            // InternalPerspectiveDsl.g:2515:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            // InternalPerspectiveDsl.g:2564:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // InternalPerspectiveDsl.g:2565:3: ( rule__JvmUpperBoundAnded__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2516:3: ( rule__JvmUpperBoundAnded__Group__0 )
-            // InternalPerspectiveDsl.g:2516:4: rule__JvmUpperBoundAnded__Group__0
+            // InternalPerspectiveDsl.g:2566:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            // InternalPerspectiveDsl.g:2566:4: rule__JvmUpperBoundAnded__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBoundAnded__Group__0();
@@ -8481,11 +8655,11 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBound"
-    // InternalPerspectiveDsl.g:2525:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
+    // InternalPerspectiveDsl.g:2575:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
     public final void entryRuleJvmLowerBound() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2526:1: ( ruleJvmLowerBound EOF )
-            // InternalPerspectiveDsl.g:2527:1: ruleJvmLowerBound EOF
+            // InternalPerspectiveDsl.g:2576:1: ( ruleJvmLowerBound EOF )
+            // InternalPerspectiveDsl.g:2577:1: ruleJvmLowerBound EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundRule()); 
@@ -8515,23 +8689,23 @@
 
 
     // $ANTLR start "ruleJvmLowerBound"
-    // InternalPerspectiveDsl.g:2534:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2584:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
     public final void ruleJvmLowerBound() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2538:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2539:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            // InternalPerspectiveDsl.g:2588:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2589:2: ( ( rule__JvmLowerBound__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2539:2: ( ( rule__JvmLowerBound__Group__0 ) )
-            // InternalPerspectiveDsl.g:2540:3: ( rule__JvmLowerBound__Group__0 )
+            // InternalPerspectiveDsl.g:2589:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            // InternalPerspectiveDsl.g:2590:3: ( rule__JvmLowerBound__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2541:3: ( rule__JvmLowerBound__Group__0 )
-            // InternalPerspectiveDsl.g:2541:4: rule__JvmLowerBound__Group__0
+            // InternalPerspectiveDsl.g:2591:3: ( rule__JvmLowerBound__Group__0 )
+            // InternalPerspectiveDsl.g:2591:4: rule__JvmLowerBound__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBound__Group__0();
@@ -8566,11 +8740,11 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBoundAnded"
-    // InternalPerspectiveDsl.g:2550:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
+    // InternalPerspectiveDsl.g:2600:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
     public final void entryRuleJvmLowerBoundAnded() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2551:1: ( ruleJvmLowerBoundAnded EOF )
-            // InternalPerspectiveDsl.g:2552:1: ruleJvmLowerBoundAnded EOF
+            // InternalPerspectiveDsl.g:2601:1: ( ruleJvmLowerBoundAnded EOF )
+            // InternalPerspectiveDsl.g:2602:1: ruleJvmLowerBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedRule()); 
@@ -8600,23 +8774,23 @@
 
 
     // $ANTLR start "ruleJvmLowerBoundAnded"
-    // InternalPerspectiveDsl.g:2559:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2609:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
     public final void ruleJvmLowerBoundAnded() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2563:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2564:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // InternalPerspectiveDsl.g:2613:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2614:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2564:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
-            // InternalPerspectiveDsl.g:2565:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            // InternalPerspectiveDsl.g:2614:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // InternalPerspectiveDsl.g:2615:3: ( rule__JvmLowerBoundAnded__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2566:3: ( rule__JvmLowerBoundAnded__Group__0 )
-            // InternalPerspectiveDsl.g:2566:4: rule__JvmLowerBoundAnded__Group__0
+            // InternalPerspectiveDsl.g:2616:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            // InternalPerspectiveDsl.g:2616:4: rule__JvmLowerBoundAnded__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBoundAnded__Group__0();
@@ -8651,11 +8825,11 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameWithWildcard"
-    // InternalPerspectiveDsl.g:2575:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
+    // InternalPerspectiveDsl.g:2625:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
     public final void entryRuleQualifiedNameWithWildcard() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2576:1: ( ruleQualifiedNameWithWildcard EOF )
-            // InternalPerspectiveDsl.g:2577:1: ruleQualifiedNameWithWildcard EOF
+            // InternalPerspectiveDsl.g:2626:1: ( ruleQualifiedNameWithWildcard EOF )
+            // InternalPerspectiveDsl.g:2627:1: ruleQualifiedNameWithWildcard EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardRule()); 
@@ -8685,23 +8859,23 @@
 
 
     // $ANTLR start "ruleQualifiedNameWithWildcard"
-    // InternalPerspectiveDsl.g:2584:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2634:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
     public final void ruleQualifiedNameWithWildcard() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2588:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2589:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // InternalPerspectiveDsl.g:2638:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2639:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2589:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
-            // InternalPerspectiveDsl.g:2590:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // InternalPerspectiveDsl.g:2639:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // InternalPerspectiveDsl.g:2640:3: ( rule__QualifiedNameWithWildcard__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2591:3: ( rule__QualifiedNameWithWildcard__Group__0 )
-            // InternalPerspectiveDsl.g:2591:4: rule__QualifiedNameWithWildcard__Group__0
+            // InternalPerspectiveDsl.g:2641:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // InternalPerspectiveDsl.g:2641:4: rule__QualifiedNameWithWildcard__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedNameWithWildcard__Group__0();
@@ -8736,11 +8910,11 @@
 
 
     // $ANTLR start "entryRuleValidID"
-    // InternalPerspectiveDsl.g:2600:1: entryRuleValidID : ruleValidID EOF ;
+    // InternalPerspectiveDsl.g:2650:1: entryRuleValidID : ruleValidID EOF ;
     public final void entryRuleValidID() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2601:1: ( ruleValidID EOF )
-            // InternalPerspectiveDsl.g:2602:1: ruleValidID EOF
+            // InternalPerspectiveDsl.g:2651:1: ( ruleValidID EOF )
+            // InternalPerspectiveDsl.g:2652:1: ruleValidID EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getValidIDRule()); 
@@ -8770,17 +8944,17 @@
 
 
     // $ANTLR start "ruleValidID"
-    // InternalPerspectiveDsl.g:2609:1: ruleValidID : ( RULE_ID ) ;
+    // InternalPerspectiveDsl.g:2659:1: ruleValidID : ( RULE_ID ) ;
     public final void ruleValidID() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2613:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:2614:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:2663:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:2664:2: ( RULE_ID )
             {
-            // InternalPerspectiveDsl.g:2614:2: ( RULE_ID )
-            // InternalPerspectiveDsl.g:2615:3: RULE_ID
+            // InternalPerspectiveDsl.g:2664:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:2665:3: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
@@ -8811,11 +8985,11 @@
 
 
     // $ANTLR start "entryRuleXImportSection"
-    // InternalPerspectiveDsl.g:2625:1: entryRuleXImportSection : ruleXImportSection EOF ;
+    // InternalPerspectiveDsl.g:2675:1: entryRuleXImportSection : ruleXImportSection EOF ;
     public final void entryRuleXImportSection() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2626:1: ( ruleXImportSection EOF )
-            // InternalPerspectiveDsl.g:2627:1: ruleXImportSection EOF
+            // InternalPerspectiveDsl.g:2676:1: ( ruleXImportSection EOF )
+            // InternalPerspectiveDsl.g:2677:1: ruleXImportSection EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionRule()); 
@@ -8845,26 +9019,26 @@
 
 
     // $ANTLR start "ruleXImportSection"
-    // InternalPerspectiveDsl.g:2634:1: ruleXImportSection : ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) ;
+    // InternalPerspectiveDsl.g:2684:1: ruleXImportSection : ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) ;
     public final void ruleXImportSection() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2638:2: ( ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) )
-            // InternalPerspectiveDsl.g:2639:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            // InternalPerspectiveDsl.g:2688:2: ( ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) )
+            // InternalPerspectiveDsl.g:2689:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
             {
-            // InternalPerspectiveDsl.g:2639:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
-            // InternalPerspectiveDsl.g:2640:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            // InternalPerspectiveDsl.g:2689:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            // InternalPerspectiveDsl.g:2690:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
             {
-            // InternalPerspectiveDsl.g:2640:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) )
-            // InternalPerspectiveDsl.g:2641:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            // InternalPerspectiveDsl.g:2690:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) )
+            // InternalPerspectiveDsl.g:2691:4: ( rule__XImportSection__ImportDeclarationsAssignment )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
             }
-            // InternalPerspectiveDsl.g:2642:4: ( rule__XImportSection__ImportDeclarationsAssignment )
-            // InternalPerspectiveDsl.g:2642:5: rule__XImportSection__ImportDeclarationsAssignment
+            // InternalPerspectiveDsl.g:2692:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            // InternalPerspectiveDsl.g:2692:5: rule__XImportSection__ImportDeclarationsAssignment
             {
             pushFollow(FOLLOW_3);
             rule__XImportSection__ImportDeclarationsAssignment();
@@ -8880,13 +9054,13 @@
 
             }
 
-            // InternalPerspectiveDsl.g:2645:3: ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
-            // InternalPerspectiveDsl.g:2646:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            // InternalPerspectiveDsl.g:2695:3: ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            // InternalPerspectiveDsl.g:2696:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
             }
-            // InternalPerspectiveDsl.g:2647:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            // InternalPerspectiveDsl.g:2697:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
             loop1:
             do {
                 int alt1=2;
@@ -8899,7 +9073,7 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:2647:5: rule__XImportSection__ImportDeclarationsAssignment
+            	    // InternalPerspectiveDsl.g:2697:5: rule__XImportSection__ImportDeclarationsAssignment
             	    {
             	    pushFollow(FOLLOW_3);
             	    rule__XImportSection__ImportDeclarationsAssignment();
@@ -8943,11 +9117,11 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameInStaticImport"
-    // InternalPerspectiveDsl.g:2657:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
+    // InternalPerspectiveDsl.g:2707:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
     public final void entryRuleQualifiedNameInStaticImport() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2658:1: ( ruleQualifiedNameInStaticImport EOF )
-            // InternalPerspectiveDsl.g:2659:1: ruleQualifiedNameInStaticImport EOF
+            // InternalPerspectiveDsl.g:2708:1: ( ruleQualifiedNameInStaticImport EOF )
+            // InternalPerspectiveDsl.g:2709:1: ruleQualifiedNameInStaticImport EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportRule()); 
@@ -8977,26 +9151,26 @@
 
 
     // $ANTLR start "ruleQualifiedNameInStaticImport"
-    // InternalPerspectiveDsl.g:2666:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
+    // InternalPerspectiveDsl.g:2716:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
     public final void ruleQualifiedNameInStaticImport() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2670:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
-            // InternalPerspectiveDsl.g:2671:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // InternalPerspectiveDsl.g:2720:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
+            // InternalPerspectiveDsl.g:2721:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
             {
-            // InternalPerspectiveDsl.g:2671:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
-            // InternalPerspectiveDsl.g:2672:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // InternalPerspectiveDsl.g:2721:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // InternalPerspectiveDsl.g:2722:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
             {
-            // InternalPerspectiveDsl.g:2672:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
-            // InternalPerspectiveDsl.g:2673:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // InternalPerspectiveDsl.g:2722:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
+            // InternalPerspectiveDsl.g:2723:4: ( rule__QualifiedNameInStaticImport__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2674:4: ( rule__QualifiedNameInStaticImport__Group__0 )
-            // InternalPerspectiveDsl.g:2674:5: rule__QualifiedNameInStaticImport__Group__0
+            // InternalPerspectiveDsl.g:2724:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // InternalPerspectiveDsl.g:2724:5: rule__QualifiedNameInStaticImport__Group__0
             {
             pushFollow(FOLLOW_4);
             rule__QualifiedNameInStaticImport__Group__0();
@@ -9012,13 +9186,13 @@
 
             }
 
-            // InternalPerspectiveDsl.g:2677:3: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
-            // InternalPerspectiveDsl.g:2678:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            // InternalPerspectiveDsl.g:2727:3: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // InternalPerspectiveDsl.g:2728:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2679:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            // InternalPerspectiveDsl.g:2729:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
             loop2:
             do {
                 int alt2=2;
@@ -9037,7 +9211,7 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:2679:5: rule__QualifiedNameInStaticImport__Group__0
+            	    // InternalPerspectiveDsl.g:2729:5: rule__QualifiedNameInStaticImport__Group__0
             	    {
             	    pushFollow(FOLLOW_4);
             	    rule__QualifiedNameInStaticImport__Group__0();
@@ -9081,23 +9255,23 @@
 
 
     // $ANTLR start "ruleSashOrientation"
-    // InternalPerspectiveDsl.g:2689:1: ruleSashOrientation : ( ( rule__SashOrientation__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:2739:1: ruleSashOrientation : ( ( rule__SashOrientation__Alternatives ) ) ;
     public final void ruleSashOrientation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2693:1: ( ( ( rule__SashOrientation__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:2694:2: ( ( rule__SashOrientation__Alternatives ) )
+            // InternalPerspectiveDsl.g:2743:1: ( ( ( rule__SashOrientation__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2744:2: ( ( rule__SashOrientation__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:2694:2: ( ( rule__SashOrientation__Alternatives ) )
-            // InternalPerspectiveDsl.g:2695:3: ( rule__SashOrientation__Alternatives )
+            // InternalPerspectiveDsl.g:2744:2: ( ( rule__SashOrientation__Alternatives ) )
+            // InternalPerspectiveDsl.g:2745:3: ( rule__SashOrientation__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSashOrientationAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:2696:3: ( rule__SashOrientation__Alternatives )
-            // InternalPerspectiveDsl.g:2696:4: rule__SashOrientation__Alternatives
+            // InternalPerspectiveDsl.g:2746:3: ( rule__SashOrientation__Alternatives )
+            // InternalPerspectiveDsl.g:2746:4: rule__SashOrientation__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__SashOrientation__Alternatives();
@@ -9132,13 +9306,13 @@
 
 
     // $ANTLR start "rule__PerspectiveElement__Alternatives"
-    // InternalPerspectiveDsl.g:2704:1: rule__PerspectiveElement__Alternatives : ( ( rulePerspectiveSashContainer ) | ( rulePerspectivePartStack ) | ( rulePerspectivePart ) );
+    // InternalPerspectiveDsl.g:2754:1: rule__PerspectiveElement__Alternatives : ( ( rulePerspectiveSashContainer ) | ( rulePerspectivePartStack ) | ( rulePerspectivePart ) );
     public final void rule__PerspectiveElement__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2708:1: ( ( rulePerspectiveSashContainer ) | ( rulePerspectivePartStack ) | ( rulePerspectivePart ) )
+            // InternalPerspectiveDsl.g:2758:1: ( ( rulePerspectiveSashContainer ) | ( rulePerspectivePartStack ) | ( rulePerspectivePart ) )
             int alt3=3;
             switch ( input.LA(1) ) {
             case 62:
@@ -9166,10 +9340,10 @@
 
             switch (alt3) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2709:2: ( rulePerspectiveSashContainer )
+                    // InternalPerspectiveDsl.g:2759:2: ( rulePerspectiveSashContainer )
                     {
-                    // InternalPerspectiveDsl.g:2709:2: ( rulePerspectiveSashContainer )
-                    // InternalPerspectiveDsl.g:2710:3: rulePerspectiveSashContainer
+                    // InternalPerspectiveDsl.g:2759:2: ( rulePerspectiveSashContainer )
+                    // InternalPerspectiveDsl.g:2760:3: rulePerspectiveSashContainer
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveElementAccess().getPerspectiveSashContainerParserRuleCall_0()); 
@@ -9189,10 +9363,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2715:2: ( rulePerspectivePartStack )
+                    // InternalPerspectiveDsl.g:2765:2: ( rulePerspectivePartStack )
                     {
-                    // InternalPerspectiveDsl.g:2715:2: ( rulePerspectivePartStack )
-                    // InternalPerspectiveDsl.g:2716:3: rulePerspectivePartStack
+                    // InternalPerspectiveDsl.g:2765:2: ( rulePerspectivePartStack )
+                    // InternalPerspectiveDsl.g:2766:3: rulePerspectivePartStack
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveElementAccess().getPerspectivePartStackParserRuleCall_1()); 
@@ -9212,10 +9386,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:2721:2: ( rulePerspectivePart )
+                    // InternalPerspectiveDsl.g:2771:2: ( rulePerspectivePart )
                     {
-                    // InternalPerspectiveDsl.g:2721:2: ( rulePerspectivePart )
-                    // InternalPerspectiveDsl.g:2722:3: rulePerspectivePart
+                    // InternalPerspectiveDsl.g:2771:2: ( rulePerspectivePart )
+                    // InternalPerspectiveDsl.g:2772:3: rulePerspectivePart
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveElementAccess().getPerspectivePartParserRuleCall_2()); 
@@ -9252,14 +9426,14 @@
 
 
     // $ANTLR start "rule__PerspectiveView__Alternatives"
-    // InternalPerspectiveDsl.g:2731:1: rule__PerspectiveView__Alternatives : ( ( rulePerspectiveSelection ) | ( rulePerspectiveTable ) | ( rulePerspectiveChart ) | ( rulePerspectiveBean ) | ( rulePerspectiveReport ) | ( rulePerspectiveOrganization ) | ( rulePerspectiveTopology ) | ( rulePerspectiveDialog ) | ( rulePerspectiveGrid ) | ( rulePerspectiveWelcome ) | ( rulePerspectiveSearch ) | ( rulePerspectiveDataInterchange ) | ( rulePerspectiveKanban ) );
+    // InternalPerspectiveDsl.g:2781:1: rule__PerspectiveView__Alternatives : ( ( rulePerspectiveSelection ) | ( rulePerspectiveTable ) | ( rulePerspectiveChart ) | ( rulePerspectiveReport ) | ( rulePerspectiveOrganization ) | ( rulePerspectiveTopology ) | ( rulePerspectiveDialog ) | ( rulePerspectiveGrid ) | ( rulePerspectiveWelcome ) | ( rulePerspectiveSearch ) | ( rulePerspectiveDataInterchange ) | ( rulePerspectiveBPMN ) | ( rulePerspectiveKanban ) | ( rulePerspectiveTitle ) | ( rulePerspectiveDashboard ) );
     public final void rule__PerspectiveView__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2735:1: ( ( rulePerspectiveSelection ) | ( rulePerspectiveTable ) | ( rulePerspectiveChart ) | ( rulePerspectiveBean ) | ( rulePerspectiveReport ) | ( rulePerspectiveOrganization ) | ( rulePerspectiveTopology ) | ( rulePerspectiveDialog ) | ( rulePerspectiveGrid ) | ( rulePerspectiveWelcome ) | ( rulePerspectiveSearch ) | ( rulePerspectiveDataInterchange ) | ( rulePerspectiveKanban ) )
-            int alt4=13;
+            // InternalPerspectiveDsl.g:2785:1: ( ( rulePerspectiveSelection ) | ( rulePerspectiveTable ) | ( rulePerspectiveChart ) | ( rulePerspectiveReport ) | ( rulePerspectiveOrganization ) | ( rulePerspectiveTopology ) | ( rulePerspectiveDialog ) | ( rulePerspectiveGrid ) | ( rulePerspectiveWelcome ) | ( rulePerspectiveSearch ) | ( rulePerspectiveDataInterchange ) | ( rulePerspectiveBPMN ) | ( rulePerspectiveKanban ) | ( rulePerspectiveTitle ) | ( rulePerspectiveDashboard ) )
+            int alt4=15;
             switch ( input.LA(1) ) {
             case 69:
                 {
@@ -9271,12 +9445,12 @@
                 alt4=2;
                 }
                 break;
-            case 73:
+            case 72:
                 {
                 alt4=3;
                 }
                 break;
-            case 72:
+            case 73:
                 {
                 alt4=4;
                 }
@@ -9296,27 +9470,27 @@
                 alt4=7;
                 }
                 break;
-            case 77:
+            case 71:
                 {
                 alt4=8;
                 }
                 break;
-            case 71:
+            case 81:
                 {
                 alt4=9;
                 }
                 break;
-            case 81:
+            case 82:
                 {
                 alt4=10;
                 }
                 break;
-            case 82:
+            case 86:
                 {
                 alt4=11;
                 }
                 break;
-            case 86:
+            case 77:
                 {
                 alt4=12;
                 }
@@ -9326,6 +9500,16 @@
                 alt4=13;
                 }
                 break;
+            case 87:
+                {
+                alt4=14;
+                }
+                break;
+            case 88:
+                {
+                alt4=15;
+                }
+                break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
@@ -9336,10 +9520,10 @@
 
             switch (alt4) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2736:2: ( rulePerspectiveSelection )
+                    // InternalPerspectiveDsl.g:2786:2: ( rulePerspectiveSelection )
                     {
-                    // InternalPerspectiveDsl.g:2736:2: ( rulePerspectiveSelection )
-                    // InternalPerspectiveDsl.g:2737:3: rulePerspectiveSelection
+                    // InternalPerspectiveDsl.g:2786:2: ( rulePerspectiveSelection )
+                    // InternalPerspectiveDsl.g:2787:3: rulePerspectiveSelection
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveSelectionParserRuleCall_0()); 
@@ -9359,10 +9543,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2742:2: ( rulePerspectiveTable )
+                    // InternalPerspectiveDsl.g:2792:2: ( rulePerspectiveTable )
                     {
-                    // InternalPerspectiveDsl.g:2742:2: ( rulePerspectiveTable )
-                    // InternalPerspectiveDsl.g:2743:3: rulePerspectiveTable
+                    // InternalPerspectiveDsl.g:2792:2: ( rulePerspectiveTable )
+                    // InternalPerspectiveDsl.g:2793:3: rulePerspectiveTable
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveTableParserRuleCall_1()); 
@@ -9382,10 +9566,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:2748:2: ( rulePerspectiveChart )
+                    // InternalPerspectiveDsl.g:2798:2: ( rulePerspectiveChart )
                     {
-                    // InternalPerspectiveDsl.g:2748:2: ( rulePerspectiveChart )
-                    // InternalPerspectiveDsl.g:2749:3: rulePerspectiveChart
+                    // InternalPerspectiveDsl.g:2798:2: ( rulePerspectiveChart )
+                    // InternalPerspectiveDsl.g:2799:3: rulePerspectiveChart
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveChartParserRuleCall_2()); 
@@ -9405,21 +9589,21 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:2754:2: ( rulePerspectiveBean )
+                    // InternalPerspectiveDsl.g:2804:2: ( rulePerspectiveReport )
                     {
-                    // InternalPerspectiveDsl.g:2754:2: ( rulePerspectiveBean )
-                    // InternalPerspectiveDsl.g:2755:3: rulePerspectiveBean
+                    // InternalPerspectiveDsl.g:2804:2: ( rulePerspectiveReport )
+                    // InternalPerspectiveDsl.g:2805:3: rulePerspectiveReport
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveBeanParserRuleCall_3()); 
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_3()); 
                     }
                     pushFollow(FOLLOW_2);
-                    rulePerspectiveBean();
+                    rulePerspectiveReport();
 
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveBeanParserRuleCall_3()); 
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_3()); 
                     }
 
                     }
@@ -9428,21 +9612,21 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:2760:2: ( rulePerspectiveReport )
+                    // InternalPerspectiveDsl.g:2810:2: ( rulePerspectiveOrganization )
                     {
-                    // InternalPerspectiveDsl.g:2760:2: ( rulePerspectiveReport )
-                    // InternalPerspectiveDsl.g:2761:3: rulePerspectiveReport
+                    // InternalPerspectiveDsl.g:2810:2: ( rulePerspectiveOrganization )
+                    // InternalPerspectiveDsl.g:2811:3: rulePerspectiveOrganization
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_4()); 
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_4()); 
                     }
                     pushFollow(FOLLOW_2);
-                    rulePerspectiveReport();
+                    rulePerspectiveOrganization();
 
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_4()); 
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_4()); 
                     }
 
                     }
@@ -9451,21 +9635,21 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:2766:2: ( rulePerspectiveOrganization )
+                    // InternalPerspectiveDsl.g:2816:2: ( rulePerspectiveTopology )
                     {
-                    // InternalPerspectiveDsl.g:2766:2: ( rulePerspectiveOrganization )
-                    // InternalPerspectiveDsl.g:2767:3: rulePerspectiveOrganization
+                    // InternalPerspectiveDsl.g:2816:2: ( rulePerspectiveTopology )
+                    // InternalPerspectiveDsl.g:2817:3: rulePerspectiveTopology
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_5()); 
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_5()); 
                     }
                     pushFollow(FOLLOW_2);
-                    rulePerspectiveOrganization();
+                    rulePerspectiveTopology();
 
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_5()); 
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_5()); 
                     }
 
                     }
@@ -9474,21 +9658,21 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:2772:2: ( rulePerspectiveTopology )
+                    // InternalPerspectiveDsl.g:2822:2: ( rulePerspectiveDialog )
                     {
-                    // InternalPerspectiveDsl.g:2772:2: ( rulePerspectiveTopology )
-                    // InternalPerspectiveDsl.g:2773:3: rulePerspectiveTopology
+                    // InternalPerspectiveDsl.g:2822:2: ( rulePerspectiveDialog )
+                    // InternalPerspectiveDsl.g:2823:3: rulePerspectiveDialog
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_6()); 
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_6()); 
                     }
                     pushFollow(FOLLOW_2);
-                    rulePerspectiveTopology();
+                    rulePerspectiveDialog();
 
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_6()); 
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_6()); 
                     }
 
                     }
@@ -9497,21 +9681,21 @@
                     }
                     break;
                 case 8 :
-                    // InternalPerspectiveDsl.g:2778:2: ( rulePerspectiveDialog )
+                    // InternalPerspectiveDsl.g:2828:2: ( rulePerspectiveGrid )
                     {
-                    // InternalPerspectiveDsl.g:2778:2: ( rulePerspectiveDialog )
-                    // InternalPerspectiveDsl.g:2779:3: rulePerspectiveDialog
+                    // InternalPerspectiveDsl.g:2828:2: ( rulePerspectiveGrid )
+                    // InternalPerspectiveDsl.g:2829:3: rulePerspectiveGrid
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_7()); 
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_7()); 
                     }
                     pushFollow(FOLLOW_2);
-                    rulePerspectiveDialog();
+                    rulePerspectiveGrid();
 
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_7()); 
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_7()); 
                     }
 
                     }
@@ -9520,21 +9704,21 @@
                     }
                     break;
                 case 9 :
-                    // InternalPerspectiveDsl.g:2784:2: ( rulePerspectiveGrid )
+                    // InternalPerspectiveDsl.g:2834:2: ( rulePerspectiveWelcome )
                     {
-                    // InternalPerspectiveDsl.g:2784:2: ( rulePerspectiveGrid )
-                    // InternalPerspectiveDsl.g:2785:3: rulePerspectiveGrid
+                    // InternalPerspectiveDsl.g:2834:2: ( rulePerspectiveWelcome )
+                    // InternalPerspectiveDsl.g:2835:3: rulePerspectiveWelcome
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_8()); 
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_8()); 
                     }
                     pushFollow(FOLLOW_2);
-                    rulePerspectiveGrid();
+                    rulePerspectiveWelcome();
 
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_8()); 
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_8()); 
                     }
 
                     }
@@ -9543,21 +9727,21 @@
                     }
                     break;
                 case 10 :
-                    // InternalPerspectiveDsl.g:2790:2: ( rulePerspectiveWelcome )
+                    // InternalPerspectiveDsl.g:2840:2: ( rulePerspectiveSearch )
                     {
-                    // InternalPerspectiveDsl.g:2790:2: ( rulePerspectiveWelcome )
-                    // InternalPerspectiveDsl.g:2791:3: rulePerspectiveWelcome
+                    // InternalPerspectiveDsl.g:2840:2: ( rulePerspectiveSearch )
+                    // InternalPerspectiveDsl.g:2841:3: rulePerspectiveSearch
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_9()); 
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_9()); 
                     }
                     pushFollow(FOLLOW_2);
-                    rulePerspectiveWelcome();
+                    rulePerspectiveSearch();
 
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_9()); 
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_9()); 
                     }
 
                     }
@@ -9566,21 +9750,21 @@
                     }
                     break;
                 case 11 :
-                    // InternalPerspectiveDsl.g:2796:2: ( rulePerspectiveSearch )
+                    // InternalPerspectiveDsl.g:2846:2: ( rulePerspectiveDataInterchange )
                     {
-                    // InternalPerspectiveDsl.g:2796:2: ( rulePerspectiveSearch )
-                    // InternalPerspectiveDsl.g:2797:3: rulePerspectiveSearch
+                    // InternalPerspectiveDsl.g:2846:2: ( rulePerspectiveDataInterchange )
+                    // InternalPerspectiveDsl.g:2847:3: rulePerspectiveDataInterchange
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_10()); 
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_10()); 
                     }
                     pushFollow(FOLLOW_2);
-                    rulePerspectiveSearch();
+                    rulePerspectiveDataInterchange();
 
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_10()); 
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_10()); 
                     }
 
                     }
@@ -9589,21 +9773,21 @@
                     }
                     break;
                 case 12 :
-                    // InternalPerspectiveDsl.g:2802:2: ( rulePerspectiveDataInterchange )
+                    // InternalPerspectiveDsl.g:2852:2: ( rulePerspectiveBPMN )
                     {
-                    // InternalPerspectiveDsl.g:2802:2: ( rulePerspectiveDataInterchange )
-                    // InternalPerspectiveDsl.g:2803:3: rulePerspectiveDataInterchange
+                    // InternalPerspectiveDsl.g:2852:2: ( rulePerspectiveBPMN )
+                    // InternalPerspectiveDsl.g:2853:3: rulePerspectiveBPMN
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_11()); 
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveBPMNParserRuleCall_11()); 
                     }
                     pushFollow(FOLLOW_2);
-                    rulePerspectiveDataInterchange();
+                    rulePerspectiveBPMN();
 
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_11()); 
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveBPMNParserRuleCall_11()); 
                     }
 
                     }
@@ -9612,10 +9796,10 @@
                     }
                     break;
                 case 13 :
-                    // InternalPerspectiveDsl.g:2808:2: ( rulePerspectiveKanban )
+                    // InternalPerspectiveDsl.g:2858:2: ( rulePerspectiveKanban )
                     {
-                    // InternalPerspectiveDsl.g:2808:2: ( rulePerspectiveKanban )
-                    // InternalPerspectiveDsl.g:2809:3: rulePerspectiveKanban
+                    // InternalPerspectiveDsl.g:2858:2: ( rulePerspectiveKanban )
+                    // InternalPerspectiveDsl.g:2859:3: rulePerspectiveKanban
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveKanbanParserRuleCall_12()); 
@@ -9634,6 +9818,52 @@
 
                     }
                     break;
+                case 14 :
+                    // InternalPerspectiveDsl.g:2864:2: ( rulePerspectiveTitle )
+                    {
+                    // InternalPerspectiveDsl.g:2864:2: ( rulePerspectiveTitle )
+                    // InternalPerspectiveDsl.g:2865:3: rulePerspectiveTitle
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveTitleParserRuleCall_13()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveTitle();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveTitleParserRuleCall_13()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 15 :
+                    // InternalPerspectiveDsl.g:2870:2: ( rulePerspectiveDashboard )
+                    {
+                    // InternalPerspectiveDsl.g:2870:2: ( rulePerspectiveDashboard )
+                    // InternalPerspectiveDsl.g:2871:3: rulePerspectiveDashboard
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDashboardParserRuleCall_14()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveDashboard();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveDashboardParserRuleCall_14()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
 
             }
         }
@@ -9652,27 +9882,27 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Alternatives_2"
-    // InternalPerspectiveDsl.g:2818:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );
+    // InternalPerspectiveDsl.g:2880:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );
     public final void rule__XImportDeclaration__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2822:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
+            // InternalPerspectiveDsl.g:2884:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
             int alt5=4;
             alt5 = dfa5.predict(input);
             switch (alt5) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2823:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:2885:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2823:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
-                    // InternalPerspectiveDsl.g:2824:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:2885:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:2886:3: ( rule__XImportDeclaration__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); 
                     }
-                    // InternalPerspectiveDsl.g:2825:3: ( rule__XImportDeclaration__Group_2_0__0 )
-                    // InternalPerspectiveDsl.g:2825:4: rule__XImportDeclaration__Group_2_0__0
+                    // InternalPerspectiveDsl.g:2887:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:2887:4: rule__XImportDeclaration__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__Group_2_0__0();
@@ -9692,16 +9922,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2829:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalPerspectiveDsl.g:2891:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:2829:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
-                    // InternalPerspectiveDsl.g:2830:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalPerspectiveDsl.g:2891:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalPerspectiveDsl.g:2892:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); 
                     }
-                    // InternalPerspectiveDsl.g:2831:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
-                    // InternalPerspectiveDsl.g:2831:4: rule__XImportDeclaration__ImportedTypeAssignment_2_1
+                    // InternalPerspectiveDsl.g:2893:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalPerspectiveDsl.g:2893:4: rule__XImportDeclaration__ImportedTypeAssignment_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ImportedTypeAssignment_2_1();
@@ -9721,16 +9951,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:2835:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalPerspectiveDsl.g:2897:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
                     {
-                    // InternalPerspectiveDsl.g:2835:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
-                    // InternalPerspectiveDsl.g:2836:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalPerspectiveDsl.g:2897:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalPerspectiveDsl.g:2898:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); 
                     }
-                    // InternalPerspectiveDsl.g:2837:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
-                    // InternalPerspectiveDsl.g:2837:4: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
+                    // InternalPerspectiveDsl.g:2899:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalPerspectiveDsl.g:2899:4: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ImportedNamespaceAssignment_2_2();
@@ -9750,16 +9980,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:2841:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalPerspectiveDsl.g:2903:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2841:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
-                    // InternalPerspectiveDsl.g:2842:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalPerspectiveDsl.g:2903:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalPerspectiveDsl.g:2904:3: ( rule__XImportDeclaration__Group_2_3__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); 
                     }
-                    // InternalPerspectiveDsl.g:2843:3: ( rule__XImportDeclaration__Group_2_3__0 )
-                    // InternalPerspectiveDsl.g:2843:4: rule__XImportDeclaration__Group_2_3__0
+                    // InternalPerspectiveDsl.g:2905:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalPerspectiveDsl.g:2905:4: rule__XImportDeclaration__Group_2_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__Group_2_3__0();
@@ -9796,13 +10026,13 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Alternatives_2_0_3"
-    // InternalPerspectiveDsl.g:2851:1: rule__XImportDeclaration__Alternatives_2_0_3 : ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) );
+    // InternalPerspectiveDsl.g:2913:1: rule__XImportDeclaration__Alternatives_2_0_3 : ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) );
     public final void rule__XImportDeclaration__Alternatives_2_0_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2855:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
+            // InternalPerspectiveDsl.g:2917:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -9821,16 +10051,16 @@
             }
             switch (alt6) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2856:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalPerspectiveDsl.g:2918:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2856:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
-                    // InternalPerspectiveDsl.g:2857:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalPerspectiveDsl.g:2918:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalPerspectiveDsl.g:2919:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); 
                     }
-                    // InternalPerspectiveDsl.g:2858:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
-                    // InternalPerspectiveDsl.g:2858:4: rule__XImportDeclaration__WildcardAssignment_2_0_3_0
+                    // InternalPerspectiveDsl.g:2920:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalPerspectiveDsl.g:2920:4: rule__XImportDeclaration__WildcardAssignment_2_0_3_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__WildcardAssignment_2_0_3_0();
@@ -9850,16 +10080,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2862:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalPerspectiveDsl.g:2924:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:2862:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
-                    // InternalPerspectiveDsl.g:2863:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalPerspectiveDsl.g:2924:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalPerspectiveDsl.g:2925:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); 
                     }
-                    // InternalPerspectiveDsl.g:2864:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
-                    // InternalPerspectiveDsl.g:2864:4: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
+                    // InternalPerspectiveDsl.g:2926:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalPerspectiveDsl.g:2926:4: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__MemberNameAssignment_2_0_3_1();
@@ -9896,27 +10126,27 @@
 
 
     // $ANTLR start "rule__XAnnotation__Alternatives_3_1"
-    // InternalPerspectiveDsl.g:2872:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );
+    // InternalPerspectiveDsl.g:2934:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );
     public final void rule__XAnnotation__Alternatives_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2876:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:2938:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
             int alt7=2;
             alt7 = dfa7.predict(input);
             switch (alt7) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2877:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:2939:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2877:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
-                    // InternalPerspectiveDsl.g:2878:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalPerspectiveDsl.g:2939:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:2940:3: ( rule__XAnnotation__Group_3_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:2879:3: ( rule__XAnnotation__Group_3_1_0__0 )
-                    // InternalPerspectiveDsl.g:2879:4: rule__XAnnotation__Group_3_1_0__0
+                    // InternalPerspectiveDsl.g:2941:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalPerspectiveDsl.g:2941:4: rule__XAnnotation__Group_3_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__Group_3_1_0__0();
@@ -9936,16 +10166,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2883:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalPerspectiveDsl.g:2945:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:2883:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
-                    // InternalPerspectiveDsl.g:2884:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalPerspectiveDsl.g:2945:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalPerspectiveDsl.g:2946:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
                     }
-                    // InternalPerspectiveDsl.g:2885:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
-                    // InternalPerspectiveDsl.g:2885:4: rule__XAnnotation__ValueAssignment_3_1_1
+                    // InternalPerspectiveDsl.g:2947:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalPerspectiveDsl.g:2947:4: rule__XAnnotation__ValueAssignment_3_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__ValueAssignment_3_1_1();
@@ -9982,27 +10212,27 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Alternatives"
-    // InternalPerspectiveDsl.g:2893:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );
+    // InternalPerspectiveDsl.g:2955:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );
     public final void rule__XAnnotationElementValueOrCommaList__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2897:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
+            // InternalPerspectiveDsl.g:2959:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
             int alt8=2;
             alt8 = dfa8.predict(input);
             switch (alt8) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2898:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:2960:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2898:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
-                    // InternalPerspectiveDsl.g:2899:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalPerspectiveDsl.g:2960:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:2961:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
                     }
-                    // InternalPerspectiveDsl.g:2900:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
-                    // InternalPerspectiveDsl.g:2900:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
+                    // InternalPerspectiveDsl.g:2962:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalPerspectiveDsl.g:2962:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_0__0();
@@ -10022,16 +10252,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2904:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:2966:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2904:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
-                    // InternalPerspectiveDsl.g:2905:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalPerspectiveDsl.g:2966:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:2967:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
                     }
-                    // InternalPerspectiveDsl.g:2906:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
-                    // InternalPerspectiveDsl.g:2906:4: rule__XAnnotationElementValueOrCommaList__Group_1__0
+                    // InternalPerspectiveDsl.g:2968:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalPerspectiveDsl.g:2968:4: rule__XAnnotationElementValueOrCommaList__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_1__0();
@@ -10068,27 +10298,27 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Alternatives"
-    // InternalPerspectiveDsl.g:2914:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
+    // InternalPerspectiveDsl.g:2976:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
     public final void rule__XAnnotationElementValue__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2918:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:2980:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
             int alt9=2;
             alt9 = dfa9.predict(input);
             switch (alt9) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2919:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:2981:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2919:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
-                    // InternalPerspectiveDsl.g:2920:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalPerspectiveDsl.g:2981:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:2982:3: ( rule__XAnnotationElementValue__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
                     }
-                    // InternalPerspectiveDsl.g:2921:3: ( rule__XAnnotationElementValue__Group_0__0 )
-                    // InternalPerspectiveDsl.g:2921:4: rule__XAnnotationElementValue__Group_0__0
+                    // InternalPerspectiveDsl.g:2983:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalPerspectiveDsl.g:2983:4: rule__XAnnotationElementValue__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValue__Group_0__0();
@@ -10108,10 +10338,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2925:2: ( ruleXAnnotationOrExpression )
+                    // InternalPerspectiveDsl.g:2987:2: ( ruleXAnnotationOrExpression )
                     {
-                    // InternalPerspectiveDsl.g:2925:2: ( ruleXAnnotationOrExpression )
-                    // InternalPerspectiveDsl.g:2926:3: ruleXAnnotationOrExpression
+                    // InternalPerspectiveDsl.g:2987:2: ( ruleXAnnotationOrExpression )
+                    // InternalPerspectiveDsl.g:2988:3: ruleXAnnotationOrExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
@@ -10148,20 +10378,20 @@
 
 
     // $ANTLR start "rule__XAnnotationOrExpression__Alternatives"
-    // InternalPerspectiveDsl.g:2935:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
+    // InternalPerspectiveDsl.g:2997:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
     public final void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2939:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:3001:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
-            if ( (LA10_0==88) ) {
+            if ( (LA10_0==90) ) {
                 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==89||(LA10_0>=93 && LA10_0<=94)||LA10_0==97||LA10_0==99||(LA10_0>=103 && LA10_0<=111)||LA10_0==113||LA10_0==124) ) {
+            else if ( ((LA10_0>=RULE_ID && LA10_0<=RULE_DECIMAL)||LA10_0==27||(LA10_0>=34 && LA10_0<=35)||LA10_0==40||(LA10_0>=45 && LA10_0<=50)||LA10_0==54||LA10_0==91||(LA10_0>=95 && LA10_0<=96)||LA10_0==99||LA10_0==101||(LA10_0>=105 && LA10_0<=113)||LA10_0==115||LA10_0==126) ) {
                 alt10=2;
             }
             else {
@@ -10173,10 +10403,10 @@
             }
             switch (alt10) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2940:2: ( ruleXAnnotation )
+                    // InternalPerspectiveDsl.g:3002:2: ( ruleXAnnotation )
                     {
-                    // InternalPerspectiveDsl.g:2940:2: ( ruleXAnnotation )
-                    // InternalPerspectiveDsl.g:2941:3: ruleXAnnotation
+                    // InternalPerspectiveDsl.g:3002:2: ( ruleXAnnotation )
+                    // InternalPerspectiveDsl.g:3003:3: ruleXAnnotation
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
@@ -10196,10 +10426,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2946:2: ( ruleXExpression )
+                    // InternalPerspectiveDsl.g:3008:2: ( ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:2946:2: ( ruleXExpression )
-                    // InternalPerspectiveDsl.g:2947:3: ruleXExpression
+                    // InternalPerspectiveDsl.g:3008:2: ( ruleXExpression )
+                    // InternalPerspectiveDsl.g:3009:3: ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
@@ -10236,25 +10466,25 @@
 
 
     // $ANTLR start "rule__XAssignment__Alternatives"
-    // InternalPerspectiveDsl.g:2956:1: rule__XAssignment__Alternatives : ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3018:1: rule__XAssignment__Alternatives : ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) );
     public final void rule__XAssignment__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2960:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3022:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
             int alt11=2;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
                 int LA11_1 = input.LA(2);
 
-                if ( (LA11_1==EOF||(LA11_1>=RULE_ID && LA11_1<=RULE_DECIMAL)||(LA11_1>=14 && LA11_1<=50)||(LA11_1>=54 && LA11_1<=55)||LA11_1==87||(LA11_1>=89 && LA11_1<=114)||(LA11_1>=120 && LA11_1<=121)||(LA11_1>=123 && LA11_1<=124)) ) {
-                    alt11=2;
-                }
-                else if ( (LA11_1==13) ) {
+                if ( (LA11_1==13) ) {
                     alt11=1;
                 }
+                else if ( (LA11_1==EOF||(LA11_1>=RULE_ID && LA11_1<=RULE_DECIMAL)||(LA11_1>=14 && LA11_1<=50)||(LA11_1>=54 && LA11_1<=55)||LA11_1==89||(LA11_1>=91 && LA11_1<=116)||(LA11_1>=122 && LA11_1<=123)||(LA11_1>=125 && LA11_1<=126)) ) {
+                    alt11=2;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -10268,12 +10498,12 @@
                 {
                 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==87||(LA11_2>=89 && LA11_2<=114)||(LA11_2>=120 && LA11_2<=121)||(LA11_2>=123 && LA11_2<=124)) ) {
-                    alt11=2;
-                }
-                else if ( (LA11_2==13) ) {
+                if ( (LA11_2==13) ) {
                     alt11=1;
                 }
+                else if ( (LA11_2==EOF||(LA11_2>=RULE_ID && LA11_2<=RULE_DECIMAL)||(LA11_2>=14 && LA11_2<=50)||(LA11_2>=54 && LA11_2<=55)||LA11_2==89||(LA11_2>=91 && LA11_2<=116)||(LA11_2>=122 && LA11_2<=123)||(LA11_2>=125 && LA11_2<=126)) ) {
+                    alt11=2;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -10290,7 +10520,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==87||(LA11_3>=89 && LA11_3<=114)||(LA11_3>=120 && LA11_3<=121)||(LA11_3>=123 && LA11_3<=124)) ) {
+                else if ( (LA11_3==EOF||(LA11_3>=RULE_ID && LA11_3<=RULE_DECIMAL)||(LA11_3>=14 && LA11_3<=50)||(LA11_3>=54 && LA11_3<=55)||LA11_3==89||(LA11_3>=91 && LA11_3<=116)||(LA11_3>=122 && LA11_3<=123)||(LA11_3>=125 && LA11_3<=126)) ) {
                     alt11=2;
                 }
                 else {
@@ -10309,7 +10539,7 @@
                 if ( (LA11_4==13) ) {
                     alt11=1;
                 }
-                else if ( (LA11_4==EOF||(LA11_4>=RULE_ID && LA11_4<=RULE_DECIMAL)||(LA11_4>=14 && LA11_4<=50)||(LA11_4>=54 && LA11_4<=55)||LA11_4==87||(LA11_4>=89 && LA11_4<=114)||(LA11_4>=120 && LA11_4<=121)||(LA11_4>=123 && LA11_4<=124)) ) {
+                else if ( (LA11_4==EOF||(LA11_4>=RULE_ID && LA11_4<=RULE_DECIMAL)||(LA11_4>=14 && LA11_4<=50)||(LA11_4>=54 && LA11_4<=55)||LA11_4==89||(LA11_4>=91 && LA11_4<=116)||(LA11_4>=122 && LA11_4<=123)||(LA11_4>=125 && LA11_4<=126)) ) {
                     alt11=2;
                 }
                 else {
@@ -10328,7 +10558,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==87||(LA11_5>=89 && LA11_5<=114)||(LA11_5>=120 && LA11_5<=121)||(LA11_5>=123 && LA11_5<=124)) ) {
+                else if ( (LA11_5==EOF||(LA11_5>=RULE_ID && LA11_5<=RULE_DECIMAL)||(LA11_5>=14 && LA11_5<=50)||(LA11_5>=54 && LA11_5<=55)||LA11_5==89||(LA11_5>=91 && LA11_5<=116)||(LA11_5>=122 && LA11_5<=123)||(LA11_5>=125 && LA11_5<=126)) ) {
                     alt11=2;
                 }
                 else {
@@ -10351,13 +10581,11 @@
             case 49:
             case 50:
             case 54:
-            case 89:
-            case 93:
-            case 94:
-            case 97:
+            case 91:
+            case 95:
+            case 96:
             case 99:
-            case 103:
-            case 104:
+            case 101:
             case 105:
             case 106:
             case 107:
@@ -10365,8 +10593,10 @@
             case 109:
             case 110:
             case 111:
+            case 112:
             case 113:
-            case 124:
+            case 115:
+            case 126:
                 {
                 alt11=2;
                 }
@@ -10381,16 +10611,16 @@
 
             switch (alt11) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2961:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3023:2: ( ( rule__XAssignment__Group_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2961:2: ( ( rule__XAssignment__Group_0__0 ) )
-                    // InternalPerspectiveDsl.g:2962:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3023:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3024:3: ( rule__XAssignment__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAssignmentAccess().getGroup_0()); 
                     }
-                    // InternalPerspectiveDsl.g:2963:3: ( rule__XAssignment__Group_0__0 )
-                    // InternalPerspectiveDsl.g:2963:4: rule__XAssignment__Group_0__0
+                    // InternalPerspectiveDsl.g:3025:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3025:4: rule__XAssignment__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_0__0();
@@ -10410,16 +10640,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2967:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:3029:2: ( ( rule__XAssignment__Group_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2967:2: ( ( rule__XAssignment__Group_1__0 ) )
-                    // InternalPerspectiveDsl.g:2968:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalPerspectiveDsl.g:3029:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:3030:3: ( rule__XAssignment__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAssignmentAccess().getGroup_1()); 
                     }
-                    // InternalPerspectiveDsl.g:2969:3: ( rule__XAssignment__Group_1__0 )
-                    // InternalPerspectiveDsl.g:2969:4: rule__XAssignment__Group_1__0
+                    // InternalPerspectiveDsl.g:3031:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalPerspectiveDsl.g:3031:4: rule__XAssignment__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_1__0();
@@ -10456,13 +10686,13 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Alternatives"
-    // InternalPerspectiveDsl.g:2977:1: rule__OpMultiAssign__Alternatives : ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) );
+    // InternalPerspectiveDsl.g:3039:1: rule__OpMultiAssign__Alternatives : ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) );
     public final void rule__OpMultiAssign__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2981:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
+            // InternalPerspectiveDsl.g:3043:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
             int alt12=7;
             switch ( input.LA(1) ) {
             case 16:
@@ -10510,10 +10740,10 @@
 
             switch (alt12) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2982:2: ( '+=' )
+                    // InternalPerspectiveDsl.g:3044:2: ( '+=' )
                     {
-                    // InternalPerspectiveDsl.g:2982:2: ( '+=' )
-                    // InternalPerspectiveDsl.g:2983:3: '+='
+                    // InternalPerspectiveDsl.g:3044:2: ( '+=' )
+                    // InternalPerspectiveDsl.g:3045:3: '+='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
@@ -10529,10 +10759,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2988:2: ( '-=' )
+                    // InternalPerspectiveDsl.g:3050:2: ( '-=' )
                     {
-                    // InternalPerspectiveDsl.g:2988:2: ( '-=' )
-                    // InternalPerspectiveDsl.g:2989:3: '-='
+                    // InternalPerspectiveDsl.g:3050:2: ( '-=' )
+                    // InternalPerspectiveDsl.g:3051:3: '-='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
@@ -10548,10 +10778,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:2994:2: ( '*=' )
+                    // InternalPerspectiveDsl.g:3056:2: ( '*=' )
                     {
-                    // InternalPerspectiveDsl.g:2994:2: ( '*=' )
-                    // InternalPerspectiveDsl.g:2995:3: '*='
+                    // InternalPerspectiveDsl.g:3056:2: ( '*=' )
+                    // InternalPerspectiveDsl.g:3057:3: '*='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
@@ -10567,10 +10797,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3000:2: ( '/=' )
+                    // InternalPerspectiveDsl.g:3062:2: ( '/=' )
                     {
-                    // InternalPerspectiveDsl.g:3000:2: ( '/=' )
-                    // InternalPerspectiveDsl.g:3001:3: '/='
+                    // InternalPerspectiveDsl.g:3062:2: ( '/=' )
+                    // InternalPerspectiveDsl.g:3063:3: '/='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
@@ -10586,10 +10816,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:3006:2: ( '%=' )
+                    // InternalPerspectiveDsl.g:3068:2: ( '%=' )
                     {
-                    // InternalPerspectiveDsl.g:3006:2: ( '%=' )
-                    // InternalPerspectiveDsl.g:3007:3: '%='
+                    // InternalPerspectiveDsl.g:3068:2: ( '%=' )
+                    // InternalPerspectiveDsl.g:3069:3: '%='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
@@ -10605,16 +10835,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:3012:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalPerspectiveDsl.g:3074:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3012:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
-                    // InternalPerspectiveDsl.g:3013:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalPerspectiveDsl.g:3074:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalPerspectiveDsl.g:3075:3: ( rule__OpMultiAssign__Group_5__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); 
                     }
-                    // InternalPerspectiveDsl.g:3014:3: ( rule__OpMultiAssign__Group_5__0 )
-                    // InternalPerspectiveDsl.g:3014:4: rule__OpMultiAssign__Group_5__0
+                    // InternalPerspectiveDsl.g:3076:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalPerspectiveDsl.g:3076:4: rule__OpMultiAssign__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpMultiAssign__Group_5__0();
@@ -10634,16 +10864,16 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:3018:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalPerspectiveDsl.g:3080:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3018:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
-                    // InternalPerspectiveDsl.g:3019:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalPerspectiveDsl.g:3080:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalPerspectiveDsl.g:3081:3: ( rule__OpMultiAssign__Group_6__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); 
                     }
-                    // InternalPerspectiveDsl.g:3020:3: ( rule__OpMultiAssign__Group_6__0 )
-                    // InternalPerspectiveDsl.g:3020:4: rule__OpMultiAssign__Group_6__0
+                    // InternalPerspectiveDsl.g:3082:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalPerspectiveDsl.g:3082:4: rule__OpMultiAssign__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpMultiAssign__Group_6__0();
@@ -10680,13 +10910,13 @@
 
 
     // $ANTLR start "rule__OpEquality__Alternatives"
-    // InternalPerspectiveDsl.g:3028:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
+    // InternalPerspectiveDsl.g:3090:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
     public final void rule__OpEquality__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3032:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
+            // InternalPerspectiveDsl.g:3094:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
             int alt13=4;
             switch ( input.LA(1) ) {
             case 21:
@@ -10719,10 +10949,10 @@
 
             switch (alt13) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3033:2: ( '==' )
+                    // InternalPerspectiveDsl.g:3095:2: ( '==' )
                     {
-                    // InternalPerspectiveDsl.g:3033:2: ( '==' )
-                    // InternalPerspectiveDsl.g:3034:3: '=='
+                    // InternalPerspectiveDsl.g:3095:2: ( '==' )
+                    // InternalPerspectiveDsl.g:3096:3: '=='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
@@ -10738,10 +10968,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3039:2: ( '!=' )
+                    // InternalPerspectiveDsl.g:3101:2: ( '!=' )
                     {
-                    // InternalPerspectiveDsl.g:3039:2: ( '!=' )
-                    // InternalPerspectiveDsl.g:3040:3: '!='
+                    // InternalPerspectiveDsl.g:3101:2: ( '!=' )
+                    // InternalPerspectiveDsl.g:3102:3: '!='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
@@ -10757,10 +10987,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3045:2: ( '===' )
+                    // InternalPerspectiveDsl.g:3107:2: ( '===' )
                     {
-                    // InternalPerspectiveDsl.g:3045:2: ( '===' )
-                    // InternalPerspectiveDsl.g:3046:3: '==='
+                    // InternalPerspectiveDsl.g:3107:2: ( '===' )
+                    // InternalPerspectiveDsl.g:3108:3: '==='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
@@ -10776,10 +11006,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3051:2: ( '!==' )
+                    // InternalPerspectiveDsl.g:3113:2: ( '!==' )
                     {
-                    // InternalPerspectiveDsl.g:3051:2: ( '!==' )
-                    // InternalPerspectiveDsl.g:3052:3: '!=='
+                    // InternalPerspectiveDsl.g:3113:2: ( '!==' )
+                    // InternalPerspectiveDsl.g:3114:3: '!=='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
@@ -10812,17 +11042,17 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Alternatives_1"
-    // InternalPerspectiveDsl.g:3061:1: rule__XRelationalExpression__Alternatives_1 : ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3123:1: rule__XRelationalExpression__Alternatives_1 : ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) );
     public final void rule__XRelationalExpression__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3065:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3127:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
             int alt14=2;
             int LA14_0 = input.LA(1);
 
-            if ( (LA14_0==95) ) {
+            if ( (LA14_0==97) ) {
                 alt14=1;
             }
             else if ( ((LA14_0>=25 && LA14_0<=27)) ) {
@@ -10837,16 +11067,16 @@
             }
             switch (alt14) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3066:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3128:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3066:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
-                    // InternalPerspectiveDsl.g:3067:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalPerspectiveDsl.g:3128:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3129:3: ( rule__XRelationalExpression__Group_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3068:3: ( rule__XRelationalExpression__Group_1_0__0 )
-                    // InternalPerspectiveDsl.g:3068:4: rule__XRelationalExpression__Group_1_0__0
+                    // InternalPerspectiveDsl.g:3130:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalPerspectiveDsl.g:3130:4: rule__XRelationalExpression__Group_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XRelationalExpression__Group_1_0__0();
@@ -10866,16 +11096,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3072:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3134:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3072:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
-                    // InternalPerspectiveDsl.g:3073:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalPerspectiveDsl.g:3134:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3135:3: ( rule__XRelationalExpression__Group_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3074:3: ( rule__XRelationalExpression__Group_1_1__0 )
-                    // InternalPerspectiveDsl.g:3074:4: rule__XRelationalExpression__Group_1_1__0
+                    // InternalPerspectiveDsl.g:3136:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalPerspectiveDsl.g:3136:4: rule__XRelationalExpression__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XRelationalExpression__Group_1_1__0();
@@ -10912,13 +11142,13 @@
 
 
     // $ANTLR start "rule__OpCompare__Alternatives"
-    // InternalPerspectiveDsl.g:3082:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
+    // InternalPerspectiveDsl.g:3144:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
     public final void rule__OpCompare__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3086:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
+            // InternalPerspectiveDsl.g:3148:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
             int alt15=4;
             switch ( input.LA(1) ) {
             case 25:
@@ -10933,7 +11163,7 @@
                 if ( (LA15_2==13) ) {
                     alt15=2;
                 }
-                else if ( (LA15_2==EOF||(LA15_2>=RULE_ID && LA15_2<=RULE_DECIMAL)||LA15_2==27||(LA15_2>=34 && LA15_2<=35)||LA15_2==40||(LA15_2>=45 && LA15_2<=50)||LA15_2==54||LA15_2==89||(LA15_2>=93 && LA15_2<=94)||LA15_2==97||LA15_2==99||(LA15_2>=103 && LA15_2<=111)||LA15_2==113||LA15_2==124) ) {
+                else if ( (LA15_2==EOF||(LA15_2>=RULE_ID && LA15_2<=RULE_DECIMAL)||LA15_2==27||(LA15_2>=34 && LA15_2<=35)||LA15_2==40||(LA15_2>=45 && LA15_2<=50)||LA15_2==54||LA15_2==91||(LA15_2>=95 && LA15_2<=96)||LA15_2==99||LA15_2==101||(LA15_2>=105 && LA15_2<=113)||LA15_2==115||LA15_2==126) ) {
                     alt15=4;
                 }
                 else {
@@ -10960,10 +11190,10 @@
 
             switch (alt15) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3087:2: ( '>=' )
+                    // InternalPerspectiveDsl.g:3149:2: ( '>=' )
                     {
-                    // InternalPerspectiveDsl.g:3087:2: ( '>=' )
-                    // InternalPerspectiveDsl.g:3088:3: '>='
+                    // InternalPerspectiveDsl.g:3149:2: ( '>=' )
+                    // InternalPerspectiveDsl.g:3150:3: '>='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
@@ -10979,16 +11209,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3093:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:3155:2: ( ( rule__OpCompare__Group_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3093:2: ( ( rule__OpCompare__Group_1__0 ) )
-                    // InternalPerspectiveDsl.g:3094:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalPerspectiveDsl.g:3155:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:3156:3: ( rule__OpCompare__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGroup_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3095:3: ( rule__OpCompare__Group_1__0 )
-                    // InternalPerspectiveDsl.g:3095:4: rule__OpCompare__Group_1__0
+                    // InternalPerspectiveDsl.g:3157:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalPerspectiveDsl.g:3157:4: rule__OpCompare__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpCompare__Group_1__0();
@@ -11008,10 +11238,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3099:2: ( '>' )
+                    // InternalPerspectiveDsl.g:3161:2: ( '>' )
                     {
-                    // InternalPerspectiveDsl.g:3099:2: ( '>' )
-                    // InternalPerspectiveDsl.g:3100:3: '>'
+                    // InternalPerspectiveDsl.g:3161:2: ( '>' )
+                    // InternalPerspectiveDsl.g:3162:3: '>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
@@ -11027,10 +11257,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3105:2: ( '<' )
+                    // InternalPerspectiveDsl.g:3167:2: ( '<' )
                     {
-                    // InternalPerspectiveDsl.g:3105:2: ( '<' )
-                    // InternalPerspectiveDsl.g:3106:3: '<'
+                    // InternalPerspectiveDsl.g:3167:2: ( '<' )
+                    // InternalPerspectiveDsl.g:3168:3: '<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
@@ -11063,21 +11293,21 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives"
-    // InternalPerspectiveDsl.g:3115:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );
+    // InternalPerspectiveDsl.g:3177:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );
     public final void rule__OpOther__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3119:1: ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) )
+            // InternalPerspectiveDsl.g:3181:1: ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) )
             int alt16=9;
             alt16 = dfa16.predict(input);
             switch (alt16) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3120:2: ( '->' )
+                    // InternalPerspectiveDsl.g:3182:2: ( '->' )
                     {
-                    // InternalPerspectiveDsl.g:3120:2: ( '->' )
-                    // InternalPerspectiveDsl.g:3121:3: '->'
+                    // InternalPerspectiveDsl.g:3182:2: ( '->' )
+                    // InternalPerspectiveDsl.g:3183:3: '->'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
@@ -11093,10 +11323,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3126:2: ( '..<' )
+                    // InternalPerspectiveDsl.g:3188:2: ( '..<' )
                     {
-                    // InternalPerspectiveDsl.g:3126:2: ( '..<' )
-                    // InternalPerspectiveDsl.g:3127:3: '..<'
+                    // InternalPerspectiveDsl.g:3188:2: ( '..<' )
+                    // InternalPerspectiveDsl.g:3189:3: '..<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
@@ -11112,16 +11342,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3132:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalPerspectiveDsl.g:3194:2: ( ( rule__OpOther__Group_2__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3132:2: ( ( rule__OpOther__Group_2__0 ) )
-                    // InternalPerspectiveDsl.g:3133:3: ( rule__OpOther__Group_2__0 )
+                    // InternalPerspectiveDsl.g:3194:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalPerspectiveDsl.g:3195:3: ( rule__OpOther__Group_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_2()); 
                     }
-                    // InternalPerspectiveDsl.g:3134:3: ( rule__OpOther__Group_2__0 )
-                    // InternalPerspectiveDsl.g:3134:4: rule__OpOther__Group_2__0
+                    // InternalPerspectiveDsl.g:3196:3: ( rule__OpOther__Group_2__0 )
+                    // InternalPerspectiveDsl.g:3196:4: rule__OpOther__Group_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_2__0();
@@ -11141,10 +11371,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3138:2: ( '..' )
+                    // InternalPerspectiveDsl.g:3200:2: ( '..' )
                     {
-                    // InternalPerspectiveDsl.g:3138:2: ( '..' )
-                    // InternalPerspectiveDsl.g:3139:3: '..'
+                    // InternalPerspectiveDsl.g:3200:2: ( '..' )
+                    // InternalPerspectiveDsl.g:3201:3: '..'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
@@ -11160,10 +11390,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:3144:2: ( '=>' )
+                    // InternalPerspectiveDsl.g:3206:2: ( '=>' )
                     {
-                    // InternalPerspectiveDsl.g:3144:2: ( '=>' )
-                    // InternalPerspectiveDsl.g:3145:3: '=>'
+                    // InternalPerspectiveDsl.g:3206:2: ( '=>' )
+                    // InternalPerspectiveDsl.g:3207:3: '=>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
@@ -11179,16 +11409,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:3150:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalPerspectiveDsl.g:3212:2: ( ( rule__OpOther__Group_5__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3150:2: ( ( rule__OpOther__Group_5__0 ) )
-                    // InternalPerspectiveDsl.g:3151:3: ( rule__OpOther__Group_5__0 )
+                    // InternalPerspectiveDsl.g:3212:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalPerspectiveDsl.g:3213:3: ( rule__OpOther__Group_5__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_5()); 
                     }
-                    // InternalPerspectiveDsl.g:3152:3: ( rule__OpOther__Group_5__0 )
-                    // InternalPerspectiveDsl.g:3152:4: rule__OpOther__Group_5__0
+                    // InternalPerspectiveDsl.g:3214:3: ( rule__OpOther__Group_5__0 )
+                    // InternalPerspectiveDsl.g:3214:4: rule__OpOther__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_5__0();
@@ -11208,16 +11438,16 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:3156:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalPerspectiveDsl.g:3218:2: ( ( rule__OpOther__Group_6__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3156:2: ( ( rule__OpOther__Group_6__0 ) )
-                    // InternalPerspectiveDsl.g:3157:3: ( rule__OpOther__Group_6__0 )
+                    // InternalPerspectiveDsl.g:3218:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalPerspectiveDsl.g:3219:3: ( rule__OpOther__Group_6__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_6()); 
                     }
-                    // InternalPerspectiveDsl.g:3158:3: ( rule__OpOther__Group_6__0 )
-                    // InternalPerspectiveDsl.g:3158:4: rule__OpOther__Group_6__0
+                    // InternalPerspectiveDsl.g:3220:3: ( rule__OpOther__Group_6__0 )
+                    // InternalPerspectiveDsl.g:3220:4: rule__OpOther__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_6__0();
@@ -11237,10 +11467,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalPerspectiveDsl.g:3162:2: ( '<>' )
+                    // InternalPerspectiveDsl.g:3224:2: ( '<>' )
                     {
-                    // InternalPerspectiveDsl.g:3162:2: ( '<>' )
-                    // InternalPerspectiveDsl.g:3163:3: '<>'
+                    // InternalPerspectiveDsl.g:3224:2: ( '<>' )
+                    // InternalPerspectiveDsl.g:3225:3: '<>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
@@ -11256,10 +11486,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalPerspectiveDsl.g:3168:2: ( '?:' )
+                    // InternalPerspectiveDsl.g:3230:2: ( '?:' )
                     {
-                    // InternalPerspectiveDsl.g:3168:2: ( '?:' )
-                    // InternalPerspectiveDsl.g:3169:3: '?:'
+                    // InternalPerspectiveDsl.g:3230:2: ( '?:' )
+                    // InternalPerspectiveDsl.g:3231:3: '?:'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
@@ -11292,13 +11522,13 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives_5_1"
-    // InternalPerspectiveDsl.g:3178:1: rule__OpOther__Alternatives_5_1 : ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) );
+    // InternalPerspectiveDsl.g:3240:1: rule__OpOther__Alternatives_5_1 : ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) );
     public final void rule__OpOther__Alternatives_5_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3182:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
+            // InternalPerspectiveDsl.g:3244:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
             int alt17=2;
             int LA17_0 = input.LA(1);
 
@@ -11308,7 +11538,7 @@
                 if ( (LA17_1==26) ) {
                     alt17=1;
                 }
-                else if ( (LA17_1==EOF||(LA17_1>=RULE_ID && LA17_1<=RULE_DECIMAL)||LA17_1==27||(LA17_1>=34 && LA17_1<=35)||LA17_1==40||(LA17_1>=45 && LA17_1<=50)||LA17_1==54||LA17_1==89||(LA17_1>=93 && LA17_1<=94)||LA17_1==97||LA17_1==99||(LA17_1>=103 && LA17_1<=111)||LA17_1==113||LA17_1==124) ) {
+                else if ( (LA17_1==EOF||(LA17_1>=RULE_ID && LA17_1<=RULE_DECIMAL)||LA17_1==27||(LA17_1>=34 && LA17_1<=35)||LA17_1==40||(LA17_1>=45 && LA17_1<=50)||LA17_1==54||LA17_1==91||(LA17_1>=95 && LA17_1<=96)||LA17_1==99||LA17_1==101||(LA17_1>=105 && LA17_1<=113)||LA17_1==115||LA17_1==126) ) {
                     alt17=2;
                 }
                 else {
@@ -11328,16 +11558,16 @@
             }
             switch (alt17) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3183:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3245:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3183:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
-                    // InternalPerspectiveDsl.g:3184:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalPerspectiveDsl.g:3245:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3246:3: ( rule__OpOther__Group_5_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3185:3: ( rule__OpOther__Group_5_1_0__0 )
-                    // InternalPerspectiveDsl.g:3185:4: rule__OpOther__Group_5_1_0__0
+                    // InternalPerspectiveDsl.g:3247:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalPerspectiveDsl.g:3247:4: rule__OpOther__Group_5_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_5_1_0__0();
@@ -11357,10 +11587,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3189:2: ( '>' )
+                    // InternalPerspectiveDsl.g:3251:2: ( '>' )
                     {
-                    // InternalPerspectiveDsl.g:3189:2: ( '>' )
-                    // InternalPerspectiveDsl.g:3190:3: '>'
+                    // InternalPerspectiveDsl.g:3251:2: ( '>' )
+                    // InternalPerspectiveDsl.g:3252:3: '>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
@@ -11393,23 +11623,23 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives_6_1"
-    // InternalPerspectiveDsl.g:3199:1: rule__OpOther__Alternatives_6_1 : ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) );
+    // InternalPerspectiveDsl.g:3261:1: rule__OpOther__Alternatives_6_1 : ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) );
     public final void rule__OpOther__Alternatives_6_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3203:1: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) )
+            // InternalPerspectiveDsl.g:3265:1: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) )
             int alt18=3;
             int LA18_0 = input.LA(1);
 
             if ( (LA18_0==27) ) {
                 int LA18_1 = input.LA(2);
 
-                if ( (synpred48_InternalPerspectiveDsl()) ) {
+                if ( (synpred50_InternalPerspectiveDsl()) ) {
                     alt18=1;
                 }
-                else if ( (synpred49_InternalPerspectiveDsl()) ) {
+                else if ( (synpred51_InternalPerspectiveDsl()) ) {
                     alt18=2;
                 }
                 else {
@@ -11432,16 +11662,16 @@
             }
             switch (alt18) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3204:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3266:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3204:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
-                    // InternalPerspectiveDsl.g:3205:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalPerspectiveDsl.g:3266:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3267:3: ( rule__OpOther__Group_6_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3206:3: ( rule__OpOther__Group_6_1_0__0 )
-                    // InternalPerspectiveDsl.g:3206:4: rule__OpOther__Group_6_1_0__0
+                    // InternalPerspectiveDsl.g:3268:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalPerspectiveDsl.g:3268:4: rule__OpOther__Group_6_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_6_1_0__0();
@@ -11461,10 +11691,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3210:2: ( '<' )
+                    // InternalPerspectiveDsl.g:3272:2: ( '<' )
                     {
-                    // InternalPerspectiveDsl.g:3210:2: ( '<' )
-                    // InternalPerspectiveDsl.g:3211:3: '<'
+                    // InternalPerspectiveDsl.g:3272:2: ( '<' )
+                    // InternalPerspectiveDsl.g:3273:3: '<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
@@ -11480,10 +11710,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3216:2: ( '=>' )
+                    // InternalPerspectiveDsl.g:3278:2: ( '=>' )
                     {
-                    // InternalPerspectiveDsl.g:3216:2: ( '=>' )
-                    // InternalPerspectiveDsl.g:3217:3: '=>'
+                    // InternalPerspectiveDsl.g:3278:2: ( '=>' )
+                    // InternalPerspectiveDsl.g:3279:3: '=>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
@@ -11516,13 +11746,13 @@
 
 
     // $ANTLR start "rule__OpAdd__Alternatives"
-    // InternalPerspectiveDsl.g:3226:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
+    // InternalPerspectiveDsl.g:3288:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
     public final void rule__OpAdd__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3230:1: ( ( '+' ) | ( '-' ) )
+            // InternalPerspectiveDsl.g:3292:1: ( ( '+' ) | ( '-' ) )
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -11541,10 +11771,10 @@
             }
             switch (alt19) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3231:2: ( '+' )
+                    // InternalPerspectiveDsl.g:3293:2: ( '+' )
                     {
-                    // InternalPerspectiveDsl.g:3231:2: ( '+' )
-                    // InternalPerspectiveDsl.g:3232:3: '+'
+                    // InternalPerspectiveDsl.g:3293:2: ( '+' )
+                    // InternalPerspectiveDsl.g:3294:3: '+'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
@@ -11560,10 +11790,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3237:2: ( '-' )
+                    // InternalPerspectiveDsl.g:3299:2: ( '-' )
                     {
-                    // InternalPerspectiveDsl.g:3237:2: ( '-' )
-                    // InternalPerspectiveDsl.g:3238:3: '-'
+                    // InternalPerspectiveDsl.g:3299:2: ( '-' )
+                    // InternalPerspectiveDsl.g:3300:3: '-'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
@@ -11596,13 +11826,13 @@
 
 
     // $ANTLR start "rule__OpMulti__Alternatives"
-    // InternalPerspectiveDsl.g:3247:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
+    // InternalPerspectiveDsl.g:3309:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
     public final void rule__OpMulti__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3251:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
+            // InternalPerspectiveDsl.g:3313:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
             int alt20=4;
             switch ( input.LA(1) ) {
             case 36:
@@ -11635,10 +11865,10 @@
 
             switch (alt20) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3252:2: ( '*' )
+                    // InternalPerspectiveDsl.g:3314:2: ( '*' )
                     {
-                    // InternalPerspectiveDsl.g:3252:2: ( '*' )
-                    // InternalPerspectiveDsl.g:3253:3: '*'
+                    // InternalPerspectiveDsl.g:3314:2: ( '*' )
+                    // InternalPerspectiveDsl.g:3315:3: '*'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
@@ -11654,10 +11884,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3258:2: ( '**' )
+                    // InternalPerspectiveDsl.g:3320:2: ( '**' )
                     {
-                    // InternalPerspectiveDsl.g:3258:2: ( '**' )
-                    // InternalPerspectiveDsl.g:3259:3: '**'
+                    // InternalPerspectiveDsl.g:3320:2: ( '**' )
+                    // InternalPerspectiveDsl.g:3321:3: '**'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
@@ -11673,10 +11903,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3264:2: ( '/' )
+                    // InternalPerspectiveDsl.g:3326:2: ( '/' )
                     {
-                    // InternalPerspectiveDsl.g:3264:2: ( '/' )
-                    // InternalPerspectiveDsl.g:3265:3: '/'
+                    // InternalPerspectiveDsl.g:3326:2: ( '/' )
+                    // InternalPerspectiveDsl.g:3327:3: '/'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
@@ -11692,10 +11922,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3270:2: ( '%' )
+                    // InternalPerspectiveDsl.g:3332:2: ( '%' )
                     {
-                    // InternalPerspectiveDsl.g:3270:2: ( '%' )
-                    // InternalPerspectiveDsl.g:3271:3: '%'
+                    // InternalPerspectiveDsl.g:3332:2: ( '%' )
+                    // InternalPerspectiveDsl.g:3333:3: '%'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
@@ -11728,20 +11958,20 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Alternatives"
-    // InternalPerspectiveDsl.g:3280:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
+    // InternalPerspectiveDsl.g:3342:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
     public final void rule__XUnaryOperation__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3284:1: ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) )
+            // InternalPerspectiveDsl.g:3346:1: ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) )
             int alt21=2;
             int LA21_0 = input.LA(1);
 
             if ( ((LA21_0>=34 && LA21_0<=35)||LA21_0==40) ) {
                 alt21=1;
             }
-            else if ( ((LA21_0>=RULE_ID && LA21_0<=RULE_DECIMAL)||LA21_0==27||(LA21_0>=45 && LA21_0<=50)||LA21_0==54||LA21_0==89||(LA21_0>=93 && LA21_0<=94)||LA21_0==97||LA21_0==99||(LA21_0>=103 && LA21_0<=111)||LA21_0==113||LA21_0==124) ) {
+            else if ( ((LA21_0>=RULE_ID && LA21_0<=RULE_DECIMAL)||LA21_0==27||(LA21_0>=45 && LA21_0<=50)||LA21_0==54||LA21_0==91||(LA21_0>=95 && LA21_0<=96)||LA21_0==99||LA21_0==101||(LA21_0>=105 && LA21_0<=113)||LA21_0==115||LA21_0==126) ) {
                 alt21=2;
             }
             else {
@@ -11753,16 +11983,16 @@
             }
             switch (alt21) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3285:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3347:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3285:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
-                    // InternalPerspectiveDsl.g:3286:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3347:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3348:3: ( rule__XUnaryOperation__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXUnaryOperationAccess().getGroup_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3287:3: ( rule__XUnaryOperation__Group_0__0 )
-                    // InternalPerspectiveDsl.g:3287:4: rule__XUnaryOperation__Group_0__0
+                    // InternalPerspectiveDsl.g:3349:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3349:4: rule__XUnaryOperation__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XUnaryOperation__Group_0__0();
@@ -11782,10 +12012,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3291:2: ( ruleXCastedExpression )
+                    // InternalPerspectiveDsl.g:3353:2: ( ruleXCastedExpression )
                     {
-                    // InternalPerspectiveDsl.g:3291:2: ( ruleXCastedExpression )
-                    // InternalPerspectiveDsl.g:3292:3: ruleXCastedExpression
+                    // InternalPerspectiveDsl.g:3353:2: ( ruleXCastedExpression )
+                    // InternalPerspectiveDsl.g:3354:3: ruleXCastedExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
@@ -11822,13 +12052,13 @@
 
 
     // $ANTLR start "rule__OpUnary__Alternatives"
-    // InternalPerspectiveDsl.g:3301:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
+    // InternalPerspectiveDsl.g:3363:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
     public final void rule__OpUnary__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3305:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
+            // InternalPerspectiveDsl.g:3367:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
             int alt22=3;
             switch ( input.LA(1) ) {
             case 40:
@@ -11856,10 +12086,10 @@
 
             switch (alt22) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3306:2: ( '!' )
+                    // InternalPerspectiveDsl.g:3368:2: ( '!' )
                     {
-                    // InternalPerspectiveDsl.g:3306:2: ( '!' )
-                    // InternalPerspectiveDsl.g:3307:3: '!'
+                    // InternalPerspectiveDsl.g:3368:2: ( '!' )
+                    // InternalPerspectiveDsl.g:3369:3: '!'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
@@ -11875,10 +12105,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3312:2: ( '-' )
+                    // InternalPerspectiveDsl.g:3374:2: ( '-' )
                     {
-                    // InternalPerspectiveDsl.g:3312:2: ( '-' )
-                    // InternalPerspectiveDsl.g:3313:3: '-'
+                    // InternalPerspectiveDsl.g:3374:2: ( '-' )
+                    // InternalPerspectiveDsl.g:3375:3: '-'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
@@ -11894,10 +12124,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3318:2: ( '+' )
+                    // InternalPerspectiveDsl.g:3380:2: ( '+' )
                     {
-                    // InternalPerspectiveDsl.g:3318:2: ( '+' )
-                    // InternalPerspectiveDsl.g:3319:3: '+'
+                    // InternalPerspectiveDsl.g:3380:2: ( '+' )
+                    // InternalPerspectiveDsl.g:3381:3: '+'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
@@ -11930,13 +12160,13 @@
 
 
     // $ANTLR start "rule__OpPostfix__Alternatives"
-    // InternalPerspectiveDsl.g:3328:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
+    // InternalPerspectiveDsl.g:3390:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
     public final void rule__OpPostfix__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3332:1: ( ( '++' ) | ( '--' ) )
+            // InternalPerspectiveDsl.g:3394:1: ( ( '++' ) | ( '--' ) )
             int alt23=2;
             int LA23_0 = input.LA(1);
 
@@ -11955,10 +12185,10 @@
             }
             switch (alt23) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3333:2: ( '++' )
+                    // InternalPerspectiveDsl.g:3395:2: ( '++' )
                     {
-                    // InternalPerspectiveDsl.g:3333:2: ( '++' )
-                    // InternalPerspectiveDsl.g:3334:3: '++'
+                    // InternalPerspectiveDsl.g:3395:2: ( '++' )
+                    // InternalPerspectiveDsl.g:3396:3: '++'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
@@ -11974,10 +12204,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3339:2: ( '--' )
+                    // InternalPerspectiveDsl.g:3401:2: ( '--' )
                     {
-                    // InternalPerspectiveDsl.g:3339:2: ( '--' )
-                    // InternalPerspectiveDsl.g:3340:3: '--'
+                    // InternalPerspectiveDsl.g:3401:2: ( '--' )
+                    // InternalPerspectiveDsl.g:3402:3: '--'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); 
@@ -12010,27 +12240,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1"
-    // InternalPerspectiveDsl.g:3349:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3411:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3353:1: ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3415:1: ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) )
             int alt24=2;
             alt24 = dfa24.predict(input);
             switch (alt24) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3354:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3416:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3354:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
-                    // InternalPerspectiveDsl.g:3355:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalPerspectiveDsl.g:3416:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3417:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3356:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
-                    // InternalPerspectiveDsl.g:3356:4: rule__XMemberFeatureCall__Group_1_0__0
+                    // InternalPerspectiveDsl.g:3418:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalPerspectiveDsl.g:3418:4: rule__XMemberFeatureCall__Group_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_0__0();
@@ -12050,16 +12280,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3360:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3422:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3360:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
-                    // InternalPerspectiveDsl.g:3361:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalPerspectiveDsl.g:3422:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3423:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3362:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
-                    // InternalPerspectiveDsl.g:3362:4: rule__XMemberFeatureCall__Group_1_1__0
+                    // InternalPerspectiveDsl.g:3424:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalPerspectiveDsl.g:3424:4: rule__XMemberFeatureCall__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1__0();
@@ -12096,20 +12326,20 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_0_0_0_1"
-    // InternalPerspectiveDsl.g:3370:1: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) );
+    // InternalPerspectiveDsl.g:3432:1: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1_0_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3374:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) )
+            // InternalPerspectiveDsl.g:3436:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) )
             int alt25=2;
             int LA25_0 = input.LA(1);
 
             if ( (LA25_0==43) ) {
                 alt25=1;
             }
-            else if ( (LA25_0==120) ) {
+            else if ( (LA25_0==122) ) {
                 alt25=2;
             }
             else {
@@ -12121,10 +12351,10 @@
             }
             switch (alt25) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3375:2: ( '.' )
+                    // InternalPerspectiveDsl.g:3437:2: ( '.' )
                     {
-                    // InternalPerspectiveDsl.g:3375:2: ( '.' )
-                    // InternalPerspectiveDsl.g:3376:3: '.'
+                    // InternalPerspectiveDsl.g:3437:2: ( '.' )
+                    // InternalPerspectiveDsl.g:3438:3: '.'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); 
@@ -12140,16 +12370,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3381:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalPerspectiveDsl.g:3443:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:3381:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
-                    // InternalPerspectiveDsl.g:3382:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalPerspectiveDsl.g:3443:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalPerspectiveDsl.g:3444:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3383:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
-                    // InternalPerspectiveDsl.g:3383:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1
+                    // InternalPerspectiveDsl.g:3445:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalPerspectiveDsl.g:3445:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1();
@@ -12186,13 +12416,13 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_1_0_0_1"
-    // InternalPerspectiveDsl.g:3391:1: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) );
+    // InternalPerspectiveDsl.g:3453:1: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3395:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) )
+            // InternalPerspectiveDsl.g:3457:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) )
             int alt26=3;
             switch ( input.LA(1) ) {
             case 43:
@@ -12200,12 +12430,12 @@
                 alt26=1;
                 }
                 break;
-            case 121:
+            case 123:
                 {
                 alt26=2;
                 }
                 break;
-            case 120:
+            case 122:
                 {
                 alt26=3;
                 }
@@ -12220,10 +12450,10 @@
 
             switch (alt26) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3396:2: ( '.' )
+                    // InternalPerspectiveDsl.g:3458:2: ( '.' )
                     {
-                    // InternalPerspectiveDsl.g:3396:2: ( '.' )
-                    // InternalPerspectiveDsl.g:3397:3: '.'
+                    // InternalPerspectiveDsl.g:3458:2: ( '.' )
+                    // InternalPerspectiveDsl.g:3459:3: '.'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); 
@@ -12239,16 +12469,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3402:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    // InternalPerspectiveDsl.g:3464:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:3402:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
-                    // InternalPerspectiveDsl.g:3403:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    // InternalPerspectiveDsl.g:3464:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    // InternalPerspectiveDsl.g:3465:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3404:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
-                    // InternalPerspectiveDsl.g:3404:4: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1
+                    // InternalPerspectiveDsl.g:3466:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    // InternalPerspectiveDsl.g:3466:4: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1();
@@ -12268,16 +12498,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3408:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    // InternalPerspectiveDsl.g:3470:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
                     {
-                    // InternalPerspectiveDsl.g:3408:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
-                    // InternalPerspectiveDsl.g:3409:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    // InternalPerspectiveDsl.g:3470:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    // InternalPerspectiveDsl.g:3471:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); 
                     }
-                    // InternalPerspectiveDsl.g:3410:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
-                    // InternalPerspectiveDsl.g:3410:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2
+                    // InternalPerspectiveDsl.g:3472:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    // InternalPerspectiveDsl.g:3472:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2();
@@ -12314,27 +12544,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_1_3_1"
-    // InternalPerspectiveDsl.g:3418:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3480:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1_1_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3422:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3484:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) )
             int alt27=2;
             alt27 = dfa27.predict(input);
             switch (alt27) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3423:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    // InternalPerspectiveDsl.g:3485:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3423:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
-                    // InternalPerspectiveDsl.g:3424:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    // InternalPerspectiveDsl.g:3485:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    // InternalPerspectiveDsl.g:3486:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3425:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
-                    // InternalPerspectiveDsl.g:3425:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
+                    // InternalPerspectiveDsl.g:3487:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    // InternalPerspectiveDsl.g:3487:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0();
@@ -12354,16 +12584,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3429:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3491:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3429:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
-                    // InternalPerspectiveDsl.g:3430:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    // InternalPerspectiveDsl.g:3491:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3492:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3431:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
-                    // InternalPerspectiveDsl.g:3431:4: rule__XMemberFeatureCall__Group_1_1_3_1_1__0
+                    // InternalPerspectiveDsl.g:3493:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    // InternalPerspectiveDsl.g:3493:4: rule__XMemberFeatureCall__Group_1_1_3_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1_3_1_1__0();
@@ -12400,21 +12630,21 @@
 
 
     // $ANTLR start "rule__XPrimaryExpression__Alternatives"
-    // InternalPerspectiveDsl.g:3439:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );
+    // InternalPerspectiveDsl.g:3501:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );
     public final void rule__XPrimaryExpression__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3443:1: ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) )
+            // InternalPerspectiveDsl.g:3505:1: ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) )
             int alt28=15;
             alt28 = dfa28.predict(input);
             switch (alt28) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3444:2: ( ruleXConstructorCall )
+                    // InternalPerspectiveDsl.g:3506:2: ( ruleXConstructorCall )
                     {
-                    // InternalPerspectiveDsl.g:3444:2: ( ruleXConstructorCall )
-                    // InternalPerspectiveDsl.g:3445:3: ruleXConstructorCall
+                    // InternalPerspectiveDsl.g:3506:2: ( ruleXConstructorCall )
+                    // InternalPerspectiveDsl.g:3507:3: ruleXConstructorCall
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); 
@@ -12434,10 +12664,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3450:2: ( ruleXBlockExpression )
+                    // InternalPerspectiveDsl.g:3512:2: ( ruleXBlockExpression )
                     {
-                    // InternalPerspectiveDsl.g:3450:2: ( ruleXBlockExpression )
-                    // InternalPerspectiveDsl.g:3451:3: ruleXBlockExpression
+                    // InternalPerspectiveDsl.g:3512:2: ( ruleXBlockExpression )
+                    // InternalPerspectiveDsl.g:3513:3: ruleXBlockExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); 
@@ -12457,10 +12687,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3456:2: ( ruleXSwitchExpression )
+                    // InternalPerspectiveDsl.g:3518:2: ( ruleXSwitchExpression )
                     {
-                    // InternalPerspectiveDsl.g:3456:2: ( ruleXSwitchExpression )
-                    // InternalPerspectiveDsl.g:3457:3: ruleXSwitchExpression
+                    // InternalPerspectiveDsl.g:3518:2: ( ruleXSwitchExpression )
+                    // InternalPerspectiveDsl.g:3519:3: ruleXSwitchExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); 
@@ -12480,16 +12710,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3462:2: ( ( ruleXSynchronizedExpression ) )
+                    // InternalPerspectiveDsl.g:3524:2: ( ( ruleXSynchronizedExpression ) )
                     {
-                    // InternalPerspectiveDsl.g:3462:2: ( ( ruleXSynchronizedExpression ) )
-                    // InternalPerspectiveDsl.g:3463:3: ( ruleXSynchronizedExpression )
+                    // InternalPerspectiveDsl.g:3524:2: ( ( ruleXSynchronizedExpression ) )
+                    // InternalPerspectiveDsl.g:3525:3: ( ruleXSynchronizedExpression )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
                     }
-                    // InternalPerspectiveDsl.g:3464:3: ( ruleXSynchronizedExpression )
-                    // InternalPerspectiveDsl.g:3464:4: ruleXSynchronizedExpression
+                    // InternalPerspectiveDsl.g:3526:3: ( ruleXSynchronizedExpression )
+                    // InternalPerspectiveDsl.g:3526:4: ruleXSynchronizedExpression
                     {
                     pushFollow(FOLLOW_2);
                     ruleXSynchronizedExpression();
@@ -12509,10 +12739,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:3468:2: ( ruleXFeatureCall )
+                    // InternalPerspectiveDsl.g:3530:2: ( ruleXFeatureCall )
                     {
-                    // InternalPerspectiveDsl.g:3468:2: ( ruleXFeatureCall )
-                    // InternalPerspectiveDsl.g:3469:3: ruleXFeatureCall
+                    // InternalPerspectiveDsl.g:3530:2: ( ruleXFeatureCall )
+                    // InternalPerspectiveDsl.g:3531:3: ruleXFeatureCall
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); 
@@ -12532,10 +12762,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:3474:2: ( ruleXLiteral )
+                    // InternalPerspectiveDsl.g:3536:2: ( ruleXLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3474:2: ( ruleXLiteral )
-                    // InternalPerspectiveDsl.g:3475:3: ruleXLiteral
+                    // InternalPerspectiveDsl.g:3536:2: ( ruleXLiteral )
+                    // InternalPerspectiveDsl.g:3537:3: ruleXLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); 
@@ -12555,10 +12785,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:3480:2: ( ruleXIfExpression )
+                    // InternalPerspectiveDsl.g:3542:2: ( ruleXIfExpression )
                     {
-                    // InternalPerspectiveDsl.g:3480:2: ( ruleXIfExpression )
-                    // InternalPerspectiveDsl.g:3481:3: ruleXIfExpression
+                    // InternalPerspectiveDsl.g:3542:2: ( ruleXIfExpression )
+                    // InternalPerspectiveDsl.g:3543:3: ruleXIfExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); 
@@ -12578,16 +12808,16 @@
                     }
                     break;
                 case 8 :
-                    // InternalPerspectiveDsl.g:3486:2: ( ( ruleXForLoopExpression ) )
+                    // InternalPerspectiveDsl.g:3548:2: ( ( ruleXForLoopExpression ) )
                     {
-                    // InternalPerspectiveDsl.g:3486:2: ( ( ruleXForLoopExpression ) )
-                    // InternalPerspectiveDsl.g:3487:3: ( ruleXForLoopExpression )
+                    // InternalPerspectiveDsl.g:3548:2: ( ( ruleXForLoopExpression ) )
+                    // InternalPerspectiveDsl.g:3549:3: ( ruleXForLoopExpression )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
                     }
-                    // InternalPerspectiveDsl.g:3488:3: ( ruleXForLoopExpression )
-                    // InternalPerspectiveDsl.g:3488:4: ruleXForLoopExpression
+                    // InternalPerspectiveDsl.g:3550:3: ( ruleXForLoopExpression )
+                    // InternalPerspectiveDsl.g:3550:4: ruleXForLoopExpression
                     {
                     pushFollow(FOLLOW_2);
                     ruleXForLoopExpression();
@@ -12607,10 +12837,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalPerspectiveDsl.g:3492:2: ( ruleXBasicForLoopExpression )
+                    // InternalPerspectiveDsl.g:3554:2: ( ruleXBasicForLoopExpression )
                     {
-                    // InternalPerspectiveDsl.g:3492:2: ( ruleXBasicForLoopExpression )
-                    // InternalPerspectiveDsl.g:3493:3: ruleXBasicForLoopExpression
+                    // InternalPerspectiveDsl.g:3554:2: ( ruleXBasicForLoopExpression )
+                    // InternalPerspectiveDsl.g:3555:3: ruleXBasicForLoopExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
@@ -12630,10 +12860,10 @@
                     }
                     break;
                 case 10 :
-                    // InternalPerspectiveDsl.g:3498:2: ( ruleXWhileExpression )
+                    // InternalPerspectiveDsl.g:3560:2: ( ruleXWhileExpression )
                     {
-                    // InternalPerspectiveDsl.g:3498:2: ( ruleXWhileExpression )
-                    // InternalPerspectiveDsl.g:3499:3: ruleXWhileExpression
+                    // InternalPerspectiveDsl.g:3560:2: ( ruleXWhileExpression )
+                    // InternalPerspectiveDsl.g:3561:3: ruleXWhileExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); 
@@ -12653,10 +12883,10 @@
                     }
                     break;
                 case 11 :
-                    // InternalPerspectiveDsl.g:3504:2: ( ruleXDoWhileExpression )
+                    // InternalPerspectiveDsl.g:3566:2: ( ruleXDoWhileExpression )
                     {
-                    // InternalPerspectiveDsl.g:3504:2: ( ruleXDoWhileExpression )
-                    // InternalPerspectiveDsl.g:3505:3: ruleXDoWhileExpression
+                    // InternalPerspectiveDsl.g:3566:2: ( ruleXDoWhileExpression )
+                    // InternalPerspectiveDsl.g:3567:3: ruleXDoWhileExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); 
@@ -12676,10 +12906,10 @@
                     }
                     break;
                 case 12 :
-                    // InternalPerspectiveDsl.g:3510:2: ( ruleXThrowExpression )
+                    // InternalPerspectiveDsl.g:3572:2: ( ruleXThrowExpression )
                     {
-                    // InternalPerspectiveDsl.g:3510:2: ( ruleXThrowExpression )
-                    // InternalPerspectiveDsl.g:3511:3: ruleXThrowExpression
+                    // InternalPerspectiveDsl.g:3572:2: ( ruleXThrowExpression )
+                    // InternalPerspectiveDsl.g:3573:3: ruleXThrowExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); 
@@ -12699,10 +12929,10 @@
                     }
                     break;
                 case 13 :
-                    // InternalPerspectiveDsl.g:3516:2: ( ruleXReturnExpression )
+                    // InternalPerspectiveDsl.g:3578:2: ( ruleXReturnExpression )
                     {
-                    // InternalPerspectiveDsl.g:3516:2: ( ruleXReturnExpression )
-                    // InternalPerspectiveDsl.g:3517:3: ruleXReturnExpression
+                    // InternalPerspectiveDsl.g:3578:2: ( ruleXReturnExpression )
+                    // InternalPerspectiveDsl.g:3579:3: ruleXReturnExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); 
@@ -12722,10 +12952,10 @@
                     }
                     break;
                 case 14 :
-                    // InternalPerspectiveDsl.g:3522:2: ( ruleXTryCatchFinallyExpression )
+                    // InternalPerspectiveDsl.g:3584:2: ( ruleXTryCatchFinallyExpression )
                     {
-                    // InternalPerspectiveDsl.g:3522:2: ( ruleXTryCatchFinallyExpression )
-                    // InternalPerspectiveDsl.g:3523:3: ruleXTryCatchFinallyExpression
+                    // InternalPerspectiveDsl.g:3584:2: ( ruleXTryCatchFinallyExpression )
+                    // InternalPerspectiveDsl.g:3585:3: ruleXTryCatchFinallyExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); 
@@ -12745,10 +12975,10 @@
                     }
                     break;
                 case 15 :
-                    // InternalPerspectiveDsl.g:3528:2: ( ruleXParenthesizedExpression )
+                    // InternalPerspectiveDsl.g:3590:2: ( ruleXParenthesizedExpression )
                     {
-                    // InternalPerspectiveDsl.g:3528:2: ( ruleXParenthesizedExpression )
-                    // InternalPerspectiveDsl.g:3529:3: ruleXParenthesizedExpression
+                    // InternalPerspectiveDsl.g:3590:2: ( ruleXParenthesizedExpression )
+                    // InternalPerspectiveDsl.g:3591:3: ruleXParenthesizedExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); 
@@ -12785,27 +13015,27 @@
 
 
     // $ANTLR start "rule__XLiteral__Alternatives"
-    // InternalPerspectiveDsl.g:3538:1: rule__XLiteral__Alternatives : ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) );
+    // InternalPerspectiveDsl.g:3600:1: rule__XLiteral__Alternatives : ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) );
     public final void rule__XLiteral__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3542:1: ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) )
+            // InternalPerspectiveDsl.g:3604:1: ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) )
             int alt29=7;
             switch ( input.LA(1) ) {
-            case 93:
+            case 95:
                 {
                 alt29=1;
                 }
                 break;
-            case 94:
+            case 96:
                 {
                 alt29=2;
                 }
                 break;
             case 50:
-            case 124:
+            case 126:
                 {
                 alt29=3;
                 }
@@ -12817,7 +13047,7 @@
                 alt29=4;
                 }
                 break;
-            case 107:
+            case 109:
                 {
                 alt29=5;
                 }
@@ -12827,7 +13057,7 @@
                 alt29=6;
                 }
                 break;
-            case 108:
+            case 110:
                 {
                 alt29=7;
                 }
@@ -12842,10 +13072,10 @@
 
             switch (alt29) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3543:2: ( ruleXCollectionLiteral )
+                    // InternalPerspectiveDsl.g:3605:2: ( ruleXCollectionLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3543:2: ( ruleXCollectionLiteral )
-                    // InternalPerspectiveDsl.g:3544:3: ruleXCollectionLiteral
+                    // InternalPerspectiveDsl.g:3605:2: ( ruleXCollectionLiteral )
+                    // InternalPerspectiveDsl.g:3606:3: ruleXCollectionLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); 
@@ -12865,16 +13095,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3549:2: ( ( ruleXClosure ) )
+                    // InternalPerspectiveDsl.g:3611:2: ( ( ruleXClosure ) )
                     {
-                    // InternalPerspectiveDsl.g:3549:2: ( ( ruleXClosure ) )
-                    // InternalPerspectiveDsl.g:3550:3: ( ruleXClosure )
+                    // InternalPerspectiveDsl.g:3611:2: ( ( ruleXClosure ) )
+                    // InternalPerspectiveDsl.g:3612:3: ( ruleXClosure )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3551:3: ( ruleXClosure )
-                    // InternalPerspectiveDsl.g:3551:4: ruleXClosure
+                    // InternalPerspectiveDsl.g:3613:3: ( ruleXClosure )
+                    // InternalPerspectiveDsl.g:3613:4: ruleXClosure
                     {
                     pushFollow(FOLLOW_2);
                     ruleXClosure();
@@ -12894,10 +13124,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3555:2: ( ruleXBooleanLiteral )
+                    // InternalPerspectiveDsl.g:3617:2: ( ruleXBooleanLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3555:2: ( ruleXBooleanLiteral )
-                    // InternalPerspectiveDsl.g:3556:3: ruleXBooleanLiteral
+                    // InternalPerspectiveDsl.g:3617:2: ( ruleXBooleanLiteral )
+                    // InternalPerspectiveDsl.g:3618:3: ruleXBooleanLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); 
@@ -12917,10 +13147,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3561:2: ( ruleXNumberLiteral )
+                    // InternalPerspectiveDsl.g:3623:2: ( ruleXNumberLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3561:2: ( ruleXNumberLiteral )
-                    // InternalPerspectiveDsl.g:3562:3: ruleXNumberLiteral
+                    // InternalPerspectiveDsl.g:3623:2: ( ruleXNumberLiteral )
+                    // InternalPerspectiveDsl.g:3624:3: ruleXNumberLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); 
@@ -12940,10 +13170,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:3567:2: ( ruleXNullLiteral )
+                    // InternalPerspectiveDsl.g:3629:2: ( ruleXNullLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3567:2: ( ruleXNullLiteral )
-                    // InternalPerspectiveDsl.g:3568:3: ruleXNullLiteral
+                    // InternalPerspectiveDsl.g:3629:2: ( ruleXNullLiteral )
+                    // InternalPerspectiveDsl.g:3630:3: ruleXNullLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); 
@@ -12963,10 +13193,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:3573:2: ( ruleXStringLiteral )
+                    // InternalPerspectiveDsl.g:3635:2: ( ruleXStringLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3573:2: ( ruleXStringLiteral )
-                    // InternalPerspectiveDsl.g:3574:3: ruleXStringLiteral
+                    // InternalPerspectiveDsl.g:3635:2: ( ruleXStringLiteral )
+                    // InternalPerspectiveDsl.g:3636:3: ruleXStringLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); 
@@ -12986,10 +13216,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:3579:2: ( ruleXTypeLiteral )
+                    // InternalPerspectiveDsl.g:3641:2: ( ruleXTypeLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3579:2: ( ruleXTypeLiteral )
-                    // InternalPerspectiveDsl.g:3580:3: ruleXTypeLiteral
+                    // InternalPerspectiveDsl.g:3641:2: ( ruleXTypeLiteral )
+                    // InternalPerspectiveDsl.g:3642:3: ruleXTypeLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); 
@@ -13026,23 +13256,23 @@
 
 
     // $ANTLR start "rule__XCollectionLiteral__Alternatives"
-    // InternalPerspectiveDsl.g:3589:1: rule__XCollectionLiteral__Alternatives : ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) );
+    // InternalPerspectiveDsl.g:3651:1: rule__XCollectionLiteral__Alternatives : ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) );
     public final void rule__XCollectionLiteral__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3593:1: ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) )
+            // InternalPerspectiveDsl.g:3655:1: ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) )
             int alt30=2;
             int LA30_0 = input.LA(1);
 
-            if ( (LA30_0==93) ) {
+            if ( (LA30_0==95) ) {
                 int LA30_1 = input.LA(2);
 
                 if ( (LA30_1==54) ) {
                     alt30=1;
                 }
-                else if ( (LA30_1==94) ) {
+                else if ( (LA30_1==96) ) {
                     alt30=2;
                 }
                 else {
@@ -13062,10 +13292,10 @@
             }
             switch (alt30) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3594:2: ( ruleXSetLiteral )
+                    // InternalPerspectiveDsl.g:3656:2: ( ruleXSetLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3594:2: ( ruleXSetLiteral )
-                    // InternalPerspectiveDsl.g:3595:3: ruleXSetLiteral
+                    // InternalPerspectiveDsl.g:3656:2: ( ruleXSetLiteral )
+                    // InternalPerspectiveDsl.g:3657:3: ruleXSetLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); 
@@ -13085,10 +13315,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3600:2: ( ruleXListLiteral )
+                    // InternalPerspectiveDsl.g:3662:2: ( ruleXListLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3600:2: ( ruleXListLiteral )
-                    // InternalPerspectiveDsl.g:3601:3: ruleXListLiteral
+                    // InternalPerspectiveDsl.g:3662:2: ( ruleXListLiteral )
+                    // InternalPerspectiveDsl.g:3663:3: ruleXListLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); 
@@ -13125,27 +13355,27 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Alternatives_2"
-    // InternalPerspectiveDsl.g:3610:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3672:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );
     public final void rule__XSwitchExpression__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3614:1: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3676:1: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) )
             int alt31=2;
             alt31 = dfa31.predict(input);
             switch (alt31) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3615:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:3677:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3615:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
-                    // InternalPerspectiveDsl.g:3616:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:3677:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:3678:3: ( rule__XSwitchExpression__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3617:3: ( rule__XSwitchExpression__Group_2_0__0 )
-                    // InternalPerspectiveDsl.g:3617:4: rule__XSwitchExpression__Group_2_0__0
+                    // InternalPerspectiveDsl.g:3679:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:3679:4: rule__XSwitchExpression__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_2_0__0();
@@ -13165,16 +13395,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3621:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    // InternalPerspectiveDsl.g:3683:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3621:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
-                    // InternalPerspectiveDsl.g:3622:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    // InternalPerspectiveDsl.g:3683:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    // InternalPerspectiveDsl.g:3684:3: ( rule__XSwitchExpression__Group_2_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3623:3: ( rule__XSwitchExpression__Group_2_1__0 )
-                    // InternalPerspectiveDsl.g:3623:4: rule__XSwitchExpression__Group_2_1__0
+                    // InternalPerspectiveDsl.g:3685:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    // InternalPerspectiveDsl.g:3685:4: rule__XSwitchExpression__Group_2_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_2_1__0();
@@ -13211,20 +13441,20 @@
 
 
     // $ANTLR start "rule__XCasePart__Alternatives_3"
-    // InternalPerspectiveDsl.g:3631:1: rule__XCasePart__Alternatives_3 : ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) );
+    // InternalPerspectiveDsl.g:3693:1: rule__XCasePart__Alternatives_3 : ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) );
     public final void rule__XCasePart__Alternatives_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3635:1: ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) )
+            // InternalPerspectiveDsl.g:3697:1: ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) )
             int alt32=2;
             int LA32_0 = input.LA(1);
 
-            if ( (LA32_0==100) ) {
+            if ( (LA32_0==102) ) {
                 alt32=1;
             }
-            else if ( (LA32_0==91) ) {
+            else if ( (LA32_0==93) ) {
                 alt32=2;
             }
             else {
@@ -13236,16 +13466,16 @@
             }
             switch (alt32) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3636:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:3698:2: ( ( rule__XCasePart__Group_3_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3636:2: ( ( rule__XCasePart__Group_3_0__0 ) )
-                    // InternalPerspectiveDsl.g:3637:3: ( rule__XCasePart__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:3698:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:3699:3: ( rule__XCasePart__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCasePartAccess().getGroup_3_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3638:3: ( rule__XCasePart__Group_3_0__0 )
-                    // InternalPerspectiveDsl.g:3638:4: rule__XCasePart__Group_3_0__0
+                    // InternalPerspectiveDsl.g:3700:3: ( rule__XCasePart__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:3700:4: rule__XCasePart__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__Group_3_0__0();
@@ -13265,16 +13495,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3642:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    // InternalPerspectiveDsl.g:3704:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:3642:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
-                    // InternalPerspectiveDsl.g:3643:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    // InternalPerspectiveDsl.g:3704:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    // InternalPerspectiveDsl.g:3705:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3644:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
-                    // InternalPerspectiveDsl.g:3644:4: rule__XCasePart__FallThroughAssignment_3_1
+                    // InternalPerspectiveDsl.g:3706:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    // InternalPerspectiveDsl.g:3706:4: rule__XCasePart__FallThroughAssignment_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__FallThroughAssignment_3_1();
@@ -13311,20 +13541,20 @@
 
 
     // $ANTLR start "rule__XExpressionOrVarDeclaration__Alternatives"
-    // InternalPerspectiveDsl.g:3652:1: rule__XExpressionOrVarDeclaration__Alternatives : ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) );
+    // InternalPerspectiveDsl.g:3714:1: rule__XExpressionOrVarDeclaration__Alternatives : ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) );
     public final void rule__XExpressionOrVarDeclaration__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3656:1: ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:3718:1: ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) )
             int alt33=2;
             int LA33_0 = input.LA(1);
 
-            if ( (LA33_0==44||LA33_0==123) ) {
+            if ( (LA33_0==44||LA33_0==125) ) {
                 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==89||(LA33_0>=93 && LA33_0<=94)||LA33_0==97||LA33_0==99||(LA33_0>=103 && LA33_0<=111)||LA33_0==113||LA33_0==124) ) {
+            else if ( ((LA33_0>=RULE_ID && LA33_0<=RULE_DECIMAL)||LA33_0==27||(LA33_0>=34 && LA33_0<=35)||LA33_0==40||(LA33_0>=45 && LA33_0<=50)||LA33_0==54||LA33_0==91||(LA33_0>=95 && LA33_0<=96)||LA33_0==99||LA33_0==101||(LA33_0>=105 && LA33_0<=113)||LA33_0==115||LA33_0==126) ) {
                 alt33=2;
             }
             else {
@@ -13336,10 +13566,10 @@
             }
             switch (alt33) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3657:2: ( ruleXVariableDeclaration )
+                    // InternalPerspectiveDsl.g:3719:2: ( ruleXVariableDeclaration )
                     {
-                    // InternalPerspectiveDsl.g:3657:2: ( ruleXVariableDeclaration )
-                    // InternalPerspectiveDsl.g:3658:3: ruleXVariableDeclaration
+                    // InternalPerspectiveDsl.g:3719:2: ( ruleXVariableDeclaration )
+                    // InternalPerspectiveDsl.g:3720:3: ruleXVariableDeclaration
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); 
@@ -13359,10 +13589,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3663:2: ( ruleXExpression )
+                    // InternalPerspectiveDsl.g:3725:2: ( ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:3663:2: ( ruleXExpression )
-                    // InternalPerspectiveDsl.g:3664:3: ruleXExpression
+                    // InternalPerspectiveDsl.g:3725:2: ( ruleXExpression )
+                    // InternalPerspectiveDsl.g:3726:3: ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); 
@@ -13399,17 +13629,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Alternatives_1"
-    // InternalPerspectiveDsl.g:3673:1: rule__XVariableDeclaration__Alternatives_1 : ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) );
+    // InternalPerspectiveDsl.g:3735:1: rule__XVariableDeclaration__Alternatives_1 : ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) );
     public final void rule__XVariableDeclaration__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3677:1: ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) )
+            // InternalPerspectiveDsl.g:3739:1: ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) )
             int alt34=2;
             int LA34_0 = input.LA(1);
 
-            if ( (LA34_0==123) ) {
+            if ( (LA34_0==125) ) {
                 alt34=1;
             }
             else if ( (LA34_0==44) ) {
@@ -13424,16 +13654,16 @@
             }
             switch (alt34) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3678:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    // InternalPerspectiveDsl.g:3740:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3678:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
-                    // InternalPerspectiveDsl.g:3679:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    // InternalPerspectiveDsl.g:3740:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    // InternalPerspectiveDsl.g:3741:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3680:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
-                    // InternalPerspectiveDsl.g:3680:4: rule__XVariableDeclaration__WriteableAssignment_1_0
+                    // InternalPerspectiveDsl.g:3742:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    // InternalPerspectiveDsl.g:3742:4: rule__XVariableDeclaration__WriteableAssignment_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__WriteableAssignment_1_0();
@@ -13453,10 +13683,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3684:2: ( 'val' )
+                    // InternalPerspectiveDsl.g:3746:2: ( 'val' )
                     {
-                    // InternalPerspectiveDsl.g:3684:2: ( 'val' )
-                    // InternalPerspectiveDsl.g:3685:3: 'val'
+                    // InternalPerspectiveDsl.g:3746:2: ( 'val' )
+                    // InternalPerspectiveDsl.g:3747:3: 'val'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); 
@@ -13489,20 +13719,20 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Alternatives_2"
-    // InternalPerspectiveDsl.g:3694:1: rule__XVariableDeclaration__Alternatives_2 : ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) );
+    // InternalPerspectiveDsl.g:3756:1: rule__XVariableDeclaration__Alternatives_2 : ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) );
     public final void rule__XVariableDeclaration__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3698:1: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) )
+            // InternalPerspectiveDsl.g:3760:1: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) )
             int alt35=2;
             int LA35_0 = input.LA(1);
 
             if ( (LA35_0==RULE_ID) ) {
                 int LA35_1 = input.LA(2);
 
-                if ( (synpred88_InternalPerspectiveDsl()) ) {
+                if ( (synpred90_InternalPerspectiveDsl()) ) {
                     alt35=1;
                 }
                 else if ( (true) ) {
@@ -13516,7 +13746,7 @@
                     throw nvae;
                 }
             }
-            else if ( (LA35_0==31||LA35_0==89) ) {
+            else if ( (LA35_0==31||LA35_0==91) ) {
                 alt35=1;
             }
             else {
@@ -13528,16 +13758,16 @@
             }
             switch (alt35) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3699:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:3761:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3699:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
-                    // InternalPerspectiveDsl.g:3700:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:3761:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:3762:3: ( rule__XVariableDeclaration__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3701:3: ( rule__XVariableDeclaration__Group_2_0__0 )
-                    // InternalPerspectiveDsl.g:3701:4: rule__XVariableDeclaration__Group_2_0__0
+                    // InternalPerspectiveDsl.g:3763:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:3763:4: rule__XVariableDeclaration__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__Group_2_0__0();
@@ -13557,16 +13787,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3705:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    // InternalPerspectiveDsl.g:3767:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:3705:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
-                    // InternalPerspectiveDsl.g:3706:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    // InternalPerspectiveDsl.g:3767:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    // InternalPerspectiveDsl.g:3768:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3707:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
-                    // InternalPerspectiveDsl.g:3707:4: rule__XVariableDeclaration__NameAssignment_2_1
+                    // InternalPerspectiveDsl.g:3769:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    // InternalPerspectiveDsl.g:3769:4: rule__XVariableDeclaration__NameAssignment_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__NameAssignment_2_1();
@@ -13603,27 +13833,27 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Alternatives_3_1"
-    // InternalPerspectiveDsl.g:3715:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3777:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );
     public final void rule__XFeatureCall__Alternatives_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3719:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3781:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) )
             int alt36=2;
             alt36 = dfa36.predict(input);
             switch (alt36) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3720:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    // InternalPerspectiveDsl.g:3782:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3720:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
-                    // InternalPerspectiveDsl.g:3721:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    // InternalPerspectiveDsl.g:3782:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    // InternalPerspectiveDsl.g:3783:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3722:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
-                    // InternalPerspectiveDsl.g:3722:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
+                    // InternalPerspectiveDsl.g:3784:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    // InternalPerspectiveDsl.g:3784:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0();
@@ -13643,16 +13873,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3726:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3788:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3726:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
-                    // InternalPerspectiveDsl.g:3727:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    // InternalPerspectiveDsl.g:3788:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3789:3: ( rule__XFeatureCall__Group_3_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3728:3: ( rule__XFeatureCall__Group_3_1_1__0 )
-                    // InternalPerspectiveDsl.g:3728:4: rule__XFeatureCall__Group_3_1_1__0
+                    // InternalPerspectiveDsl.g:3790:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    // InternalPerspectiveDsl.g:3790:4: rule__XFeatureCall__Group_3_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Group_3_1_1__0();
@@ -13689,13 +13919,13 @@
 
 
     // $ANTLR start "rule__FeatureCallID__Alternatives"
-    // InternalPerspectiveDsl.g:3736:1: rule__FeatureCallID__Alternatives : ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) );
+    // InternalPerspectiveDsl.g:3798:1: rule__FeatureCallID__Alternatives : ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) );
     public final void rule__FeatureCallID__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3740:1: ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) )
+            // InternalPerspectiveDsl.g:3802:1: ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) )
             int alt37=5;
             switch ( input.LA(1) ) {
             case RULE_ID:
@@ -13733,10 +13963,10 @@
 
             switch (alt37) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3741:2: ( ruleValidID )
+                    // InternalPerspectiveDsl.g:3803:2: ( ruleValidID )
                     {
-                    // InternalPerspectiveDsl.g:3741:2: ( ruleValidID )
-                    // InternalPerspectiveDsl.g:3742:3: ruleValidID
+                    // InternalPerspectiveDsl.g:3803:2: ( ruleValidID )
+                    // InternalPerspectiveDsl.g:3804:3: ruleValidID
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); 
@@ -13756,10 +13986,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3747:2: ( 'extends' )
+                    // InternalPerspectiveDsl.g:3809:2: ( 'extends' )
                     {
-                    // InternalPerspectiveDsl.g:3747:2: ( 'extends' )
-                    // InternalPerspectiveDsl.g:3748:3: 'extends'
+                    // InternalPerspectiveDsl.g:3809:2: ( 'extends' )
+                    // InternalPerspectiveDsl.g:3810:3: 'extends'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); 
@@ -13775,10 +14005,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3753:2: ( 'static' )
+                    // InternalPerspectiveDsl.g:3815:2: ( 'static' )
                     {
-                    // InternalPerspectiveDsl.g:3753:2: ( 'static' )
-                    // InternalPerspectiveDsl.g:3754:3: 'static'
+                    // InternalPerspectiveDsl.g:3815:2: ( 'static' )
+                    // InternalPerspectiveDsl.g:3816:3: 'static'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); 
@@ -13794,10 +14024,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3759:2: ( 'import' )
+                    // InternalPerspectiveDsl.g:3821:2: ( 'import' )
                     {
-                    // InternalPerspectiveDsl.g:3759:2: ( 'import' )
-                    // InternalPerspectiveDsl.g:3760:3: 'import'
+                    // InternalPerspectiveDsl.g:3821:2: ( 'import' )
+                    // InternalPerspectiveDsl.g:3822:3: 'import'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); 
@@ -13813,10 +14043,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:3765:2: ( 'extension' )
+                    // InternalPerspectiveDsl.g:3827:2: ( 'extension' )
                     {
-                    // InternalPerspectiveDsl.g:3765:2: ( 'extension' )
-                    // InternalPerspectiveDsl.g:3766:3: 'extension'
+                    // InternalPerspectiveDsl.g:3827:2: ( 'extension' )
+                    // InternalPerspectiveDsl.g:3828:3: 'extension'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); 
@@ -13849,13 +14079,13 @@
 
 
     // $ANTLR start "rule__IdOrSuper__Alternatives"
-    // InternalPerspectiveDsl.g:3775:1: rule__IdOrSuper__Alternatives : ( ( ruleFeatureCallID ) | ( 'super' ) );
+    // InternalPerspectiveDsl.g:3837:1: rule__IdOrSuper__Alternatives : ( ( ruleFeatureCallID ) | ( 'super' ) );
     public final void rule__IdOrSuper__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3779:1: ( ( ruleFeatureCallID ) | ( 'super' ) )
+            // InternalPerspectiveDsl.g:3841:1: ( ( ruleFeatureCallID ) | ( 'super' ) )
             int alt38=2;
             int LA38_0 = input.LA(1);
 
@@ -13874,10 +14104,10 @@
             }
             switch (alt38) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3780:2: ( ruleFeatureCallID )
+                    // InternalPerspectiveDsl.g:3842:2: ( ruleFeatureCallID )
                     {
-                    // InternalPerspectiveDsl.g:3780:2: ( ruleFeatureCallID )
-                    // InternalPerspectiveDsl.g:3781:3: ruleFeatureCallID
+                    // InternalPerspectiveDsl.g:3842:2: ( ruleFeatureCallID )
+                    // InternalPerspectiveDsl.g:3843:3: ruleFeatureCallID
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); 
@@ -13897,10 +14127,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3786:2: ( 'super' )
+                    // InternalPerspectiveDsl.g:3848:2: ( 'super' )
                     {
-                    // InternalPerspectiveDsl.g:3786:2: ( 'super' )
-                    // InternalPerspectiveDsl.g:3787:3: 'super'
+                    // InternalPerspectiveDsl.g:3848:2: ( 'super' )
+                    // InternalPerspectiveDsl.g:3849:3: 'super'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); 
@@ -13933,27 +14163,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Alternatives_4_1"
-    // InternalPerspectiveDsl.g:3796:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3858:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );
     public final void rule__XConstructorCall__Alternatives_4_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3800:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3862:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) )
             int alt39=2;
             alt39 = dfa39.predict(input);
             switch (alt39) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3801:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    // InternalPerspectiveDsl.g:3863:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3801:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
-                    // InternalPerspectiveDsl.g:3802:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    // InternalPerspectiveDsl.g:3863:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    // InternalPerspectiveDsl.g:3864:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3803:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
-                    // InternalPerspectiveDsl.g:3803:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
+                    // InternalPerspectiveDsl.g:3865:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    // InternalPerspectiveDsl.g:3865:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__ArgumentsAssignment_4_1_0();
@@ -13973,16 +14203,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3807:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3869:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3807:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
-                    // InternalPerspectiveDsl.g:3808:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    // InternalPerspectiveDsl.g:3869:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3870:3: ( rule__XConstructorCall__Group_4_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3809:3: ( rule__XConstructorCall__Group_4_1_1__0 )
-                    // InternalPerspectiveDsl.g:3809:4: rule__XConstructorCall__Group_4_1_1__0
+                    // InternalPerspectiveDsl.g:3871:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    // InternalPerspectiveDsl.g:3871:4: rule__XConstructorCall__Group_4_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Group_4_1_1__0();
@@ -14019,20 +14249,20 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Alternatives_1"
-    // InternalPerspectiveDsl.g:3817:1: rule__XBooleanLiteral__Alternatives_1 : ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) );
+    // InternalPerspectiveDsl.g:3879:1: rule__XBooleanLiteral__Alternatives_1 : ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) );
     public final void rule__XBooleanLiteral__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3821:1: ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:3883:1: ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) )
             int alt40=2;
             int LA40_0 = input.LA(1);
 
             if ( (LA40_0==50) ) {
                 alt40=1;
             }
-            else if ( (LA40_0==124) ) {
+            else if ( (LA40_0==126) ) {
                 alt40=2;
             }
             else {
@@ -14044,10 +14274,10 @@
             }
             switch (alt40) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3822:2: ( 'false' )
+                    // InternalPerspectiveDsl.g:3884:2: ( 'false' )
                     {
-                    // InternalPerspectiveDsl.g:3822:2: ( 'false' )
-                    // InternalPerspectiveDsl.g:3823:3: 'false'
+                    // InternalPerspectiveDsl.g:3884:2: ( 'false' )
+                    // InternalPerspectiveDsl.g:3885:3: 'false'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); 
@@ -14063,16 +14293,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3828:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    // InternalPerspectiveDsl.g:3890:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:3828:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
-                    // InternalPerspectiveDsl.g:3829:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    // InternalPerspectiveDsl.g:3890:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    // InternalPerspectiveDsl.g:3891:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3830:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
-                    // InternalPerspectiveDsl.g:3830:4: rule__XBooleanLiteral__IsTrueAssignment_1_1
+                    // InternalPerspectiveDsl.g:3892:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    // InternalPerspectiveDsl.g:3892:4: rule__XBooleanLiteral__IsTrueAssignment_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBooleanLiteral__IsTrueAssignment_1_1();
@@ -14109,20 +14339,20 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Alternatives_3"
-    // InternalPerspectiveDsl.g:3838:1: rule__XTryCatchFinallyExpression__Alternatives_3 : ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3900:1: rule__XTryCatchFinallyExpression__Alternatives_3 : ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) );
     public final void rule__XTryCatchFinallyExpression__Alternatives_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3842:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3904:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) )
             int alt41=2;
             int LA41_0 = input.LA(1);
 
-            if ( (LA41_0==114) ) {
+            if ( (LA41_0==116) ) {
                 alt41=1;
             }
-            else if ( (LA41_0==112) ) {
+            else if ( (LA41_0==114) ) {
                 alt41=2;
             }
             else {
@@ -14134,16 +14364,16 @@
             }
             switch (alt41) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3843:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:3905:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3843:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
-                    // InternalPerspectiveDsl.g:3844:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:3905:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:3906:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3845:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
-                    // InternalPerspectiveDsl.g:3845:4: rule__XTryCatchFinallyExpression__Group_3_0__0
+                    // InternalPerspectiveDsl.g:3907:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:3907:4: rule__XTryCatchFinallyExpression__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XTryCatchFinallyExpression__Group_3_0__0();
@@ -14163,16 +14393,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3849:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:3911:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3849:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
-                    // InternalPerspectiveDsl.g:3850:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:3911:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:3912:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3851:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
-                    // InternalPerspectiveDsl.g:3851:4: rule__XTryCatchFinallyExpression__Group_3_1__0
+                    // InternalPerspectiveDsl.g:3913:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:3913:4: rule__XTryCatchFinallyExpression__Group_3_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XTryCatchFinallyExpression__Group_3_1__0();
@@ -14209,13 +14439,13 @@
 
 
     // $ANTLR start "rule__Number__Alternatives"
-    // InternalPerspectiveDsl.g:3859:1: rule__Number__Alternatives : ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3921:1: rule__Number__Alternatives : ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) );
     public final void rule__Number__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3863:1: ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3925:1: ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) )
             int alt42=2;
             int LA42_0 = input.LA(1);
 
@@ -14234,10 +14464,10 @@
             }
             switch (alt42) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3864:2: ( RULE_HEX )
+                    // InternalPerspectiveDsl.g:3926:2: ( RULE_HEX )
                     {
-                    // InternalPerspectiveDsl.g:3864:2: ( RULE_HEX )
-                    // InternalPerspectiveDsl.g:3865:3: RULE_HEX
+                    // InternalPerspectiveDsl.g:3926:2: ( RULE_HEX )
+                    // InternalPerspectiveDsl.g:3927:3: RULE_HEX
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); 
@@ -14253,16 +14483,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3870:2: ( ( rule__Number__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:3932:2: ( ( rule__Number__Group_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3870:2: ( ( rule__Number__Group_1__0 ) )
-                    // InternalPerspectiveDsl.g:3871:3: ( rule__Number__Group_1__0 )
+                    // InternalPerspectiveDsl.g:3932:2: ( ( rule__Number__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:3933:3: ( rule__Number__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getGroup_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3872:3: ( rule__Number__Group_1__0 )
-                    // InternalPerspectiveDsl.g:3872:4: rule__Number__Group_1__0
+                    // InternalPerspectiveDsl.g:3934:3: ( rule__Number__Group_1__0 )
+                    // InternalPerspectiveDsl.g:3934:4: rule__Number__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Number__Group_1__0();
@@ -14299,13 +14529,13 @@
 
 
     // $ANTLR start "rule__Number__Alternatives_1_0"
-    // InternalPerspectiveDsl.g:3880:1: rule__Number__Alternatives_1_0 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
+    // InternalPerspectiveDsl.g:3942:1: rule__Number__Alternatives_1_0 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
     public final void rule__Number__Alternatives_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3884:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            // InternalPerspectiveDsl.g:3946:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
             int alt43=2;
             int LA43_0 = input.LA(1);
 
@@ -14324,10 +14554,10 @@
             }
             switch (alt43) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3885:2: ( RULE_INT )
+                    // InternalPerspectiveDsl.g:3947:2: ( RULE_INT )
                     {
-                    // InternalPerspectiveDsl.g:3885:2: ( RULE_INT )
-                    // InternalPerspectiveDsl.g:3886:3: RULE_INT
+                    // InternalPerspectiveDsl.g:3947:2: ( RULE_INT )
+                    // InternalPerspectiveDsl.g:3948:3: RULE_INT
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); 
@@ -14343,10 +14573,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3891:2: ( RULE_DECIMAL )
+                    // InternalPerspectiveDsl.g:3953:2: ( RULE_DECIMAL )
                     {
-                    // InternalPerspectiveDsl.g:3891:2: ( RULE_DECIMAL )
-                    // InternalPerspectiveDsl.g:3892:3: RULE_DECIMAL
+                    // InternalPerspectiveDsl.g:3953:2: ( RULE_DECIMAL )
+                    // InternalPerspectiveDsl.g:3954:3: RULE_DECIMAL
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); 
@@ -14379,13 +14609,13 @@
 
 
     // $ANTLR start "rule__Number__Alternatives_1_1_1"
-    // InternalPerspectiveDsl.g:3901:1: rule__Number__Alternatives_1_1_1 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
+    // InternalPerspectiveDsl.g:3963:1: rule__Number__Alternatives_1_1_1 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
     public final void rule__Number__Alternatives_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3905:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            // InternalPerspectiveDsl.g:3967:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
             int alt44=2;
             int LA44_0 = input.LA(1);
 
@@ -14404,10 +14634,10 @@
             }
             switch (alt44) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3906:2: ( RULE_INT )
+                    // InternalPerspectiveDsl.g:3968:2: ( RULE_INT )
                     {
-                    // InternalPerspectiveDsl.g:3906:2: ( RULE_INT )
-                    // InternalPerspectiveDsl.g:3907:3: RULE_INT
+                    // InternalPerspectiveDsl.g:3968:2: ( RULE_INT )
+                    // InternalPerspectiveDsl.g:3969:3: RULE_INT
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); 
@@ -14423,10 +14653,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3912:2: ( RULE_DECIMAL )
+                    // InternalPerspectiveDsl.g:3974:2: ( RULE_DECIMAL )
                     {
-                    // InternalPerspectiveDsl.g:3912:2: ( RULE_DECIMAL )
-                    // InternalPerspectiveDsl.g:3913:3: RULE_DECIMAL
+                    // InternalPerspectiveDsl.g:3974:2: ( RULE_DECIMAL )
+                    // InternalPerspectiveDsl.g:3975:3: RULE_DECIMAL
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); 
@@ -14459,20 +14689,20 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Alternatives"
-    // InternalPerspectiveDsl.g:3922:1: rule__JvmTypeReference__Alternatives : ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) );
+    // InternalPerspectiveDsl.g:3984:1: rule__JvmTypeReference__Alternatives : ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) );
     public final void rule__JvmTypeReference__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3926:1: ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) )
+            // InternalPerspectiveDsl.g:3988:1: ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) )
             int alt45=2;
             int LA45_0 = input.LA(1);
 
             if ( (LA45_0==RULE_ID) ) {
                 alt45=1;
             }
-            else if ( (LA45_0==31||LA45_0==89) ) {
+            else if ( (LA45_0==31||LA45_0==91) ) {
                 alt45=2;
             }
             else {
@@ -14484,16 +14714,16 @@
             }
             switch (alt45) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3927:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3989:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3927:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
-                    // InternalPerspectiveDsl.g:3928:3: ( rule__JvmTypeReference__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3989:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3990:3: ( rule__JvmTypeReference__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3929:3: ( rule__JvmTypeReference__Group_0__0 )
-                    // InternalPerspectiveDsl.g:3929:4: rule__JvmTypeReference__Group_0__0
+                    // InternalPerspectiveDsl.g:3991:3: ( rule__JvmTypeReference__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3991:4: rule__JvmTypeReference__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmTypeReference__Group_0__0();
@@ -14513,10 +14743,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3933:2: ( ruleXFunctionTypeRef )
+                    // InternalPerspectiveDsl.g:3995:2: ( ruleXFunctionTypeRef )
                     {
-                    // InternalPerspectiveDsl.g:3933:2: ( ruleXFunctionTypeRef )
-                    // InternalPerspectiveDsl.g:3934:3: ruleXFunctionTypeRef
+                    // InternalPerspectiveDsl.g:3995:2: ( ruleXFunctionTypeRef )
+                    // InternalPerspectiveDsl.g:3996:3: ruleXFunctionTypeRef
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
@@ -14553,20 +14783,20 @@
 
 
     // $ANTLR start "rule__JvmArgumentTypeReference__Alternatives"
-    // InternalPerspectiveDsl.g:3943:1: rule__JvmArgumentTypeReference__Alternatives : ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) );
+    // InternalPerspectiveDsl.g:4005:1: rule__JvmArgumentTypeReference__Alternatives : ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) );
     public final void rule__JvmArgumentTypeReference__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3947:1: ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) )
+            // InternalPerspectiveDsl.g:4009:1: ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) )
             int alt46=2;
             int LA46_0 = input.LA(1);
 
-            if ( (LA46_0==RULE_ID||LA46_0==31||LA46_0==89) ) {
+            if ( (LA46_0==RULE_ID||LA46_0==31||LA46_0==91) ) {
                 alt46=1;
             }
-            else if ( (LA46_0==115) ) {
+            else if ( (LA46_0==117) ) {
                 alt46=2;
             }
             else {
@@ -14578,10 +14808,10 @@
             }
             switch (alt46) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3948:2: ( ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:4010:2: ( ruleJvmTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:3948:2: ( ruleJvmTypeReference )
-                    // InternalPerspectiveDsl.g:3949:3: ruleJvmTypeReference
+                    // InternalPerspectiveDsl.g:4010:2: ( ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:4011:3: ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
@@ -14601,10 +14831,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3954:2: ( ruleJvmWildcardTypeReference )
+                    // InternalPerspectiveDsl.g:4016:2: ( ruleJvmWildcardTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:3954:2: ( ruleJvmWildcardTypeReference )
-                    // InternalPerspectiveDsl.g:3955:3: ruleJvmWildcardTypeReference
+                    // InternalPerspectiveDsl.g:4016:2: ( ruleJvmWildcardTypeReference )
+                    // InternalPerspectiveDsl.g:4017:3: ruleJvmWildcardTypeReference
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
@@ -14641,13 +14871,13 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Alternatives_2"
-    // InternalPerspectiveDsl.g:3964:1: rule__JvmWildcardTypeReference__Alternatives_2 : ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) );
+    // InternalPerspectiveDsl.g:4026:1: rule__JvmWildcardTypeReference__Alternatives_2 : ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) );
     public final void rule__JvmWildcardTypeReference__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3968:1: ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) )
+            // InternalPerspectiveDsl.g:4030:1: ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) )
             int alt47=2;
             int LA47_0 = input.LA(1);
 
@@ -14666,16 +14896,16 @@
             }
             switch (alt47) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3969:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:4031:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3969:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
-                    // InternalPerspectiveDsl.g:3970:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:4031:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:4032:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3971:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
-                    // InternalPerspectiveDsl.g:3971:4: rule__JvmWildcardTypeReference__Group_2_0__0
+                    // InternalPerspectiveDsl.g:4033:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:4033:4: rule__JvmWildcardTypeReference__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmWildcardTypeReference__Group_2_0__0();
@@ -14695,16 +14925,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3975:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    // InternalPerspectiveDsl.g:4037:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3975:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
-                    // InternalPerspectiveDsl.g:3976:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    // InternalPerspectiveDsl.g:4037:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    // InternalPerspectiveDsl.g:4038:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3977:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
-                    // InternalPerspectiveDsl.g:3977:4: rule__JvmWildcardTypeReference__Group_2_1__0
+                    // InternalPerspectiveDsl.g:4039:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    // InternalPerspectiveDsl.g:4039:4: rule__JvmWildcardTypeReference__Group_2_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmWildcardTypeReference__Group_2_1__0();
@@ -14741,13 +14971,13 @@
 
 
     // $ANTLR start "rule__SashOrientation__Alternatives"
-    // InternalPerspectiveDsl.g:3985:1: rule__SashOrientation__Alternatives : ( ( ( 'horizontal' ) ) | ( ( 'vertical' ) ) );
+    // InternalPerspectiveDsl.g:4047:1: rule__SashOrientation__Alternatives : ( ( ( 'horizontal' ) ) | ( ( 'vertical' ) ) );
     public final void rule__SashOrientation__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3989:1: ( ( ( 'horizontal' ) ) | ( ( 'vertical' ) ) )
+            // InternalPerspectiveDsl.g:4051:1: ( ( ( 'horizontal' ) ) | ( ( 'vertical' ) ) )
             int alt48=2;
             int LA48_0 = input.LA(1);
 
@@ -14766,16 +14996,16 @@
             }
             switch (alt48) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3990:2: ( ( 'horizontal' ) )
+                    // InternalPerspectiveDsl.g:4052:2: ( ( 'horizontal' ) )
                     {
-                    // InternalPerspectiveDsl.g:3990:2: ( ( 'horizontal' ) )
-                    // InternalPerspectiveDsl.g:3991:3: ( 'horizontal' )
+                    // InternalPerspectiveDsl.g:4052:2: ( ( 'horizontal' ) )
+                    // InternalPerspectiveDsl.g:4053:3: ( 'horizontal' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getSashOrientationAccess().getHORIZONTALEnumLiteralDeclaration_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3992:3: ( 'horizontal' )
-                    // InternalPerspectiveDsl.g:3992:4: 'horizontal'
+                    // InternalPerspectiveDsl.g:4054:3: ( 'horizontal' )
+                    // InternalPerspectiveDsl.g:4054:4: 'horizontal'
                     {
                     match(input,51,FOLLOW_2); if (state.failed) return ;
 
@@ -14791,16 +15021,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3996:2: ( ( 'vertical' ) )
+                    // InternalPerspectiveDsl.g:4058:2: ( ( 'vertical' ) )
                     {
-                    // InternalPerspectiveDsl.g:3996:2: ( ( 'vertical' ) )
-                    // InternalPerspectiveDsl.g:3997:3: ( 'vertical' )
+                    // InternalPerspectiveDsl.g:4058:2: ( ( 'vertical' ) )
+                    // InternalPerspectiveDsl.g:4059:3: ( 'vertical' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getSashOrientationAccess().getVERTICALEnumLiteralDeclaration_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3998:3: ( 'vertical' )
-                    // InternalPerspectiveDsl.g:3998:4: 'vertical'
+                    // InternalPerspectiveDsl.g:4060:3: ( 'vertical' )
+                    // InternalPerspectiveDsl.g:4060:4: 'vertical'
                     {
                     match(input,52,FOLLOW_2); if (state.failed) return ;
 
@@ -14833,14 +15063,14 @@
 
 
     // $ANTLR start "rule__PerspectiveModel__Group__0"
-    // InternalPerspectiveDsl.g:4006:1: rule__PerspectiveModel__Group__0 : rule__PerspectiveModel__Group__0__Impl rule__PerspectiveModel__Group__1 ;
+    // InternalPerspectiveDsl.g:4068:1: rule__PerspectiveModel__Group__0 : rule__PerspectiveModel__Group__0__Impl rule__PerspectiveModel__Group__1 ;
     public final void rule__PerspectiveModel__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4010:1: ( rule__PerspectiveModel__Group__0__Impl rule__PerspectiveModel__Group__1 )
-            // InternalPerspectiveDsl.g:4011:2: rule__PerspectiveModel__Group__0__Impl rule__PerspectiveModel__Group__1
+            // InternalPerspectiveDsl.g:4072:1: ( rule__PerspectiveModel__Group__0__Impl rule__PerspectiveModel__Group__1 )
+            // InternalPerspectiveDsl.g:4073:2: rule__PerspectiveModel__Group__0__Impl rule__PerspectiveModel__Group__1
             {
             pushFollow(FOLLOW_5);
             rule__PerspectiveModel__Group__0__Impl();
@@ -14871,22 +15101,22 @@
 
 
     // $ANTLR start "rule__PerspectiveModel__Group__0__Impl"
-    // InternalPerspectiveDsl.g:4018:1: rule__PerspectiveModel__Group__0__Impl : ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? ) ;
+    // InternalPerspectiveDsl.g:4080:1: rule__PerspectiveModel__Group__0__Impl : ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? ) ;
     public final void rule__PerspectiveModel__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4022:1: ( ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? ) )
-            // InternalPerspectiveDsl.g:4023:1: ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? )
+            // InternalPerspectiveDsl.g:4084:1: ( ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? ) )
+            // InternalPerspectiveDsl.g:4085:1: ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? )
             {
-            // InternalPerspectiveDsl.g:4023:1: ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? )
-            // InternalPerspectiveDsl.g:4024:2: ( rule__PerspectiveModel__ImportSectionAssignment_0 )?
+            // InternalPerspectiveDsl.g:4085:1: ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? )
+            // InternalPerspectiveDsl.g:4086:2: ( rule__PerspectiveModel__ImportSectionAssignment_0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveModelAccess().getImportSectionAssignment_0()); 
             }
-            // InternalPerspectiveDsl.g:4025:2: ( rule__PerspectiveModel__ImportSectionAssignment_0 )?
+            // InternalPerspectiveDsl.g:4087:2: ( rule__PerspectiveModel__ImportSectionAssignment_0 )?
             int alt49=2;
             int LA49_0 = input.LA(1);
 
@@ -14895,7 +15125,7 @@
             }
             switch (alt49) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4025:3: rule__PerspectiveModel__ImportSectionAssignment_0
+                    // InternalPerspectiveDsl.g:4087:3: rule__PerspectiveModel__ImportSectionAssignment_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectiveModel__ImportSectionAssignment_0();
@@ -14933,14 +15163,14 @@
 
 
     // $ANTLR start "rule__PerspectiveModel__Group__1"
-    // InternalPerspectiveDsl.g:4033:1: rule__PerspectiveModel__Group__1 : rule__PerspectiveModel__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:4095:1: rule__PerspectiveModel__Group__1 : rule__PerspectiveModel__Group__1__Impl ;
     public final void rule__PerspectiveModel__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4037:1: ( rule__PerspectiveModel__Group__1__Impl )
-            // InternalPerspectiveDsl.g:4038:2: rule__PerspectiveModel__Group__1__Impl
+            // InternalPerspectiveDsl.g:4099:1: ( rule__PerspectiveModel__Group__1__Impl )
+            // InternalPerspectiveDsl.g:4100:2: rule__PerspectiveModel__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveModel__Group__1__Impl();
@@ -14966,22 +15196,22 @@
 
 
     // $ANTLR start "rule__PerspectiveModel__Group__1__Impl"
-    // InternalPerspectiveDsl.g:4044:1: rule__PerspectiveModel__Group__1__Impl : ( ( rule__PerspectiveModel__PackagesAssignment_1 )* ) ;
+    // InternalPerspectiveDsl.g:4106:1: rule__PerspectiveModel__Group__1__Impl : ( ( rule__PerspectiveModel__PackagesAssignment_1 )* ) ;
     public final void rule__PerspectiveModel__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4048:1: ( ( ( rule__PerspectiveModel__PackagesAssignment_1 )* ) )
-            // InternalPerspectiveDsl.g:4049:1: ( ( rule__PerspectiveModel__PackagesAssignment_1 )* )
+            // InternalPerspectiveDsl.g:4110:1: ( ( ( rule__PerspectiveModel__PackagesAssignment_1 )* ) )
+            // InternalPerspectiveDsl.g:4111:1: ( ( rule__PerspectiveModel__PackagesAssignment_1 )* )
             {
-            // InternalPerspectiveDsl.g:4049:1: ( ( rule__PerspectiveModel__PackagesAssignment_1 )* )
-            // InternalPerspectiveDsl.g:4050:2: ( rule__PerspectiveModel__PackagesAssignment_1 )*
+            // InternalPerspectiveDsl.g:4111:1: ( ( rule__PerspectiveModel__PackagesAssignment_1 )* )
+            // InternalPerspectiveDsl.g:4112:2: ( rule__PerspectiveModel__PackagesAssignment_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveModelAccess().getPackagesAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:4051:2: ( rule__PerspectiveModel__PackagesAssignment_1 )*
+            // InternalPerspectiveDsl.g:4113:2: ( rule__PerspectiveModel__PackagesAssignment_1 )*
             loop50:
             do {
                 int alt50=2;
@@ -14994,7 +15224,7 @@
 
                 switch (alt50) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:4051:3: rule__PerspectiveModel__PackagesAssignment_1
+            	    // InternalPerspectiveDsl.g:4113:3: rule__PerspectiveModel__PackagesAssignment_1
             	    {
             	    pushFollow(FOLLOW_6);
             	    rule__PerspectiveModel__PackagesAssignment_1();
@@ -15035,14 +15265,14 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group__0"
-    // InternalPerspectiveDsl.g:4060:1: rule__PerspectivePackage__Group__0 : rule__PerspectivePackage__Group__0__Impl rule__PerspectivePackage__Group__1 ;
+    // InternalPerspectiveDsl.g:4122:1: rule__PerspectivePackage__Group__0 : rule__PerspectivePackage__Group__0__Impl rule__PerspectivePackage__Group__1 ;
     public final void rule__PerspectivePackage__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4064:1: ( rule__PerspectivePackage__Group__0__Impl rule__PerspectivePackage__Group__1 )
-            // InternalPerspectiveDsl.g:4065:2: rule__PerspectivePackage__Group__0__Impl rule__PerspectivePackage__Group__1
+            // InternalPerspectiveDsl.g:4126:1: ( rule__PerspectivePackage__Group__0__Impl rule__PerspectivePackage__Group__1 )
+            // InternalPerspectiveDsl.g:4127:2: rule__PerspectivePackage__Group__0__Impl rule__PerspectivePackage__Group__1
             {
             pushFollow(FOLLOW_5);
             rule__PerspectivePackage__Group__0__Impl();
@@ -15073,23 +15303,23 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group__0__Impl"
-    // InternalPerspectiveDsl.g:4072:1: rule__PerspectivePackage__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:4134:1: rule__PerspectivePackage__Group__0__Impl : ( () ) ;
     public final void rule__PerspectivePackage__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4076:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:4077:1: ( () )
+            // InternalPerspectiveDsl.g:4138:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:4139:1: ( () )
             {
-            // InternalPerspectiveDsl.g:4077:1: ( () )
-            // InternalPerspectiveDsl.g:4078:2: ()
+            // InternalPerspectiveDsl.g:4139:1: ( () )
+            // InternalPerspectiveDsl.g:4140:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePackageAccess().getPerspectivePackageAction_0()); 
             }
-            // InternalPerspectiveDsl.g:4079:2: ()
-            // InternalPerspectiveDsl.g:4079:3: 
+            // InternalPerspectiveDsl.g:4141:2: ()
+            // InternalPerspectiveDsl.g:4141:3: 
             {
             }
 
@@ -15114,14 +15344,14 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group__1"
-    // InternalPerspectiveDsl.g:4087:1: rule__PerspectivePackage__Group__1 : rule__PerspectivePackage__Group__1__Impl rule__PerspectivePackage__Group__2 ;
+    // InternalPerspectiveDsl.g:4149:1: rule__PerspectivePackage__Group__1 : rule__PerspectivePackage__Group__1__Impl rule__PerspectivePackage__Group__2 ;
     public final void rule__PerspectivePackage__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4091:1: ( rule__PerspectivePackage__Group__1__Impl rule__PerspectivePackage__Group__2 )
-            // InternalPerspectiveDsl.g:4092:2: rule__PerspectivePackage__Group__1__Impl rule__PerspectivePackage__Group__2
+            // InternalPerspectiveDsl.g:4153:1: ( rule__PerspectivePackage__Group__1__Impl rule__PerspectivePackage__Group__2 )
+            // InternalPerspectiveDsl.g:4154:2: rule__PerspectivePackage__Group__1__Impl rule__PerspectivePackage__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectivePackage__Group__1__Impl();
@@ -15152,17 +15382,17 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group__1__Impl"
-    // InternalPerspectiveDsl.g:4099:1: rule__PerspectivePackage__Group__1__Impl : ( 'package' ) ;
+    // InternalPerspectiveDsl.g:4161:1: rule__PerspectivePackage__Group__1__Impl : ( 'package' ) ;
     public final void rule__PerspectivePackage__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4103:1: ( ( 'package' ) )
-            // InternalPerspectiveDsl.g:4104:1: ( 'package' )
+            // InternalPerspectiveDsl.g:4165:1: ( ( 'package' ) )
+            // InternalPerspectiveDsl.g:4166:1: ( 'package' )
             {
-            // InternalPerspectiveDsl.g:4104:1: ( 'package' )
-            // InternalPerspectiveDsl.g:4105:2: 'package'
+            // InternalPerspectiveDsl.g:4166:1: ( 'package' )
+            // InternalPerspectiveDsl.g:4167:2: 'package'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePackageAccess().getPackageKeyword_1()); 
@@ -15193,14 +15423,14 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group__2"
-    // InternalPerspectiveDsl.g:4114:1: rule__PerspectivePackage__Group__2 : rule__PerspectivePackage__Group__2__Impl rule__PerspectivePackage__Group__3 ;
+    // InternalPerspectiveDsl.g:4176:1: rule__PerspectivePackage__Group__2 : rule__PerspectivePackage__Group__2__Impl rule__PerspectivePackage__Group__3 ;
     public final void rule__PerspectivePackage__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4118:1: ( rule__PerspectivePackage__Group__2__Impl rule__PerspectivePackage__Group__3 )
-            // InternalPerspectiveDsl.g:4119:2: rule__PerspectivePackage__Group__2__Impl rule__PerspectivePackage__Group__3
+            // InternalPerspectiveDsl.g:4180:1: ( rule__PerspectivePackage__Group__2__Impl rule__PerspectivePackage__Group__3 )
+            // InternalPerspectiveDsl.g:4181:2: rule__PerspectivePackage__Group__2__Impl rule__PerspectivePackage__Group__3
             {
             pushFollow(FOLLOW_8);
             rule__PerspectivePackage__Group__2__Impl();
@@ -15231,23 +15461,23 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group__2__Impl"
-    // InternalPerspectiveDsl.g:4126:1: rule__PerspectivePackage__Group__2__Impl : ( ( rule__PerspectivePackage__NameAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:4188:1: rule__PerspectivePackage__Group__2__Impl : ( ( rule__PerspectivePackage__NameAssignment_2 ) ) ;
     public final void rule__PerspectivePackage__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4130:1: ( ( ( rule__PerspectivePackage__NameAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:4131:1: ( ( rule__PerspectivePackage__NameAssignment_2 ) )
+            // InternalPerspectiveDsl.g:4192:1: ( ( ( rule__PerspectivePackage__NameAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:4193:1: ( ( rule__PerspectivePackage__NameAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:4131:1: ( ( rule__PerspectivePackage__NameAssignment_2 ) )
-            // InternalPerspectiveDsl.g:4132:2: ( rule__PerspectivePackage__NameAssignment_2 )
+            // InternalPerspectiveDsl.g:4193:1: ( ( rule__PerspectivePackage__NameAssignment_2 ) )
+            // InternalPerspectiveDsl.g:4194:2: ( rule__PerspectivePackage__NameAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePackageAccess().getNameAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:4133:2: ( rule__PerspectivePackage__NameAssignment_2 )
-            // InternalPerspectiveDsl.g:4133:3: rule__PerspectivePackage__NameAssignment_2
+            // InternalPerspectiveDsl.g:4195:2: ( rule__PerspectivePackage__NameAssignment_2 )
+            // InternalPerspectiveDsl.g:4195:3: rule__PerspectivePackage__NameAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePackage__NameAssignment_2();
@@ -15282,14 +15512,14 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group__3"
-    // InternalPerspectiveDsl.g:4141:1: rule__PerspectivePackage__Group__3 : rule__PerspectivePackage__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:4203:1: rule__PerspectivePackage__Group__3 : rule__PerspectivePackage__Group__3__Impl ;
     public final void rule__PerspectivePackage__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4145:1: ( rule__PerspectivePackage__Group__3__Impl )
-            // InternalPerspectiveDsl.g:4146:2: rule__PerspectivePackage__Group__3__Impl
+            // InternalPerspectiveDsl.g:4207:1: ( rule__PerspectivePackage__Group__3__Impl )
+            // InternalPerspectiveDsl.g:4208:2: rule__PerspectivePackage__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePackage__Group__3__Impl();
@@ -15315,22 +15545,22 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group__3__Impl"
-    // InternalPerspectiveDsl.g:4152:1: rule__PerspectivePackage__Group__3__Impl : ( ( rule__PerspectivePackage__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:4214:1: rule__PerspectivePackage__Group__3__Impl : ( ( rule__PerspectivePackage__Group_3__0 )? ) ;
     public final void rule__PerspectivePackage__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4156:1: ( ( ( rule__PerspectivePackage__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:4157:1: ( ( rule__PerspectivePackage__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:4218:1: ( ( ( rule__PerspectivePackage__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:4219:1: ( ( rule__PerspectivePackage__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:4157:1: ( ( rule__PerspectivePackage__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:4158:2: ( rule__PerspectivePackage__Group_3__0 )?
+            // InternalPerspectiveDsl.g:4219:1: ( ( rule__PerspectivePackage__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:4220:2: ( rule__PerspectivePackage__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePackageAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:4159:2: ( rule__PerspectivePackage__Group_3__0 )?
+            // InternalPerspectiveDsl.g:4221:2: ( rule__PerspectivePackage__Group_3__0 )?
             int alt51=2;
             int LA51_0 = input.LA(1);
 
@@ -15339,7 +15569,7 @@
             }
             switch (alt51) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4159:3: rule__PerspectivePackage__Group_3__0
+                    // InternalPerspectiveDsl.g:4221:3: rule__PerspectivePackage__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePackage__Group_3__0();
@@ -15377,14 +15607,14 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group_3__0"
-    // InternalPerspectiveDsl.g:4168:1: rule__PerspectivePackage__Group_3__0 : rule__PerspectivePackage__Group_3__0__Impl rule__PerspectivePackage__Group_3__1 ;
+    // InternalPerspectiveDsl.g:4230:1: rule__PerspectivePackage__Group_3__0 : rule__PerspectivePackage__Group_3__0__Impl rule__PerspectivePackage__Group_3__1 ;
     public final void rule__PerspectivePackage__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4172:1: ( rule__PerspectivePackage__Group_3__0__Impl rule__PerspectivePackage__Group_3__1 )
-            // InternalPerspectiveDsl.g:4173:2: rule__PerspectivePackage__Group_3__0__Impl rule__PerspectivePackage__Group_3__1
+            // InternalPerspectiveDsl.g:4234:1: ( rule__PerspectivePackage__Group_3__0__Impl rule__PerspectivePackage__Group_3__1 )
+            // InternalPerspectiveDsl.g:4235:2: rule__PerspectivePackage__Group_3__0__Impl rule__PerspectivePackage__Group_3__1
             {
             pushFollow(FOLLOW_9);
             rule__PerspectivePackage__Group_3__0__Impl();
@@ -15415,17 +15645,17 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:4180:1: rule__PerspectivePackage__Group_3__0__Impl : ( '{' ) ;
+    // InternalPerspectiveDsl.g:4242:1: rule__PerspectivePackage__Group_3__0__Impl : ( '{' ) ;
     public final void rule__PerspectivePackage__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4184:1: ( ( '{' ) )
-            // InternalPerspectiveDsl.g:4185:1: ( '{' )
+            // InternalPerspectiveDsl.g:4246:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:4247:1: ( '{' )
             {
-            // InternalPerspectiveDsl.g:4185:1: ( '{' )
-            // InternalPerspectiveDsl.g:4186:2: '{'
+            // InternalPerspectiveDsl.g:4247:1: ( '{' )
+            // InternalPerspectiveDsl.g:4248:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePackageAccess().getLeftCurlyBracketKeyword_3_0()); 
@@ -15456,14 +15686,14 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group_3__1"
-    // InternalPerspectiveDsl.g:4195:1: rule__PerspectivePackage__Group_3__1 : rule__PerspectivePackage__Group_3__1__Impl rule__PerspectivePackage__Group_3__2 ;
+    // InternalPerspectiveDsl.g:4257:1: rule__PerspectivePackage__Group_3__1 : rule__PerspectivePackage__Group_3__1__Impl rule__PerspectivePackage__Group_3__2 ;
     public final void rule__PerspectivePackage__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4199:1: ( rule__PerspectivePackage__Group_3__1__Impl rule__PerspectivePackage__Group_3__2 )
-            // InternalPerspectiveDsl.g:4200:2: rule__PerspectivePackage__Group_3__1__Impl rule__PerspectivePackage__Group_3__2
+            // InternalPerspectiveDsl.g:4261:1: ( rule__PerspectivePackage__Group_3__1__Impl rule__PerspectivePackage__Group_3__2 )
+            // InternalPerspectiveDsl.g:4262:2: rule__PerspectivePackage__Group_3__1__Impl rule__PerspectivePackage__Group_3__2
             {
             pushFollow(FOLLOW_9);
             rule__PerspectivePackage__Group_3__1__Impl();
@@ -15494,22 +15724,22 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:4207:1: rule__PerspectivePackage__Group_3__1__Impl : ( ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )* ) ;
+    // InternalPerspectiveDsl.g:4269:1: rule__PerspectivePackage__Group_3__1__Impl : ( ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )* ) ;
     public final void rule__PerspectivePackage__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4211:1: ( ( ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )* ) )
-            // InternalPerspectiveDsl.g:4212:1: ( ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )* )
+            // InternalPerspectiveDsl.g:4273:1: ( ( ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )* ) )
+            // InternalPerspectiveDsl.g:4274:1: ( ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )* )
             {
-            // InternalPerspectiveDsl.g:4212:1: ( ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )* )
-            // InternalPerspectiveDsl.g:4213:2: ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )*
+            // InternalPerspectiveDsl.g:4274:1: ( ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )* )
+            // InternalPerspectiveDsl.g:4275:2: ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePackageAccess().getPerspectivesAssignment_3_1()); 
             }
-            // InternalPerspectiveDsl.g:4214:2: ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )*
+            // InternalPerspectiveDsl.g:4276:2: ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )*
             loop52:
             do {
                 int alt52=2;
@@ -15522,7 +15752,7 @@
 
                 switch (alt52) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:4214:3: rule__PerspectivePackage__PerspectivesAssignment_3_1
+            	    // InternalPerspectiveDsl.g:4276:3: rule__PerspectivePackage__PerspectivesAssignment_3_1
             	    {
             	    pushFollow(FOLLOW_10);
             	    rule__PerspectivePackage__PerspectivesAssignment_3_1();
@@ -15563,14 +15793,14 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group_3__2"
-    // InternalPerspectiveDsl.g:4222:1: rule__PerspectivePackage__Group_3__2 : rule__PerspectivePackage__Group_3__2__Impl ;
+    // InternalPerspectiveDsl.g:4284:1: rule__PerspectivePackage__Group_3__2 : rule__PerspectivePackage__Group_3__2__Impl ;
     public final void rule__PerspectivePackage__Group_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4226:1: ( rule__PerspectivePackage__Group_3__2__Impl )
-            // InternalPerspectiveDsl.g:4227:2: rule__PerspectivePackage__Group_3__2__Impl
+            // InternalPerspectiveDsl.g:4288:1: ( rule__PerspectivePackage__Group_3__2__Impl )
+            // InternalPerspectiveDsl.g:4289:2: rule__PerspectivePackage__Group_3__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePackage__Group_3__2__Impl();
@@ -15596,17 +15826,17 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group_3__2__Impl"
-    // InternalPerspectiveDsl.g:4233:1: rule__PerspectivePackage__Group_3__2__Impl : ( '}' ) ;
+    // InternalPerspectiveDsl.g:4295:1: rule__PerspectivePackage__Group_3__2__Impl : ( '}' ) ;
     public final void rule__PerspectivePackage__Group_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4237:1: ( ( '}' ) )
-            // InternalPerspectiveDsl.g:4238:1: ( '}' )
+            // InternalPerspectiveDsl.g:4299:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:4300:1: ( '}' )
             {
-            // InternalPerspectiveDsl.g:4238:1: ( '}' )
-            // InternalPerspectiveDsl.g:4239:2: '}'
+            // InternalPerspectiveDsl.g:4300:1: ( '}' )
+            // InternalPerspectiveDsl.g:4301:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePackageAccess().getRightCurlyBracketKeyword_3_2()); 
@@ -15637,14 +15867,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group__0"
-    // InternalPerspectiveDsl.g:4249:1: rule__Perspective__Group__0 : rule__Perspective__Group__0__Impl rule__Perspective__Group__1 ;
+    // InternalPerspectiveDsl.g:4311:1: rule__Perspective__Group__0 : rule__Perspective__Group__0__Impl rule__Perspective__Group__1 ;
     public final void rule__Perspective__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4253:1: ( rule__Perspective__Group__0__Impl rule__Perspective__Group__1 )
-            // InternalPerspectiveDsl.g:4254:2: rule__Perspective__Group__0__Impl rule__Perspective__Group__1
+            // InternalPerspectiveDsl.g:4315:1: ( rule__Perspective__Group__0__Impl rule__Perspective__Group__1 )
+            // InternalPerspectiveDsl.g:4316:2: rule__Perspective__Group__0__Impl rule__Perspective__Group__1
             {
             pushFollow(FOLLOW_11);
             rule__Perspective__Group__0__Impl();
@@ -15675,23 +15905,23 @@
 
 
     // $ANTLR start "rule__Perspective__Group__0__Impl"
-    // InternalPerspectiveDsl.g:4261:1: rule__Perspective__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:4323:1: rule__Perspective__Group__0__Impl : ( () ) ;
     public final void rule__Perspective__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4265:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:4266:1: ( () )
+            // InternalPerspectiveDsl.g:4327:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:4328:1: ( () )
             {
-            // InternalPerspectiveDsl.g:4266:1: ( () )
-            // InternalPerspectiveDsl.g:4267:2: ()
+            // InternalPerspectiveDsl.g:4328:1: ( () )
+            // InternalPerspectiveDsl.g:4329:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getPerspectiveAction_0()); 
             }
-            // InternalPerspectiveDsl.g:4268:2: ()
-            // InternalPerspectiveDsl.g:4268:3: 
+            // InternalPerspectiveDsl.g:4330:2: ()
+            // InternalPerspectiveDsl.g:4330:3: 
             {
             }
 
@@ -15716,14 +15946,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group__1"
-    // InternalPerspectiveDsl.g:4276:1: rule__Perspective__Group__1 : rule__Perspective__Group__1__Impl rule__Perspective__Group__2 ;
+    // InternalPerspectiveDsl.g:4338:1: rule__Perspective__Group__1 : rule__Perspective__Group__1__Impl rule__Perspective__Group__2 ;
     public final void rule__Perspective__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4280:1: ( rule__Perspective__Group__1__Impl rule__Perspective__Group__2 )
-            // InternalPerspectiveDsl.g:4281:2: rule__Perspective__Group__1__Impl rule__Perspective__Group__2
+            // InternalPerspectiveDsl.g:4342:1: ( rule__Perspective__Group__1__Impl rule__Perspective__Group__2 )
+            // InternalPerspectiveDsl.g:4343:2: rule__Perspective__Group__1__Impl rule__Perspective__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__Perspective__Group__1__Impl();
@@ -15754,17 +15984,17 @@
 
 
     // $ANTLR start "rule__Perspective__Group__1__Impl"
-    // InternalPerspectiveDsl.g:4288:1: rule__Perspective__Group__1__Impl : ( 'perspective' ) ;
+    // InternalPerspectiveDsl.g:4350:1: rule__Perspective__Group__1__Impl : ( 'perspective' ) ;
     public final void rule__Perspective__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4292:1: ( ( 'perspective' ) )
-            // InternalPerspectiveDsl.g:4293:1: ( 'perspective' )
+            // InternalPerspectiveDsl.g:4354:1: ( ( 'perspective' ) )
+            // InternalPerspectiveDsl.g:4355:1: ( 'perspective' )
             {
-            // InternalPerspectiveDsl.g:4293:1: ( 'perspective' )
-            // InternalPerspectiveDsl.g:4294:2: 'perspective'
+            // InternalPerspectiveDsl.g:4355:1: ( 'perspective' )
+            // InternalPerspectiveDsl.g:4356:2: 'perspective'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getPerspectiveKeyword_1()); 
@@ -15795,14 +16025,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group__2"
-    // InternalPerspectiveDsl.g:4303:1: rule__Perspective__Group__2 : rule__Perspective__Group__2__Impl rule__Perspective__Group__3 ;
+    // InternalPerspectiveDsl.g:4365:1: rule__Perspective__Group__2 : rule__Perspective__Group__2__Impl rule__Perspective__Group__3 ;
     public final void rule__Perspective__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4307:1: ( rule__Perspective__Group__2__Impl rule__Perspective__Group__3 )
-            // InternalPerspectiveDsl.g:4308:2: rule__Perspective__Group__2__Impl rule__Perspective__Group__3
+            // InternalPerspectiveDsl.g:4369:1: ( rule__Perspective__Group__2__Impl rule__Perspective__Group__3 )
+            // InternalPerspectiveDsl.g:4370:2: rule__Perspective__Group__2__Impl rule__Perspective__Group__3
             {
             pushFollow(FOLLOW_12);
             rule__Perspective__Group__2__Impl();
@@ -15833,23 +16063,23 @@
 
 
     // $ANTLR start "rule__Perspective__Group__2__Impl"
-    // InternalPerspectiveDsl.g:4315:1: rule__Perspective__Group__2__Impl : ( ( rule__Perspective__NameAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:4377:1: rule__Perspective__Group__2__Impl : ( ( rule__Perspective__NameAssignment_2 ) ) ;
     public final void rule__Perspective__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4319:1: ( ( ( rule__Perspective__NameAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:4320:1: ( ( rule__Perspective__NameAssignment_2 ) )
+            // InternalPerspectiveDsl.g:4381:1: ( ( ( rule__Perspective__NameAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:4382:1: ( ( rule__Perspective__NameAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:4320:1: ( ( rule__Perspective__NameAssignment_2 ) )
-            // InternalPerspectiveDsl.g:4321:2: ( rule__Perspective__NameAssignment_2 )
+            // InternalPerspectiveDsl.g:4382:1: ( ( rule__Perspective__NameAssignment_2 ) )
+            // InternalPerspectiveDsl.g:4383:2: ( rule__Perspective__NameAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getNameAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:4322:2: ( rule__Perspective__NameAssignment_2 )
-            // InternalPerspectiveDsl.g:4322:3: rule__Perspective__NameAssignment_2
+            // InternalPerspectiveDsl.g:4384:2: ( rule__Perspective__NameAssignment_2 )
+            // InternalPerspectiveDsl.g:4384:3: rule__Perspective__NameAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__NameAssignment_2();
@@ -15884,14 +16114,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group__3"
-    // InternalPerspectiveDsl.g:4330:1: rule__Perspective__Group__3 : rule__Perspective__Group__3__Impl rule__Perspective__Group__4 ;
+    // InternalPerspectiveDsl.g:4392:1: rule__Perspective__Group__3 : rule__Perspective__Group__3__Impl rule__Perspective__Group__4 ;
     public final void rule__Perspective__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4334:1: ( rule__Perspective__Group__3__Impl rule__Perspective__Group__4 )
-            // InternalPerspectiveDsl.g:4335:2: rule__Perspective__Group__3__Impl rule__Perspective__Group__4
+            // InternalPerspectiveDsl.g:4396:1: ( rule__Perspective__Group__3__Impl rule__Perspective__Group__4 )
+            // InternalPerspectiveDsl.g:4397:2: rule__Perspective__Group__3__Impl rule__Perspective__Group__4
             {
             pushFollow(FOLLOW_12);
             rule__Perspective__Group__3__Impl();
@@ -15922,31 +16152,31 @@
 
 
     // $ANTLR start "rule__Perspective__Group__3__Impl"
-    // InternalPerspectiveDsl.g:4342:1: rule__Perspective__Group__3__Impl : ( ( rule__Perspective__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:4404:1: rule__Perspective__Group__3__Impl : ( ( rule__Perspective__Group_3__0 )? ) ;
     public final void rule__Perspective__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4346:1: ( ( ( rule__Perspective__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:4347:1: ( ( rule__Perspective__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:4408:1: ( ( ( rule__Perspective__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:4409:1: ( ( rule__Perspective__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:4347:1: ( ( rule__Perspective__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:4348:2: ( rule__Perspective__Group_3__0 )?
+            // InternalPerspectiveDsl.g:4409:1: ( ( rule__Perspective__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:4410:2: ( rule__Perspective__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:4349:2: ( rule__Perspective__Group_3__0 )?
+            // InternalPerspectiveDsl.g:4411:2: ( rule__Perspective__Group_3__0 )?
             int alt53=2;
             int LA53_0 = input.LA(1);
 
-            if ( (LA53_0==117) ) {
+            if ( (LA53_0==119) ) {
                 alt53=1;
             }
             switch (alt53) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4349:3: rule__Perspective__Group_3__0
+                    // InternalPerspectiveDsl.g:4411:3: rule__Perspective__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Perspective__Group_3__0();
@@ -15984,14 +16214,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group__4"
-    // InternalPerspectiveDsl.g:4357:1: rule__Perspective__Group__4 : rule__Perspective__Group__4__Impl rule__Perspective__Group__5 ;
+    // InternalPerspectiveDsl.g:4419:1: rule__Perspective__Group__4 : rule__Perspective__Group__4__Impl rule__Perspective__Group__5 ;
     public final void rule__Perspective__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4361:1: ( rule__Perspective__Group__4__Impl rule__Perspective__Group__5 )
-            // InternalPerspectiveDsl.g:4362:2: rule__Perspective__Group__4__Impl rule__Perspective__Group__5
+            // InternalPerspectiveDsl.g:4423:1: ( rule__Perspective__Group__4__Impl rule__Perspective__Group__5 )
+            // InternalPerspectiveDsl.g:4424:2: rule__Perspective__Group__4__Impl rule__Perspective__Group__5
             {
             pushFollow(FOLLOW_12);
             rule__Perspective__Group__4__Impl();
@@ -16022,22 +16252,22 @@
 
 
     // $ANTLR start "rule__Perspective__Group__4__Impl"
-    // InternalPerspectiveDsl.g:4369:1: rule__Perspective__Group__4__Impl : ( ( rule__Perspective__Group_4__0 )? ) ;
+    // InternalPerspectiveDsl.g:4431:1: rule__Perspective__Group__4__Impl : ( ( rule__Perspective__Group_4__0 )? ) ;
     public final void rule__Perspective__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4373:1: ( ( ( rule__Perspective__Group_4__0 )? ) )
-            // InternalPerspectiveDsl.g:4374:1: ( ( rule__Perspective__Group_4__0 )? )
+            // InternalPerspectiveDsl.g:4435:1: ( ( ( rule__Perspective__Group_4__0 )? ) )
+            // InternalPerspectiveDsl.g:4436:1: ( ( rule__Perspective__Group_4__0 )? )
             {
-            // InternalPerspectiveDsl.g:4374:1: ( ( rule__Perspective__Group_4__0 )? )
-            // InternalPerspectiveDsl.g:4375:2: ( rule__Perspective__Group_4__0 )?
+            // InternalPerspectiveDsl.g:4436:1: ( ( rule__Perspective__Group_4__0 )? )
+            // InternalPerspectiveDsl.g:4437:2: ( rule__Perspective__Group_4__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getGroup_4()); 
             }
-            // InternalPerspectiveDsl.g:4376:2: ( rule__Perspective__Group_4__0 )?
+            // InternalPerspectiveDsl.g:4438:2: ( rule__Perspective__Group_4__0 )?
             int alt54=2;
             int LA54_0 = input.LA(1);
 
@@ -16046,7 +16276,7 @@
             }
             switch (alt54) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4376:3: rule__Perspective__Group_4__0
+                    // InternalPerspectiveDsl.g:4438:3: rule__Perspective__Group_4__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Perspective__Group_4__0();
@@ -16084,14 +16314,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group__5"
-    // InternalPerspectiveDsl.g:4384:1: rule__Perspective__Group__5 : rule__Perspective__Group__5__Impl rule__Perspective__Group__6 ;
+    // InternalPerspectiveDsl.g:4446:1: rule__Perspective__Group__5 : rule__Perspective__Group__5__Impl rule__Perspective__Group__6 ;
     public final void rule__Perspective__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4388:1: ( rule__Perspective__Group__5__Impl rule__Perspective__Group__6 )
-            // InternalPerspectiveDsl.g:4389:2: rule__Perspective__Group__5__Impl rule__Perspective__Group__6
+            // InternalPerspectiveDsl.g:4450:1: ( rule__Perspective__Group__5__Impl rule__Perspective__Group__6 )
+            // InternalPerspectiveDsl.g:4451:2: rule__Perspective__Group__5__Impl rule__Perspective__Group__6
             {
             pushFollow(FOLLOW_8);
             rule__Perspective__Group__5__Impl();
@@ -16122,23 +16352,23 @@
 
 
     // $ANTLR start "rule__Perspective__Group__5__Impl"
-    // InternalPerspectiveDsl.g:4396:1: rule__Perspective__Group__5__Impl : ( ( rule__Perspective__UnorderedGroup_5 ) ) ;
+    // InternalPerspectiveDsl.g:4458:1: rule__Perspective__Group__5__Impl : ( ( rule__Perspective__UnorderedGroup_5 ) ) ;
     public final void rule__Perspective__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4400:1: ( ( ( rule__Perspective__UnorderedGroup_5 ) ) )
-            // InternalPerspectiveDsl.g:4401:1: ( ( rule__Perspective__UnorderedGroup_5 ) )
+            // InternalPerspectiveDsl.g:4462:1: ( ( ( rule__Perspective__UnorderedGroup_5 ) ) )
+            // InternalPerspectiveDsl.g:4463:1: ( ( rule__Perspective__UnorderedGroup_5 ) )
             {
-            // InternalPerspectiveDsl.g:4401:1: ( ( rule__Perspective__UnorderedGroup_5 ) )
-            // InternalPerspectiveDsl.g:4402:2: ( rule__Perspective__UnorderedGroup_5 )
+            // InternalPerspectiveDsl.g:4463:1: ( ( rule__Perspective__UnorderedGroup_5 ) )
+            // InternalPerspectiveDsl.g:4464:2: ( rule__Perspective__UnorderedGroup_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5()); 
             }
-            // InternalPerspectiveDsl.g:4403:2: ( rule__Perspective__UnorderedGroup_5 )
-            // InternalPerspectiveDsl.g:4403:3: rule__Perspective__UnorderedGroup_5
+            // InternalPerspectiveDsl.g:4465:2: ( rule__Perspective__UnorderedGroup_5 )
+            // InternalPerspectiveDsl.g:4465:3: rule__Perspective__UnorderedGroup_5
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__UnorderedGroup_5();
@@ -16173,14 +16403,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group__6"
-    // InternalPerspectiveDsl.g:4411:1: rule__Perspective__Group__6 : rule__Perspective__Group__6__Impl rule__Perspective__Group__7 ;
+    // InternalPerspectiveDsl.g:4473:1: rule__Perspective__Group__6 : rule__Perspective__Group__6__Impl rule__Perspective__Group__7 ;
     public final void rule__Perspective__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4415:1: ( rule__Perspective__Group__6__Impl rule__Perspective__Group__7 )
-            // InternalPerspectiveDsl.g:4416:2: rule__Perspective__Group__6__Impl rule__Perspective__Group__7
+            // InternalPerspectiveDsl.g:4477:1: ( rule__Perspective__Group__6__Impl rule__Perspective__Group__7 )
+            // InternalPerspectiveDsl.g:4478:2: rule__Perspective__Group__6__Impl rule__Perspective__Group__7
             {
             pushFollow(FOLLOW_13);
             rule__Perspective__Group__6__Impl();
@@ -16211,17 +16441,17 @@
 
 
     // $ANTLR start "rule__Perspective__Group__6__Impl"
-    // InternalPerspectiveDsl.g:4423:1: rule__Perspective__Group__6__Impl : ( '{' ) ;
+    // InternalPerspectiveDsl.g:4485:1: rule__Perspective__Group__6__Impl : ( '{' ) ;
     public final void rule__Perspective__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4427:1: ( ( '{' ) )
-            // InternalPerspectiveDsl.g:4428:1: ( '{' )
+            // InternalPerspectiveDsl.g:4489:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:4490:1: ( '{' )
             {
-            // InternalPerspectiveDsl.g:4428:1: ( '{' )
-            // InternalPerspectiveDsl.g:4429:2: '{'
+            // InternalPerspectiveDsl.g:4490:1: ( '{' )
+            // InternalPerspectiveDsl.g:4491:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getLeftCurlyBracketKeyword_6()); 
@@ -16252,14 +16482,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group__7"
-    // InternalPerspectiveDsl.g:4438:1: rule__Perspective__Group__7 : rule__Perspective__Group__7__Impl rule__Perspective__Group__8 ;
+    // InternalPerspectiveDsl.g:4500:1: rule__Perspective__Group__7 : rule__Perspective__Group__7__Impl rule__Perspective__Group__8 ;
     public final void rule__Perspective__Group__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4442:1: ( rule__Perspective__Group__7__Impl rule__Perspective__Group__8 )
-            // InternalPerspectiveDsl.g:4443:2: rule__Perspective__Group__7__Impl rule__Perspective__Group__8
+            // InternalPerspectiveDsl.g:4504:1: ( rule__Perspective__Group__7__Impl rule__Perspective__Group__8 )
+            // InternalPerspectiveDsl.g:4505:2: rule__Perspective__Group__7__Impl rule__Perspective__Group__8
             {
             pushFollow(FOLLOW_13);
             rule__Perspective__Group__7__Impl();
@@ -16290,22 +16520,22 @@
 
 
     // $ANTLR start "rule__Perspective__Group__7__Impl"
-    // InternalPerspectiveDsl.g:4450:1: rule__Perspective__Group__7__Impl : ( ( rule__Perspective__ElementsAssignment_7 )* ) ;
+    // InternalPerspectiveDsl.g:4512:1: rule__Perspective__Group__7__Impl : ( ( rule__Perspective__ElementsAssignment_7 )* ) ;
     public final void rule__Perspective__Group__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4454:1: ( ( ( rule__Perspective__ElementsAssignment_7 )* ) )
-            // InternalPerspectiveDsl.g:4455:1: ( ( rule__Perspective__ElementsAssignment_7 )* )
+            // InternalPerspectiveDsl.g:4516:1: ( ( ( rule__Perspective__ElementsAssignment_7 )* ) )
+            // InternalPerspectiveDsl.g:4517:1: ( ( rule__Perspective__ElementsAssignment_7 )* )
             {
-            // InternalPerspectiveDsl.g:4455:1: ( ( rule__Perspective__ElementsAssignment_7 )* )
-            // InternalPerspectiveDsl.g:4456:2: ( rule__Perspective__ElementsAssignment_7 )*
+            // InternalPerspectiveDsl.g:4517:1: ( ( rule__Perspective__ElementsAssignment_7 )* )
+            // InternalPerspectiveDsl.g:4518:2: ( rule__Perspective__ElementsAssignment_7 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getElementsAssignment_7()); 
             }
-            // InternalPerspectiveDsl.g:4457:2: ( rule__Perspective__ElementsAssignment_7 )*
+            // InternalPerspectiveDsl.g:4519:2: ( rule__Perspective__ElementsAssignment_7 )*
             loop55:
             do {
                 int alt55=2;
@@ -16318,7 +16548,7 @@
 
                 switch (alt55) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:4457:3: rule__Perspective__ElementsAssignment_7
+            	    // InternalPerspectiveDsl.g:4519:3: rule__Perspective__ElementsAssignment_7
             	    {
             	    pushFollow(FOLLOW_14);
             	    rule__Perspective__ElementsAssignment_7();
@@ -16359,14 +16589,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group__8"
-    // InternalPerspectiveDsl.g:4465:1: rule__Perspective__Group__8 : rule__Perspective__Group__8__Impl ;
+    // InternalPerspectiveDsl.g:4527:1: rule__Perspective__Group__8 : rule__Perspective__Group__8__Impl ;
     public final void rule__Perspective__Group__8() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4469:1: ( rule__Perspective__Group__8__Impl )
-            // InternalPerspectiveDsl.g:4470:2: rule__Perspective__Group__8__Impl
+            // InternalPerspectiveDsl.g:4531:1: ( rule__Perspective__Group__8__Impl )
+            // InternalPerspectiveDsl.g:4532:2: rule__Perspective__Group__8__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__Group__8__Impl();
@@ -16392,17 +16622,17 @@
 
 
     // $ANTLR start "rule__Perspective__Group__8__Impl"
-    // InternalPerspectiveDsl.g:4476:1: rule__Perspective__Group__8__Impl : ( '}' ) ;
+    // InternalPerspectiveDsl.g:4538:1: rule__Perspective__Group__8__Impl : ( '}' ) ;
     public final void rule__Perspective__Group__8__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4480:1: ( ( '}' ) )
-            // InternalPerspectiveDsl.g:4481:1: ( '}' )
+            // InternalPerspectiveDsl.g:4542:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:4543:1: ( '}' )
             {
-            // InternalPerspectiveDsl.g:4481:1: ( '}' )
-            // InternalPerspectiveDsl.g:4482:2: '}'
+            // InternalPerspectiveDsl.g:4543:1: ( '}' )
+            // InternalPerspectiveDsl.g:4544:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getRightCurlyBracketKeyword_8()); 
@@ -16433,14 +16663,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group_3__0"
-    // InternalPerspectiveDsl.g:4492:1: rule__Perspective__Group_3__0 : rule__Perspective__Group_3__0__Impl rule__Perspective__Group_3__1 ;
+    // InternalPerspectiveDsl.g:4554:1: rule__Perspective__Group_3__0 : rule__Perspective__Group_3__0__Impl rule__Perspective__Group_3__1 ;
     public final void rule__Perspective__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4496:1: ( rule__Perspective__Group_3__0__Impl rule__Perspective__Group_3__1 )
-            // InternalPerspectiveDsl.g:4497:2: rule__Perspective__Group_3__0__Impl rule__Perspective__Group_3__1
+            // InternalPerspectiveDsl.g:4558:1: ( rule__Perspective__Group_3__0__Impl rule__Perspective__Group_3__1 )
+            // InternalPerspectiveDsl.g:4559:2: rule__Perspective__Group_3__0__Impl rule__Perspective__Group_3__1
             {
             pushFollow(FOLLOW_15);
             rule__Perspective__Group_3__0__Impl();
@@ -16471,23 +16701,23 @@
 
 
     // $ANTLR start "rule__Perspective__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:4504:1: rule__Perspective__Group_3__0__Impl : ( ( rule__Perspective__DescriptionAssignment_3_0 ) ) ;
+    // InternalPerspectiveDsl.g:4566:1: rule__Perspective__Group_3__0__Impl : ( ( rule__Perspective__DescriptionAssignment_3_0 ) ) ;
     public final void rule__Perspective__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4508:1: ( ( ( rule__Perspective__DescriptionAssignment_3_0 ) ) )
-            // InternalPerspectiveDsl.g:4509:1: ( ( rule__Perspective__DescriptionAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:4570:1: ( ( ( rule__Perspective__DescriptionAssignment_3_0 ) ) )
+            // InternalPerspectiveDsl.g:4571:1: ( ( rule__Perspective__DescriptionAssignment_3_0 ) )
             {
-            // InternalPerspectiveDsl.g:4509:1: ( ( rule__Perspective__DescriptionAssignment_3_0 ) )
-            // InternalPerspectiveDsl.g:4510:2: ( rule__Perspective__DescriptionAssignment_3_0 )
+            // InternalPerspectiveDsl.g:4571:1: ( ( rule__Perspective__DescriptionAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:4572:2: ( rule__Perspective__DescriptionAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getDescriptionAssignment_3_0()); 
             }
-            // InternalPerspectiveDsl.g:4511:2: ( rule__Perspective__DescriptionAssignment_3_0 )
-            // InternalPerspectiveDsl.g:4511:3: rule__Perspective__DescriptionAssignment_3_0
+            // InternalPerspectiveDsl.g:4573:2: ( rule__Perspective__DescriptionAssignment_3_0 )
+            // InternalPerspectiveDsl.g:4573:3: rule__Perspective__DescriptionAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__DescriptionAssignment_3_0();
@@ -16522,14 +16752,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group_3__1"
-    // InternalPerspectiveDsl.g:4519:1: rule__Perspective__Group_3__1 : rule__Perspective__Group_3__1__Impl ;
+    // InternalPerspectiveDsl.g:4581:1: rule__Perspective__Group_3__1 : rule__Perspective__Group_3__1__Impl ;
     public final void rule__Perspective__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4523:1: ( rule__Perspective__Group_3__1__Impl )
-            // InternalPerspectiveDsl.g:4524:2: rule__Perspective__Group_3__1__Impl
+            // InternalPerspectiveDsl.g:4585:1: ( rule__Perspective__Group_3__1__Impl )
+            // InternalPerspectiveDsl.g:4586:2: rule__Perspective__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__Group_3__1__Impl();
@@ -16555,23 +16785,23 @@
 
 
     // $ANTLR start "rule__Perspective__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:4530:1: rule__Perspective__Group_3__1__Impl : ( ( rule__Perspective__DescriptionValueAssignment_3_1 ) ) ;
+    // InternalPerspectiveDsl.g:4592:1: rule__Perspective__Group_3__1__Impl : ( ( rule__Perspective__DescriptionValueAssignment_3_1 ) ) ;
     public final void rule__Perspective__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4534:1: ( ( ( rule__Perspective__DescriptionValueAssignment_3_1 ) ) )
-            // InternalPerspectiveDsl.g:4535:1: ( ( rule__Perspective__DescriptionValueAssignment_3_1 ) )
+            // InternalPerspectiveDsl.g:4596:1: ( ( ( rule__Perspective__DescriptionValueAssignment_3_1 ) ) )
+            // InternalPerspectiveDsl.g:4597:1: ( ( rule__Perspective__DescriptionValueAssignment_3_1 ) )
             {
-            // InternalPerspectiveDsl.g:4535:1: ( ( rule__Perspective__DescriptionValueAssignment_3_1 ) )
-            // InternalPerspectiveDsl.g:4536:2: ( rule__Perspective__DescriptionValueAssignment_3_1 )
+            // InternalPerspectiveDsl.g:4597:1: ( ( rule__Perspective__DescriptionValueAssignment_3_1 ) )
+            // InternalPerspectiveDsl.g:4598:2: ( rule__Perspective__DescriptionValueAssignment_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getDescriptionValueAssignment_3_1()); 
             }
-            // InternalPerspectiveDsl.g:4537:2: ( rule__Perspective__DescriptionValueAssignment_3_1 )
-            // InternalPerspectiveDsl.g:4537:3: rule__Perspective__DescriptionValueAssignment_3_1
+            // InternalPerspectiveDsl.g:4599:2: ( rule__Perspective__DescriptionValueAssignment_3_1 )
+            // InternalPerspectiveDsl.g:4599:3: rule__Perspective__DescriptionValueAssignment_3_1
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__DescriptionValueAssignment_3_1();
@@ -16606,14 +16836,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group_4__0"
-    // InternalPerspectiveDsl.g:4546:1: rule__Perspective__Group_4__0 : rule__Perspective__Group_4__0__Impl rule__Perspective__Group_4__1 ;
+    // InternalPerspectiveDsl.g:4608:1: rule__Perspective__Group_4__0 : rule__Perspective__Group_4__0__Impl rule__Perspective__Group_4__1 ;
     public final void rule__Perspective__Group_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4550:1: ( rule__Perspective__Group_4__0__Impl rule__Perspective__Group_4__1 )
-            // InternalPerspectiveDsl.g:4551:2: rule__Perspective__Group_4__0__Impl rule__Perspective__Group_4__1
+            // InternalPerspectiveDsl.g:4612:1: ( rule__Perspective__Group_4__0__Impl rule__Perspective__Group_4__1 )
+            // InternalPerspectiveDsl.g:4613:2: rule__Perspective__Group_4__0__Impl rule__Perspective__Group_4__1
             {
             pushFollow(FOLLOW_7);
             rule__Perspective__Group_4__0__Impl();
@@ -16644,17 +16874,17 @@
 
 
     // $ANTLR start "rule__Perspective__Group_4__0__Impl"
-    // InternalPerspectiveDsl.g:4558:1: rule__Perspective__Group_4__0__Impl : ( 'process' ) ;
+    // InternalPerspectiveDsl.g:4620:1: rule__Perspective__Group_4__0__Impl : ( 'process' ) ;
     public final void rule__Perspective__Group_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4562:1: ( ( 'process' ) )
-            // InternalPerspectiveDsl.g:4563:1: ( 'process' )
+            // InternalPerspectiveDsl.g:4624:1: ( ( 'process' ) )
+            // InternalPerspectiveDsl.g:4625:1: ( 'process' )
             {
-            // InternalPerspectiveDsl.g:4563:1: ( 'process' )
-            // InternalPerspectiveDsl.g:4564:2: 'process'
+            // InternalPerspectiveDsl.g:4625:1: ( 'process' )
+            // InternalPerspectiveDsl.g:4626:2: 'process'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getProcessKeyword_4_0()); 
@@ -16685,14 +16915,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group_4__1"
-    // InternalPerspectiveDsl.g:4573:1: rule__Perspective__Group_4__1 : rule__Perspective__Group_4__1__Impl rule__Perspective__Group_4__2 ;
+    // InternalPerspectiveDsl.g:4635:1: rule__Perspective__Group_4__1 : rule__Perspective__Group_4__1__Impl rule__Perspective__Group_4__2 ;
     public final void rule__Perspective__Group_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4577:1: ( rule__Perspective__Group_4__1__Impl rule__Perspective__Group_4__2 )
-            // InternalPerspectiveDsl.g:4578:2: rule__Perspective__Group_4__1__Impl rule__Perspective__Group_4__2
+            // InternalPerspectiveDsl.g:4639:1: ( rule__Perspective__Group_4__1__Impl rule__Perspective__Group_4__2 )
+            // InternalPerspectiveDsl.g:4640:2: rule__Perspective__Group_4__1__Impl rule__Perspective__Group_4__2
             {
             pushFollow(FOLLOW_16);
             rule__Perspective__Group_4__1__Impl();
@@ -16723,23 +16953,23 @@
 
 
     // $ANTLR start "rule__Perspective__Group_4__1__Impl"
-    // InternalPerspectiveDsl.g:4585:1: rule__Perspective__Group_4__1__Impl : ( ( rule__Perspective__ProcessAssignment_4_1 ) ) ;
+    // InternalPerspectiveDsl.g:4647:1: rule__Perspective__Group_4__1__Impl : ( ( rule__Perspective__ProcessAssignment_4_1 ) ) ;
     public final void rule__Perspective__Group_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4589:1: ( ( ( rule__Perspective__ProcessAssignment_4_1 ) ) )
-            // InternalPerspectiveDsl.g:4590:1: ( ( rule__Perspective__ProcessAssignment_4_1 ) )
+            // InternalPerspectiveDsl.g:4651:1: ( ( ( rule__Perspective__ProcessAssignment_4_1 ) ) )
+            // InternalPerspectiveDsl.g:4652:1: ( ( rule__Perspective__ProcessAssignment_4_1 ) )
             {
-            // InternalPerspectiveDsl.g:4590:1: ( ( rule__Perspective__ProcessAssignment_4_1 ) )
-            // InternalPerspectiveDsl.g:4591:2: ( rule__Perspective__ProcessAssignment_4_1 )
+            // InternalPerspectiveDsl.g:4652:1: ( ( rule__Perspective__ProcessAssignment_4_1 ) )
+            // InternalPerspectiveDsl.g:4653:2: ( rule__Perspective__ProcessAssignment_4_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getProcessAssignment_4_1()); 
             }
-            // InternalPerspectiveDsl.g:4592:2: ( rule__Perspective__ProcessAssignment_4_1 )
-            // InternalPerspectiveDsl.g:4592:3: rule__Perspective__ProcessAssignment_4_1
+            // InternalPerspectiveDsl.g:4654:2: ( rule__Perspective__ProcessAssignment_4_1 )
+            // InternalPerspectiveDsl.g:4654:3: rule__Perspective__ProcessAssignment_4_1
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__ProcessAssignment_4_1();
@@ -16774,14 +17004,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group_4__2"
-    // InternalPerspectiveDsl.g:4600:1: rule__Perspective__Group_4__2 : rule__Perspective__Group_4__2__Impl rule__Perspective__Group_4__3 ;
+    // InternalPerspectiveDsl.g:4662:1: rule__Perspective__Group_4__2 : rule__Perspective__Group_4__2__Impl rule__Perspective__Group_4__3 ;
     public final void rule__Perspective__Group_4__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4604:1: ( rule__Perspective__Group_4__2__Impl rule__Perspective__Group_4__3 )
-            // InternalPerspectiveDsl.g:4605:2: rule__Perspective__Group_4__2__Impl rule__Perspective__Group_4__3
+            // InternalPerspectiveDsl.g:4666:1: ( rule__Perspective__Group_4__2__Impl rule__Perspective__Group_4__3 )
+            // InternalPerspectiveDsl.g:4667:2: rule__Perspective__Group_4__2__Impl rule__Perspective__Group_4__3
             {
             pushFollow(FOLLOW_7);
             rule__Perspective__Group_4__2__Impl();
@@ -16812,17 +17042,17 @@
 
 
     // $ANTLR start "rule__Perspective__Group_4__2__Impl"
-    // InternalPerspectiveDsl.g:4612:1: rule__Perspective__Group_4__2__Impl : ( 'usertask' ) ;
+    // InternalPerspectiveDsl.g:4674:1: rule__Perspective__Group_4__2__Impl : ( 'usertask' ) ;
     public final void rule__Perspective__Group_4__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4616:1: ( ( 'usertask' ) )
-            // InternalPerspectiveDsl.g:4617:1: ( 'usertask' )
+            // InternalPerspectiveDsl.g:4678:1: ( ( 'usertask' ) )
+            // InternalPerspectiveDsl.g:4679:1: ( 'usertask' )
             {
-            // InternalPerspectiveDsl.g:4617:1: ( 'usertask' )
-            // InternalPerspectiveDsl.g:4618:2: 'usertask'
+            // InternalPerspectiveDsl.g:4679:1: ( 'usertask' )
+            // InternalPerspectiveDsl.g:4680:2: 'usertask'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getUsertaskKeyword_4_2()); 
@@ -16853,14 +17083,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group_4__3"
-    // InternalPerspectiveDsl.g:4627:1: rule__Perspective__Group_4__3 : rule__Perspective__Group_4__3__Impl ;
+    // InternalPerspectiveDsl.g:4689:1: rule__Perspective__Group_4__3 : rule__Perspective__Group_4__3__Impl ;
     public final void rule__Perspective__Group_4__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4631:1: ( rule__Perspective__Group_4__3__Impl )
-            // InternalPerspectiveDsl.g:4632:2: rule__Perspective__Group_4__3__Impl
+            // InternalPerspectiveDsl.g:4693:1: ( rule__Perspective__Group_4__3__Impl )
+            // InternalPerspectiveDsl.g:4694:2: rule__Perspective__Group_4__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__Group_4__3__Impl();
@@ -16886,23 +17116,23 @@
 
 
     // $ANTLR start "rule__Perspective__Group_4__3__Impl"
-    // InternalPerspectiveDsl.g:4638:1: rule__Perspective__Group_4__3__Impl : ( ( rule__Perspective__UserTaskAssignment_4_3 ) ) ;
+    // InternalPerspectiveDsl.g:4700:1: rule__Perspective__Group_4__3__Impl : ( ( rule__Perspective__UserTaskAssignment_4_3 ) ) ;
     public final void rule__Perspective__Group_4__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4642:1: ( ( ( rule__Perspective__UserTaskAssignment_4_3 ) ) )
-            // InternalPerspectiveDsl.g:4643:1: ( ( rule__Perspective__UserTaskAssignment_4_3 ) )
+            // InternalPerspectiveDsl.g:4704:1: ( ( ( rule__Perspective__UserTaskAssignment_4_3 ) ) )
+            // InternalPerspectiveDsl.g:4705:1: ( ( rule__Perspective__UserTaskAssignment_4_3 ) )
             {
-            // InternalPerspectiveDsl.g:4643:1: ( ( rule__Perspective__UserTaskAssignment_4_3 ) )
-            // InternalPerspectiveDsl.g:4644:2: ( rule__Perspective__UserTaskAssignment_4_3 )
+            // InternalPerspectiveDsl.g:4705:1: ( ( rule__Perspective__UserTaskAssignment_4_3 ) )
+            // InternalPerspectiveDsl.g:4706:2: ( rule__Perspective__UserTaskAssignment_4_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getUserTaskAssignment_4_3()); 
             }
-            // InternalPerspectiveDsl.g:4645:2: ( rule__Perspective__UserTaskAssignment_4_3 )
-            // InternalPerspectiveDsl.g:4645:3: rule__Perspective__UserTaskAssignment_4_3
+            // InternalPerspectiveDsl.g:4707:2: ( rule__Perspective__UserTaskAssignment_4_3 )
+            // InternalPerspectiveDsl.g:4707:3: rule__Perspective__UserTaskAssignment_4_3
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__UserTaskAssignment_4_3();
@@ -16937,14 +17167,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group_5_0__0"
-    // InternalPerspectiveDsl.g:4654:1: rule__Perspective__Group_5_0__0 : rule__Perspective__Group_5_0__0__Impl rule__Perspective__Group_5_0__1 ;
+    // InternalPerspectiveDsl.g:4716:1: rule__Perspective__Group_5_0__0 : rule__Perspective__Group_5_0__0__Impl rule__Perspective__Group_5_0__1 ;
     public final void rule__Perspective__Group_5_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4658:1: ( rule__Perspective__Group_5_0__0__Impl rule__Perspective__Group_5_0__1 )
-            // InternalPerspectiveDsl.g:4659:2: rule__Perspective__Group_5_0__0__Impl rule__Perspective__Group_5_0__1
+            // InternalPerspectiveDsl.g:4720:1: ( rule__Perspective__Group_5_0__0__Impl rule__Perspective__Group_5_0__1 )
+            // InternalPerspectiveDsl.g:4721:2: rule__Perspective__Group_5_0__0__Impl rule__Perspective__Group_5_0__1
             {
             pushFollow(FOLLOW_15);
             rule__Perspective__Group_5_0__0__Impl();
@@ -16975,17 +17205,17 @@
 
 
     // $ANTLR start "rule__Perspective__Group_5_0__0__Impl"
-    // InternalPerspectiveDsl.g:4666:1: rule__Perspective__Group_5_0__0__Impl : ( 'iconURI' ) ;
+    // InternalPerspectiveDsl.g:4728:1: rule__Perspective__Group_5_0__0__Impl : ( 'iconURI' ) ;
     public final void rule__Perspective__Group_5_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4670:1: ( ( 'iconURI' ) )
-            // InternalPerspectiveDsl.g:4671:1: ( 'iconURI' )
+            // InternalPerspectiveDsl.g:4732:1: ( ( 'iconURI' ) )
+            // InternalPerspectiveDsl.g:4733:1: ( 'iconURI' )
             {
-            // InternalPerspectiveDsl.g:4671:1: ( 'iconURI' )
-            // InternalPerspectiveDsl.g:4672:2: 'iconURI'
+            // InternalPerspectiveDsl.g:4733:1: ( 'iconURI' )
+            // InternalPerspectiveDsl.g:4734:2: 'iconURI'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getIconURIKeyword_5_0_0()); 
@@ -17016,14 +17246,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group_5_0__1"
-    // InternalPerspectiveDsl.g:4681:1: rule__Perspective__Group_5_0__1 : rule__Perspective__Group_5_0__1__Impl ;
+    // InternalPerspectiveDsl.g:4743:1: rule__Perspective__Group_5_0__1 : rule__Perspective__Group_5_0__1__Impl ;
     public final void rule__Perspective__Group_5_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4685:1: ( rule__Perspective__Group_5_0__1__Impl )
-            // InternalPerspectiveDsl.g:4686:2: rule__Perspective__Group_5_0__1__Impl
+            // InternalPerspectiveDsl.g:4747:1: ( rule__Perspective__Group_5_0__1__Impl )
+            // InternalPerspectiveDsl.g:4748:2: rule__Perspective__Group_5_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__Group_5_0__1__Impl();
@@ -17049,23 +17279,23 @@
 
 
     // $ANTLR start "rule__Perspective__Group_5_0__1__Impl"
-    // InternalPerspectiveDsl.g:4692:1: rule__Perspective__Group_5_0__1__Impl : ( ( rule__Perspective__IconURIAssignment_5_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:4754:1: rule__Perspective__Group_5_0__1__Impl : ( ( rule__Perspective__IconURIAssignment_5_0_1 ) ) ;
     public final void rule__Perspective__Group_5_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4696:1: ( ( ( rule__Perspective__IconURIAssignment_5_0_1 ) ) )
-            // InternalPerspectiveDsl.g:4697:1: ( ( rule__Perspective__IconURIAssignment_5_0_1 ) )
+            // InternalPerspectiveDsl.g:4758:1: ( ( ( rule__Perspective__IconURIAssignment_5_0_1 ) ) )
+            // InternalPerspectiveDsl.g:4759:1: ( ( rule__Perspective__IconURIAssignment_5_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:4697:1: ( ( rule__Perspective__IconURIAssignment_5_0_1 ) )
-            // InternalPerspectiveDsl.g:4698:2: ( rule__Perspective__IconURIAssignment_5_0_1 )
+            // InternalPerspectiveDsl.g:4759:1: ( ( rule__Perspective__IconURIAssignment_5_0_1 ) )
+            // InternalPerspectiveDsl.g:4760:2: ( rule__Perspective__IconURIAssignment_5_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getIconURIAssignment_5_0_1()); 
             }
-            // InternalPerspectiveDsl.g:4699:2: ( rule__Perspective__IconURIAssignment_5_0_1 )
-            // InternalPerspectiveDsl.g:4699:3: rule__Perspective__IconURIAssignment_5_0_1
+            // InternalPerspectiveDsl.g:4761:2: ( rule__Perspective__IconURIAssignment_5_0_1 )
+            // InternalPerspectiveDsl.g:4761:3: rule__Perspective__IconURIAssignment_5_0_1
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__IconURIAssignment_5_0_1();
@@ -17100,14 +17330,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group_5_1__0"
-    // InternalPerspectiveDsl.g:4708:1: rule__Perspective__Group_5_1__0 : rule__Perspective__Group_5_1__0__Impl rule__Perspective__Group_5_1__1 ;
+    // InternalPerspectiveDsl.g:4770:1: rule__Perspective__Group_5_1__0 : rule__Perspective__Group_5_1__0__Impl rule__Perspective__Group_5_1__1 ;
     public final void rule__Perspective__Group_5_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4712:1: ( rule__Perspective__Group_5_1__0__Impl rule__Perspective__Group_5_1__1 )
-            // InternalPerspectiveDsl.g:4713:2: rule__Perspective__Group_5_1__0__Impl rule__Perspective__Group_5_1__1
+            // InternalPerspectiveDsl.g:4774:1: ( rule__Perspective__Group_5_1__0__Impl rule__Perspective__Group_5_1__1 )
+            // InternalPerspectiveDsl.g:4775:2: rule__Perspective__Group_5_1__0__Impl rule__Perspective__Group_5_1__1
             {
             pushFollow(FOLLOW_15);
             rule__Perspective__Group_5_1__0__Impl();
@@ -17138,17 +17368,17 @@
 
 
     // $ANTLR start "rule__Perspective__Group_5_1__0__Impl"
-    // InternalPerspectiveDsl.g:4720:1: rule__Perspective__Group_5_1__0__Impl : ( 'accessibility' ) ;
+    // InternalPerspectiveDsl.g:4782:1: rule__Perspective__Group_5_1__0__Impl : ( 'accessibility' ) ;
     public final void rule__Perspective__Group_5_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4724:1: ( ( 'accessibility' ) )
-            // InternalPerspectiveDsl.g:4725:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:4786:1: ( ( 'accessibility' ) )
+            // InternalPerspectiveDsl.g:4787:1: ( 'accessibility' )
             {
-            // InternalPerspectiveDsl.g:4725:1: ( 'accessibility' )
-            // InternalPerspectiveDsl.g:4726:2: 'accessibility'
+            // InternalPerspectiveDsl.g:4787:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:4788:2: 'accessibility'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getAccessibilityKeyword_5_1_0()); 
@@ -17179,14 +17409,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group_5_1__1"
-    // InternalPerspectiveDsl.g:4735:1: rule__Perspective__Group_5_1__1 : rule__Perspective__Group_5_1__1__Impl ;
+    // InternalPerspectiveDsl.g:4797:1: rule__Perspective__Group_5_1__1 : rule__Perspective__Group_5_1__1__Impl ;
     public final void rule__Perspective__Group_5_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4739:1: ( rule__Perspective__Group_5_1__1__Impl )
-            // InternalPerspectiveDsl.g:4740:2: rule__Perspective__Group_5_1__1__Impl
+            // InternalPerspectiveDsl.g:4801:1: ( rule__Perspective__Group_5_1__1__Impl )
+            // InternalPerspectiveDsl.g:4802:2: rule__Perspective__Group_5_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__Group_5_1__1__Impl();
@@ -17212,23 +17442,23 @@
 
 
     // $ANTLR start "rule__Perspective__Group_5_1__1__Impl"
-    // InternalPerspectiveDsl.g:4746:1: rule__Perspective__Group_5_1__1__Impl : ( ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:4808:1: rule__Perspective__Group_5_1__1__Impl : ( ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 ) ) ;
     public final void rule__Perspective__Group_5_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4750:1: ( ( ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 ) ) )
-            // InternalPerspectiveDsl.g:4751:1: ( ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 ) )
+            // InternalPerspectiveDsl.g:4812:1: ( ( ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 ) ) )
+            // InternalPerspectiveDsl.g:4813:1: ( ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:4751:1: ( ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 ) )
-            // InternalPerspectiveDsl.g:4752:2: ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 )
+            // InternalPerspectiveDsl.g:4813:1: ( ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 ) )
+            // InternalPerspectiveDsl.g:4814:2: ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getAccessibilityPhraseAssignment_5_1_1()); 
             }
-            // InternalPerspectiveDsl.g:4753:2: ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 )
-            // InternalPerspectiveDsl.g:4753:3: rule__Perspective__AccessibilityPhraseAssignment_5_1_1
+            // InternalPerspectiveDsl.g:4815:2: ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 )
+            // InternalPerspectiveDsl.g:4815:3: rule__Perspective__AccessibilityPhraseAssignment_5_1_1
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__AccessibilityPhraseAssignment_5_1_1();
@@ -17263,14 +17493,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group_5_2__0"
-    // InternalPerspectiveDsl.g:4762:1: rule__Perspective__Group_5_2__0 : rule__Perspective__Group_5_2__0__Impl rule__Perspective__Group_5_2__1 ;
+    // InternalPerspectiveDsl.g:4824:1: rule__Perspective__Group_5_2__0 : rule__Perspective__Group_5_2__0__Impl rule__Perspective__Group_5_2__1 ;
     public final void rule__Perspective__Group_5_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4766:1: ( rule__Perspective__Group_5_2__0__Impl rule__Perspective__Group_5_2__1 )
-            // InternalPerspectiveDsl.g:4767:2: rule__Perspective__Group_5_2__0__Impl rule__Perspective__Group_5_2__1
+            // InternalPerspectiveDsl.g:4828:1: ( rule__Perspective__Group_5_2__0__Impl rule__Perspective__Group_5_2__1 )
+            // InternalPerspectiveDsl.g:4829:2: rule__Perspective__Group_5_2__0__Impl rule__Perspective__Group_5_2__1
             {
             pushFollow(FOLLOW_7);
             rule__Perspective__Group_5_2__0__Impl();
@@ -17301,17 +17531,17 @@
 
 
     // $ANTLR start "rule__Perspective__Group_5_2__0__Impl"
-    // InternalPerspectiveDsl.g:4774:1: rule__Perspective__Group_5_2__0__Impl : ( 'toolbar' ) ;
+    // InternalPerspectiveDsl.g:4836:1: rule__Perspective__Group_5_2__0__Impl : ( 'toolbar' ) ;
     public final void rule__Perspective__Group_5_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4778:1: ( ( 'toolbar' ) )
-            // InternalPerspectiveDsl.g:4779:1: ( 'toolbar' )
+            // InternalPerspectiveDsl.g:4840:1: ( ( 'toolbar' ) )
+            // InternalPerspectiveDsl.g:4841:1: ( 'toolbar' )
             {
-            // InternalPerspectiveDsl.g:4779:1: ( 'toolbar' )
-            // InternalPerspectiveDsl.g:4780:2: 'toolbar'
+            // InternalPerspectiveDsl.g:4841:1: ( 'toolbar' )
+            // InternalPerspectiveDsl.g:4842:2: 'toolbar'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getToolbarKeyword_5_2_0()); 
@@ -17342,14 +17572,14 @@
 
 
     // $ANTLR start "rule__Perspective__Group_5_2__1"
-    // InternalPerspectiveDsl.g:4789:1: rule__Perspective__Group_5_2__1 : rule__Perspective__Group_5_2__1__Impl ;
+    // InternalPerspectiveDsl.g:4851:1: rule__Perspective__Group_5_2__1 : rule__Perspective__Group_5_2__1__Impl ;
     public final void rule__Perspective__Group_5_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4793:1: ( rule__Perspective__Group_5_2__1__Impl )
-            // InternalPerspectiveDsl.g:4794:2: rule__Perspective__Group_5_2__1__Impl
+            // InternalPerspectiveDsl.g:4855:1: ( rule__Perspective__Group_5_2__1__Impl )
+            // InternalPerspectiveDsl.g:4856:2: rule__Perspective__Group_5_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__Group_5_2__1__Impl();
@@ -17375,23 +17605,23 @@
 
 
     // $ANTLR start "rule__Perspective__Group_5_2__1__Impl"
-    // InternalPerspectiveDsl.g:4800:1: rule__Perspective__Group_5_2__1__Impl : ( ( rule__Perspective__ToolbarAssignment_5_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:4862:1: rule__Perspective__Group_5_2__1__Impl : ( ( rule__Perspective__ToolbarAssignment_5_2_1 ) ) ;
     public final void rule__Perspective__Group_5_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4804:1: ( ( ( rule__Perspective__ToolbarAssignment_5_2_1 ) ) )
-            // InternalPerspectiveDsl.g:4805:1: ( ( rule__Perspective__ToolbarAssignment_5_2_1 ) )
+            // InternalPerspectiveDsl.g:4866:1: ( ( ( rule__Perspective__ToolbarAssignment_5_2_1 ) ) )
+            // InternalPerspectiveDsl.g:4867:1: ( ( rule__Perspective__ToolbarAssignment_5_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:4805:1: ( ( rule__Perspective__ToolbarAssignment_5_2_1 ) )
-            // InternalPerspectiveDsl.g:4806:2: ( rule__Perspective__ToolbarAssignment_5_2_1 )
+            // InternalPerspectiveDsl.g:4867:1: ( ( rule__Perspective__ToolbarAssignment_5_2_1 ) )
+            // InternalPerspectiveDsl.g:4868:2: ( rule__Perspective__ToolbarAssignment_5_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getToolbarAssignment_5_2_1()); 
             }
-            // InternalPerspectiveDsl.g:4807:2: ( rule__Perspective__ToolbarAssignment_5_2_1 )
-            // InternalPerspectiveDsl.g:4807:3: rule__Perspective__ToolbarAssignment_5_2_1
+            // InternalPerspectiveDsl.g:4869:2: ( rule__Perspective__ToolbarAssignment_5_2_1 )
+            // InternalPerspectiveDsl.g:4869:3: rule__Perspective__ToolbarAssignment_5_2_1
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__ToolbarAssignment_5_2_1();
@@ -17426,14 +17656,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group__0"
-    // InternalPerspectiveDsl.g:4816:1: rule__PerspectiveSashContainer__Group__0 : rule__PerspectiveSashContainer__Group__0__Impl rule__PerspectiveSashContainer__Group__1 ;
+    // InternalPerspectiveDsl.g:4878:1: rule__PerspectiveSashContainer__Group__0 : rule__PerspectiveSashContainer__Group__0__Impl rule__PerspectiveSashContainer__Group__1 ;
     public final void rule__PerspectiveSashContainer__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4820:1: ( rule__PerspectiveSashContainer__Group__0__Impl rule__PerspectiveSashContainer__Group__1 )
-            // InternalPerspectiveDsl.g:4821:2: rule__PerspectiveSashContainer__Group__0__Impl rule__PerspectiveSashContainer__Group__1
+            // InternalPerspectiveDsl.g:4882:1: ( rule__PerspectiveSashContainer__Group__0__Impl rule__PerspectiveSashContainer__Group__1 )
+            // InternalPerspectiveDsl.g:4883:2: rule__PerspectiveSashContainer__Group__0__Impl rule__PerspectiveSashContainer__Group__1
             {
             pushFollow(FOLLOW_17);
             rule__PerspectiveSashContainer__Group__0__Impl();
@@ -17464,23 +17694,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group__0__Impl"
-    // InternalPerspectiveDsl.g:4828:1: rule__PerspectiveSashContainer__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:4890:1: rule__PerspectiveSashContainer__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveSashContainer__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4832:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:4833:1: ( () )
+            // InternalPerspectiveDsl.g:4894:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:4895:1: ( () )
             {
-            // InternalPerspectiveDsl.g:4833:1: ( () )
-            // InternalPerspectiveDsl.g:4834:2: ()
+            // InternalPerspectiveDsl.g:4895:1: ( () )
+            // InternalPerspectiveDsl.g:4896:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getPerspectiveSashContainerAction_0()); 
             }
-            // InternalPerspectiveDsl.g:4835:2: ()
-            // InternalPerspectiveDsl.g:4835:3: 
+            // InternalPerspectiveDsl.g:4897:2: ()
+            // InternalPerspectiveDsl.g:4897:3: 
             {
             }
 
@@ -17505,14 +17735,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group__1"
-    // InternalPerspectiveDsl.g:4843:1: rule__PerspectiveSashContainer__Group__1 : rule__PerspectiveSashContainer__Group__1__Impl rule__PerspectiveSashContainer__Group__2 ;
+    // InternalPerspectiveDsl.g:4905:1: rule__PerspectiveSashContainer__Group__1 : rule__PerspectiveSashContainer__Group__1__Impl rule__PerspectiveSashContainer__Group__2 ;
     public final void rule__PerspectiveSashContainer__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4847:1: ( rule__PerspectiveSashContainer__Group__1__Impl rule__PerspectiveSashContainer__Group__2 )
-            // InternalPerspectiveDsl.g:4848:2: rule__PerspectiveSashContainer__Group__1__Impl rule__PerspectiveSashContainer__Group__2
+            // InternalPerspectiveDsl.g:4909:1: ( rule__PerspectiveSashContainer__Group__1__Impl rule__PerspectiveSashContainer__Group__2 )
+            // InternalPerspectiveDsl.g:4910:2: rule__PerspectiveSashContainer__Group__1__Impl rule__PerspectiveSashContainer__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveSashContainer__Group__1__Impl();
@@ -17543,17 +17773,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group__1__Impl"
-    // InternalPerspectiveDsl.g:4855:1: rule__PerspectiveSashContainer__Group__1__Impl : ( 'sashContainer' ) ;
+    // InternalPerspectiveDsl.g:4917:1: rule__PerspectiveSashContainer__Group__1__Impl : ( 'sashContainer' ) ;
     public final void rule__PerspectiveSashContainer__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4859:1: ( ( 'sashContainer' ) )
-            // InternalPerspectiveDsl.g:4860:1: ( 'sashContainer' )
+            // InternalPerspectiveDsl.g:4921:1: ( ( 'sashContainer' ) )
+            // InternalPerspectiveDsl.g:4922:1: ( 'sashContainer' )
             {
-            // InternalPerspectiveDsl.g:4860:1: ( 'sashContainer' )
-            // InternalPerspectiveDsl.g:4861:2: 'sashContainer'
+            // InternalPerspectiveDsl.g:4922:1: ( 'sashContainer' )
+            // InternalPerspectiveDsl.g:4923:2: 'sashContainer'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getSashContainerKeyword_1()); 
@@ -17584,14 +17814,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group__2"
-    // InternalPerspectiveDsl.g:4870:1: rule__PerspectiveSashContainer__Group__2 : rule__PerspectiveSashContainer__Group__2__Impl rule__PerspectiveSashContainer__Group__3 ;
+    // InternalPerspectiveDsl.g:4932:1: rule__PerspectiveSashContainer__Group__2 : rule__PerspectiveSashContainer__Group__2__Impl rule__PerspectiveSashContainer__Group__3 ;
     public final void rule__PerspectiveSashContainer__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4874:1: ( rule__PerspectiveSashContainer__Group__2__Impl rule__PerspectiveSashContainer__Group__3 )
-            // InternalPerspectiveDsl.g:4875:2: rule__PerspectiveSashContainer__Group__2__Impl rule__PerspectiveSashContainer__Group__3
+            // InternalPerspectiveDsl.g:4936:1: ( rule__PerspectiveSashContainer__Group__2__Impl rule__PerspectiveSashContainer__Group__3 )
+            // InternalPerspectiveDsl.g:4937:2: rule__PerspectiveSashContainer__Group__2__Impl rule__PerspectiveSashContainer__Group__3
             {
             pushFollow(FOLLOW_18);
             rule__PerspectiveSashContainer__Group__2__Impl();
@@ -17622,23 +17852,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group__2__Impl"
-    // InternalPerspectiveDsl.g:4882:1: rule__PerspectiveSashContainer__Group__2__Impl : ( ( rule__PerspectiveSashContainer__ElementIdAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:4944:1: rule__PerspectiveSashContainer__Group__2__Impl : ( ( rule__PerspectiveSashContainer__ElementIdAssignment_2 ) ) ;
     public final void rule__PerspectiveSashContainer__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4886:1: ( ( ( rule__PerspectiveSashContainer__ElementIdAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:4887:1: ( ( rule__PerspectiveSashContainer__ElementIdAssignment_2 ) )
+            // InternalPerspectiveDsl.g:4948:1: ( ( ( rule__PerspectiveSashContainer__ElementIdAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:4949:1: ( ( rule__PerspectiveSashContainer__ElementIdAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:4887:1: ( ( rule__PerspectiveSashContainer__ElementIdAssignment_2 ) )
-            // InternalPerspectiveDsl.g:4888:2: ( rule__PerspectiveSashContainer__ElementIdAssignment_2 )
+            // InternalPerspectiveDsl.g:4949:1: ( ( rule__PerspectiveSashContainer__ElementIdAssignment_2 ) )
+            // InternalPerspectiveDsl.g:4950:2: ( rule__PerspectiveSashContainer__ElementIdAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getElementIdAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:4889:2: ( rule__PerspectiveSashContainer__ElementIdAssignment_2 )
-            // InternalPerspectiveDsl.g:4889:3: rule__PerspectiveSashContainer__ElementIdAssignment_2
+            // InternalPerspectiveDsl.g:4951:2: ( rule__PerspectiveSashContainer__ElementIdAssignment_2 )
+            // InternalPerspectiveDsl.g:4951:3: rule__PerspectiveSashContainer__ElementIdAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSashContainer__ElementIdAssignment_2();
@@ -17673,14 +17903,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group__3"
-    // InternalPerspectiveDsl.g:4897:1: rule__PerspectiveSashContainer__Group__3 : rule__PerspectiveSashContainer__Group__3__Impl rule__PerspectiveSashContainer__Group__4 ;
+    // InternalPerspectiveDsl.g:4959:1: rule__PerspectiveSashContainer__Group__3 : rule__PerspectiveSashContainer__Group__3__Impl rule__PerspectiveSashContainer__Group__4 ;
     public final void rule__PerspectiveSashContainer__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4901:1: ( rule__PerspectiveSashContainer__Group__3__Impl rule__PerspectiveSashContainer__Group__4 )
-            // InternalPerspectiveDsl.g:4902:2: rule__PerspectiveSashContainer__Group__3__Impl rule__PerspectiveSashContainer__Group__4
+            // InternalPerspectiveDsl.g:4963:1: ( rule__PerspectiveSashContainer__Group__3__Impl rule__PerspectiveSashContainer__Group__4 )
+            // InternalPerspectiveDsl.g:4964:2: rule__PerspectiveSashContainer__Group__3__Impl rule__PerspectiveSashContainer__Group__4
             {
             pushFollow(FOLLOW_8);
             rule__PerspectiveSashContainer__Group__3__Impl();
@@ -17711,23 +17941,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group__3__Impl"
-    // InternalPerspectiveDsl.g:4909:1: rule__PerspectiveSashContainer__Group__3__Impl : ( ( rule__PerspectiveSashContainer__UnorderedGroup_3 ) ) ;
+    // InternalPerspectiveDsl.g:4971:1: rule__PerspectiveSashContainer__Group__3__Impl : ( ( rule__PerspectiveSashContainer__UnorderedGroup_3 ) ) ;
     public final void rule__PerspectiveSashContainer__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4913:1: ( ( ( rule__PerspectiveSashContainer__UnorderedGroup_3 ) ) )
-            // InternalPerspectiveDsl.g:4914:1: ( ( rule__PerspectiveSashContainer__UnorderedGroup_3 ) )
+            // InternalPerspectiveDsl.g:4975:1: ( ( ( rule__PerspectiveSashContainer__UnorderedGroup_3 ) ) )
+            // InternalPerspectiveDsl.g:4976:1: ( ( rule__PerspectiveSashContainer__UnorderedGroup_3 ) )
             {
-            // InternalPerspectiveDsl.g:4914:1: ( ( rule__PerspectiveSashContainer__UnorderedGroup_3 ) )
-            // InternalPerspectiveDsl.g:4915:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3 )
+            // InternalPerspectiveDsl.g:4976:1: ( ( rule__PerspectiveSashContainer__UnorderedGroup_3 ) )
+            // InternalPerspectiveDsl.g:4977:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:4916:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3 )
-            // InternalPerspectiveDsl.g:4916:3: rule__PerspectiveSashContainer__UnorderedGroup_3
+            // InternalPerspectiveDsl.g:4978:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3 )
+            // InternalPerspectiveDsl.g:4978:3: rule__PerspectiveSashContainer__UnorderedGroup_3
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSashContainer__UnorderedGroup_3();
@@ -17762,14 +17992,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group__4"
-    // InternalPerspectiveDsl.g:4924:1: rule__PerspectiveSashContainer__Group__4 : rule__PerspectiveSashContainer__Group__4__Impl rule__PerspectiveSashContainer__Group__5 ;
+    // InternalPerspectiveDsl.g:4986:1: rule__PerspectiveSashContainer__Group__4 : rule__PerspectiveSashContainer__Group__4__Impl rule__PerspectiveSashContainer__Group__5 ;
     public final void rule__PerspectiveSashContainer__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4928:1: ( rule__PerspectiveSashContainer__Group__4__Impl rule__PerspectiveSashContainer__Group__5 )
-            // InternalPerspectiveDsl.g:4929:2: rule__PerspectiveSashContainer__Group__4__Impl rule__PerspectiveSashContainer__Group__5
+            // InternalPerspectiveDsl.g:4990:1: ( rule__PerspectiveSashContainer__Group__4__Impl rule__PerspectiveSashContainer__Group__5 )
+            // InternalPerspectiveDsl.g:4991:2: rule__PerspectiveSashContainer__Group__4__Impl rule__PerspectiveSashContainer__Group__5
             {
             pushFollow(FOLLOW_13);
             rule__PerspectiveSashContainer__Group__4__Impl();
@@ -17800,17 +18030,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group__4__Impl"
-    // InternalPerspectiveDsl.g:4936:1: rule__PerspectiveSashContainer__Group__4__Impl : ( '{' ) ;
+    // InternalPerspectiveDsl.g:4998:1: rule__PerspectiveSashContainer__Group__4__Impl : ( '{' ) ;
     public final void rule__PerspectiveSashContainer__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4940:1: ( ( '{' ) )
-            // InternalPerspectiveDsl.g:4941:1: ( '{' )
+            // InternalPerspectiveDsl.g:5002:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:5003:1: ( '{' )
             {
-            // InternalPerspectiveDsl.g:4941:1: ( '{' )
-            // InternalPerspectiveDsl.g:4942:2: '{'
+            // InternalPerspectiveDsl.g:5003:1: ( '{' )
+            // InternalPerspectiveDsl.g:5004:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getLeftCurlyBracketKeyword_4()); 
@@ -17841,14 +18071,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group__5"
-    // InternalPerspectiveDsl.g:4951:1: rule__PerspectiveSashContainer__Group__5 : rule__PerspectiveSashContainer__Group__5__Impl rule__PerspectiveSashContainer__Group__6 ;
+    // InternalPerspectiveDsl.g:5013:1: rule__PerspectiveSashContainer__Group__5 : rule__PerspectiveSashContainer__Group__5__Impl rule__PerspectiveSashContainer__Group__6 ;
     public final void rule__PerspectiveSashContainer__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4955:1: ( rule__PerspectiveSashContainer__Group__5__Impl rule__PerspectiveSashContainer__Group__6 )
-            // InternalPerspectiveDsl.g:4956:2: rule__PerspectiveSashContainer__Group__5__Impl rule__PerspectiveSashContainer__Group__6
+            // InternalPerspectiveDsl.g:5017:1: ( rule__PerspectiveSashContainer__Group__5__Impl rule__PerspectiveSashContainer__Group__6 )
+            // InternalPerspectiveDsl.g:5018:2: rule__PerspectiveSashContainer__Group__5__Impl rule__PerspectiveSashContainer__Group__6
             {
             pushFollow(FOLLOW_13);
             rule__PerspectiveSashContainer__Group__5__Impl();
@@ -17879,22 +18109,22 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group__5__Impl"
-    // InternalPerspectiveDsl.g:4963:1: rule__PerspectiveSashContainer__Group__5__Impl : ( ( rule__PerspectiveSashContainer__ElementsAssignment_5 )* ) ;
+    // InternalPerspectiveDsl.g:5025:1: rule__PerspectiveSashContainer__Group__5__Impl : ( ( rule__PerspectiveSashContainer__ElementsAssignment_5 )* ) ;
     public final void rule__PerspectiveSashContainer__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4967:1: ( ( ( rule__PerspectiveSashContainer__ElementsAssignment_5 )* ) )
-            // InternalPerspectiveDsl.g:4968:1: ( ( rule__PerspectiveSashContainer__ElementsAssignment_5 )* )
+            // InternalPerspectiveDsl.g:5029:1: ( ( ( rule__PerspectiveSashContainer__ElementsAssignment_5 )* ) )
+            // InternalPerspectiveDsl.g:5030:1: ( ( rule__PerspectiveSashContainer__ElementsAssignment_5 )* )
             {
-            // InternalPerspectiveDsl.g:4968:1: ( ( rule__PerspectiveSashContainer__ElementsAssignment_5 )* )
-            // InternalPerspectiveDsl.g:4969:2: ( rule__PerspectiveSashContainer__ElementsAssignment_5 )*
+            // InternalPerspectiveDsl.g:5030:1: ( ( rule__PerspectiveSashContainer__ElementsAssignment_5 )* )
+            // InternalPerspectiveDsl.g:5031:2: ( rule__PerspectiveSashContainer__ElementsAssignment_5 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getElementsAssignment_5()); 
             }
-            // InternalPerspectiveDsl.g:4970:2: ( rule__PerspectiveSashContainer__ElementsAssignment_5 )*
+            // InternalPerspectiveDsl.g:5032:2: ( rule__PerspectiveSashContainer__ElementsAssignment_5 )*
             loop56:
             do {
                 int alt56=2;
@@ -17907,7 +18137,7 @@
 
                 switch (alt56) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:4970:3: rule__PerspectiveSashContainer__ElementsAssignment_5
+            	    // InternalPerspectiveDsl.g:5032:3: rule__PerspectiveSashContainer__ElementsAssignment_5
             	    {
             	    pushFollow(FOLLOW_14);
             	    rule__PerspectiveSashContainer__ElementsAssignment_5();
@@ -17948,14 +18178,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group__6"
-    // InternalPerspectiveDsl.g:4978:1: rule__PerspectiveSashContainer__Group__6 : rule__PerspectiveSashContainer__Group__6__Impl ;
+    // InternalPerspectiveDsl.g:5040:1: rule__PerspectiveSashContainer__Group__6 : rule__PerspectiveSashContainer__Group__6__Impl ;
     public final void rule__PerspectiveSashContainer__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4982:1: ( rule__PerspectiveSashContainer__Group__6__Impl )
-            // InternalPerspectiveDsl.g:4983:2: rule__PerspectiveSashContainer__Group__6__Impl
+            // InternalPerspectiveDsl.g:5044:1: ( rule__PerspectiveSashContainer__Group__6__Impl )
+            // InternalPerspectiveDsl.g:5045:2: rule__PerspectiveSashContainer__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSashContainer__Group__6__Impl();
@@ -17981,17 +18211,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group__6__Impl"
-    // InternalPerspectiveDsl.g:4989:1: rule__PerspectiveSashContainer__Group__6__Impl : ( '}' ) ;
+    // InternalPerspectiveDsl.g:5051:1: rule__PerspectiveSashContainer__Group__6__Impl : ( '}' ) ;
     public final void rule__PerspectiveSashContainer__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4993:1: ( ( '}' ) )
-            // InternalPerspectiveDsl.g:4994:1: ( '}' )
+            // InternalPerspectiveDsl.g:5055:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:5056:1: ( '}' )
             {
-            // InternalPerspectiveDsl.g:4994:1: ( '}' )
-            // InternalPerspectiveDsl.g:4995:2: '}'
+            // InternalPerspectiveDsl.g:5056:1: ( '}' )
+            // InternalPerspectiveDsl.g:5057:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getRightCurlyBracketKeyword_6()); 
@@ -18022,14 +18252,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_0__0"
-    // InternalPerspectiveDsl.g:5005:1: rule__PerspectiveSashContainer__Group_3_0__0 : rule__PerspectiveSashContainer__Group_3_0__0__Impl rule__PerspectiveSashContainer__Group_3_0__1 ;
+    // InternalPerspectiveDsl.g:5067:1: rule__PerspectiveSashContainer__Group_3_0__0 : rule__PerspectiveSashContainer__Group_3_0__0__Impl rule__PerspectiveSashContainer__Group_3_0__1 ;
     public final void rule__PerspectiveSashContainer__Group_3_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5009:1: ( rule__PerspectiveSashContainer__Group_3_0__0__Impl rule__PerspectiveSashContainer__Group_3_0__1 )
-            // InternalPerspectiveDsl.g:5010:2: rule__PerspectiveSashContainer__Group_3_0__0__Impl rule__PerspectiveSashContainer__Group_3_0__1
+            // InternalPerspectiveDsl.g:5071:1: ( rule__PerspectiveSashContainer__Group_3_0__0__Impl rule__PerspectiveSashContainer__Group_3_0__1 )
+            // InternalPerspectiveDsl.g:5072:2: rule__PerspectiveSashContainer__Group_3_0__0__Impl rule__PerspectiveSashContainer__Group_3_0__1
             {
             pushFollow(FOLLOW_19);
             rule__PerspectiveSashContainer__Group_3_0__0__Impl();
@@ -18060,17 +18290,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_0__0__Impl"
-    // InternalPerspectiveDsl.g:5017:1: rule__PerspectiveSashContainer__Group_3_0__0__Impl : ( 'orientation' ) ;
+    // InternalPerspectiveDsl.g:5079:1: rule__PerspectiveSashContainer__Group_3_0__0__Impl : ( 'orientation' ) ;
     public final void rule__PerspectiveSashContainer__Group_3_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5021:1: ( ( 'orientation' ) )
-            // InternalPerspectiveDsl.g:5022:1: ( 'orientation' )
+            // InternalPerspectiveDsl.g:5083:1: ( ( 'orientation' ) )
+            // InternalPerspectiveDsl.g:5084:1: ( 'orientation' )
             {
-            // InternalPerspectiveDsl.g:5022:1: ( 'orientation' )
-            // InternalPerspectiveDsl.g:5023:2: 'orientation'
+            // InternalPerspectiveDsl.g:5084:1: ( 'orientation' )
+            // InternalPerspectiveDsl.g:5085:2: 'orientation'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getOrientationKeyword_3_0_0()); 
@@ -18101,14 +18331,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_0__1"
-    // InternalPerspectiveDsl.g:5032:1: rule__PerspectiveSashContainer__Group_3_0__1 : rule__PerspectiveSashContainer__Group_3_0__1__Impl ;
+    // InternalPerspectiveDsl.g:5094:1: rule__PerspectiveSashContainer__Group_3_0__1 : rule__PerspectiveSashContainer__Group_3_0__1__Impl ;
     public final void rule__PerspectiveSashContainer__Group_3_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5036:1: ( rule__PerspectiveSashContainer__Group_3_0__1__Impl )
-            // InternalPerspectiveDsl.g:5037:2: rule__PerspectiveSashContainer__Group_3_0__1__Impl
+            // InternalPerspectiveDsl.g:5098:1: ( rule__PerspectiveSashContainer__Group_3_0__1__Impl )
+            // InternalPerspectiveDsl.g:5099:2: rule__PerspectiveSashContainer__Group_3_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSashContainer__Group_3_0__1__Impl();
@@ -18134,23 +18364,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_0__1__Impl"
-    // InternalPerspectiveDsl.g:5043:1: rule__PerspectiveSashContainer__Group_3_0__1__Impl : ( ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:5105:1: rule__PerspectiveSashContainer__Group_3_0__1__Impl : ( ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 ) ) ;
     public final void rule__PerspectiveSashContainer__Group_3_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5047:1: ( ( ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 ) ) )
-            // InternalPerspectiveDsl.g:5048:1: ( ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:5109:1: ( ( ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 ) ) )
+            // InternalPerspectiveDsl.g:5110:1: ( ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:5048:1: ( ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 ) )
-            // InternalPerspectiveDsl.g:5049:2: ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:5110:1: ( ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:5111:2: ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getOrientationAssignment_3_0_1()); 
             }
-            // InternalPerspectiveDsl.g:5050:2: ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 )
-            // InternalPerspectiveDsl.g:5050:3: rule__PerspectiveSashContainer__OrientationAssignment_3_0_1
+            // InternalPerspectiveDsl.g:5112:2: ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:5112:3: rule__PerspectiveSashContainer__OrientationAssignment_3_0_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSashContainer__OrientationAssignment_3_0_1();
@@ -18185,14 +18415,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_1__0"
-    // InternalPerspectiveDsl.g:5059:1: rule__PerspectiveSashContainer__Group_3_1__0 : rule__PerspectiveSashContainer__Group_3_1__0__Impl rule__PerspectiveSashContainer__Group_3_1__1 ;
+    // InternalPerspectiveDsl.g:5121:1: rule__PerspectiveSashContainer__Group_3_1__0 : rule__PerspectiveSashContainer__Group_3_1__0__Impl rule__PerspectiveSashContainer__Group_3_1__1 ;
     public final void rule__PerspectiveSashContainer__Group_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5063:1: ( rule__PerspectiveSashContainer__Group_3_1__0__Impl rule__PerspectiveSashContainer__Group_3_1__1 )
-            // InternalPerspectiveDsl.g:5064:2: rule__PerspectiveSashContainer__Group_3_1__0__Impl rule__PerspectiveSashContainer__Group_3_1__1
+            // InternalPerspectiveDsl.g:5125:1: ( rule__PerspectiveSashContainer__Group_3_1__0__Impl rule__PerspectiveSashContainer__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:5126:2: rule__PerspectiveSashContainer__Group_3_1__0__Impl rule__PerspectiveSashContainer__Group_3_1__1
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveSashContainer__Group_3_1__0__Impl();
@@ -18223,17 +18453,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_1__0__Impl"
-    // InternalPerspectiveDsl.g:5071:1: rule__PerspectiveSashContainer__Group_3_1__0__Impl : ( 'selectedElement' ) ;
+    // InternalPerspectiveDsl.g:5133:1: rule__PerspectiveSashContainer__Group_3_1__0__Impl : ( 'selectedElement' ) ;
     public final void rule__PerspectiveSashContainer__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5075:1: ( ( 'selectedElement' ) )
-            // InternalPerspectiveDsl.g:5076:1: ( 'selectedElement' )
+            // InternalPerspectiveDsl.g:5137:1: ( ( 'selectedElement' ) )
+            // InternalPerspectiveDsl.g:5138:1: ( 'selectedElement' )
             {
-            // InternalPerspectiveDsl.g:5076:1: ( 'selectedElement' )
-            // InternalPerspectiveDsl.g:5077:2: 'selectedElement'
+            // InternalPerspectiveDsl.g:5138:1: ( 'selectedElement' )
+            // InternalPerspectiveDsl.g:5139:2: 'selectedElement'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementKeyword_3_1_0()); 
@@ -18264,14 +18494,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_1__1"
-    // InternalPerspectiveDsl.g:5086:1: rule__PerspectiveSashContainer__Group_3_1__1 : rule__PerspectiveSashContainer__Group_3_1__1__Impl ;
+    // InternalPerspectiveDsl.g:5148:1: rule__PerspectiveSashContainer__Group_3_1__1 : rule__PerspectiveSashContainer__Group_3_1__1__Impl ;
     public final void rule__PerspectiveSashContainer__Group_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5090:1: ( rule__PerspectiveSashContainer__Group_3_1__1__Impl )
-            // InternalPerspectiveDsl.g:5091:2: rule__PerspectiveSashContainer__Group_3_1__1__Impl
+            // InternalPerspectiveDsl.g:5152:1: ( rule__PerspectiveSashContainer__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:5153:2: rule__PerspectiveSashContainer__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSashContainer__Group_3_1__1__Impl();
@@ -18297,23 +18527,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_1__1__Impl"
-    // InternalPerspectiveDsl.g:5097:1: rule__PerspectiveSashContainer__Group_3_1__1__Impl : ( ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:5159:1: rule__PerspectiveSashContainer__Group_3_1__1__Impl : ( ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 ) ) ;
     public final void rule__PerspectiveSashContainer__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5101:1: ( ( ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 ) ) )
-            // InternalPerspectiveDsl.g:5102:1: ( ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:5163:1: ( ( ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:5164:1: ( ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:5102:1: ( ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 ) )
-            // InternalPerspectiveDsl.g:5103:2: ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:5164:1: ( ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:5165:2: ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementAssignment_3_1_1()); 
             }
-            // InternalPerspectiveDsl.g:5104:2: ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 )
-            // InternalPerspectiveDsl.g:5104:3: rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1
+            // InternalPerspectiveDsl.g:5166:2: ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:5166:3: rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1();
@@ -18348,14 +18578,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_2__0"
-    // InternalPerspectiveDsl.g:5113:1: rule__PerspectiveSashContainer__Group_3_2__0 : rule__PerspectiveSashContainer__Group_3_2__0__Impl rule__PerspectiveSashContainer__Group_3_2__1 ;
+    // InternalPerspectiveDsl.g:5175:1: rule__PerspectiveSashContainer__Group_3_2__0 : rule__PerspectiveSashContainer__Group_3_2__0__Impl rule__PerspectiveSashContainer__Group_3_2__1 ;
     public final void rule__PerspectiveSashContainer__Group_3_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5117:1: ( rule__PerspectiveSashContainer__Group_3_2__0__Impl rule__PerspectiveSashContainer__Group_3_2__1 )
-            // InternalPerspectiveDsl.g:5118:2: rule__PerspectiveSashContainer__Group_3_2__0__Impl rule__PerspectiveSashContainer__Group_3_2__1
+            // InternalPerspectiveDsl.g:5179:1: ( rule__PerspectiveSashContainer__Group_3_2__0__Impl rule__PerspectiveSashContainer__Group_3_2__1 )
+            // InternalPerspectiveDsl.g:5180:2: rule__PerspectiveSashContainer__Group_3_2__0__Impl rule__PerspectiveSashContainer__Group_3_2__1
             {
             pushFollow(FOLLOW_15);
             rule__PerspectiveSashContainer__Group_3_2__0__Impl();
@@ -18386,17 +18616,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_2__0__Impl"
-    // InternalPerspectiveDsl.g:5125:1: rule__PerspectiveSashContainer__Group_3_2__0__Impl : ( 'spaceVolume' ) ;
+    // InternalPerspectiveDsl.g:5187:1: rule__PerspectiveSashContainer__Group_3_2__0__Impl : ( 'spaceVolume' ) ;
     public final void rule__PerspectiveSashContainer__Group_3_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5129:1: ( ( 'spaceVolume' ) )
-            // InternalPerspectiveDsl.g:5130:1: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:5191:1: ( ( 'spaceVolume' ) )
+            // InternalPerspectiveDsl.g:5192:1: ( 'spaceVolume' )
             {
-            // InternalPerspectiveDsl.g:5130:1: ( 'spaceVolume' )
-            // InternalPerspectiveDsl.g:5131:2: 'spaceVolume'
+            // InternalPerspectiveDsl.g:5192:1: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:5193:2: 'spaceVolume'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getSpaceVolumeKeyword_3_2_0()); 
@@ -18427,14 +18657,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_2__1"
-    // InternalPerspectiveDsl.g:5140:1: rule__PerspectiveSashContainer__Group_3_2__1 : rule__PerspectiveSashContainer__Group_3_2__1__Impl ;
+    // InternalPerspectiveDsl.g:5202:1: rule__PerspectiveSashContainer__Group_3_2__1 : rule__PerspectiveSashContainer__Group_3_2__1__Impl ;
     public final void rule__PerspectiveSashContainer__Group_3_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5144:1: ( rule__PerspectiveSashContainer__Group_3_2__1__Impl )
-            // InternalPerspectiveDsl.g:5145:2: rule__PerspectiveSashContainer__Group_3_2__1__Impl
+            // InternalPerspectiveDsl.g:5206:1: ( rule__PerspectiveSashContainer__Group_3_2__1__Impl )
+            // InternalPerspectiveDsl.g:5207:2: rule__PerspectiveSashContainer__Group_3_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSashContainer__Group_3_2__1__Impl();
@@ -18460,23 +18690,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_2__1__Impl"
-    // InternalPerspectiveDsl.g:5151:1: rule__PerspectiveSashContainer__Group_3_2__1__Impl : ( ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:5213:1: rule__PerspectiveSashContainer__Group_3_2__1__Impl : ( ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 ) ) ;
     public final void rule__PerspectiveSashContainer__Group_3_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5155:1: ( ( ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 ) ) )
-            // InternalPerspectiveDsl.g:5156:1: ( ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:5217:1: ( ( ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 ) ) )
+            // InternalPerspectiveDsl.g:5218:1: ( ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:5156:1: ( ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 ) )
-            // InternalPerspectiveDsl.g:5157:2: ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:5218:1: ( ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:5219:2: ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getContainerDataAssignment_3_2_1()); 
             }
-            // InternalPerspectiveDsl.g:5158:2: ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 )
-            // InternalPerspectiveDsl.g:5158:3: rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1
+            // InternalPerspectiveDsl.g:5220:2: ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:5220:3: rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1();
@@ -18511,14 +18741,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_3__0"
-    // InternalPerspectiveDsl.g:5167:1: rule__PerspectiveSashContainer__Group_3_3__0 : rule__PerspectiveSashContainer__Group_3_3__0__Impl rule__PerspectiveSashContainer__Group_3_3__1 ;
+    // InternalPerspectiveDsl.g:5229:1: rule__PerspectiveSashContainer__Group_3_3__0 : rule__PerspectiveSashContainer__Group_3_3__0__Impl rule__PerspectiveSashContainer__Group_3_3__1 ;
     public final void rule__PerspectiveSashContainer__Group_3_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5171:1: ( rule__PerspectiveSashContainer__Group_3_3__0__Impl rule__PerspectiveSashContainer__Group_3_3__1 )
-            // InternalPerspectiveDsl.g:5172:2: rule__PerspectiveSashContainer__Group_3_3__0__Impl rule__PerspectiveSashContainer__Group_3_3__1
+            // InternalPerspectiveDsl.g:5233:1: ( rule__PerspectiveSashContainer__Group_3_3__0__Impl rule__PerspectiveSashContainer__Group_3_3__1 )
+            // InternalPerspectiveDsl.g:5234:2: rule__PerspectiveSashContainer__Group_3_3__0__Impl rule__PerspectiveSashContainer__Group_3_3__1
             {
             pushFollow(FOLLOW_15);
             rule__PerspectiveSashContainer__Group_3_3__0__Impl();
@@ -18549,17 +18779,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_3__0__Impl"
-    // InternalPerspectiveDsl.g:5179:1: rule__PerspectiveSashContainer__Group_3_3__0__Impl : ( 'accessibility' ) ;
+    // InternalPerspectiveDsl.g:5241:1: rule__PerspectiveSashContainer__Group_3_3__0__Impl : ( 'accessibility' ) ;
     public final void rule__PerspectiveSashContainer__Group_3_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5183:1: ( ( 'accessibility' ) )
-            // InternalPerspectiveDsl.g:5184:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:5245:1: ( ( 'accessibility' ) )
+            // InternalPerspectiveDsl.g:5246:1: ( 'accessibility' )
             {
-            // InternalPerspectiveDsl.g:5184:1: ( 'accessibility' )
-            // InternalPerspectiveDsl.g:5185:2: 'accessibility'
+            // InternalPerspectiveDsl.g:5246:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:5247:2: 'accessibility'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityKeyword_3_3_0()); 
@@ -18590,14 +18820,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_3__1"
-    // InternalPerspectiveDsl.g:5194:1: rule__PerspectiveSashContainer__Group_3_3__1 : rule__PerspectiveSashContainer__Group_3_3__1__Impl ;
+    // InternalPerspectiveDsl.g:5256:1: rule__PerspectiveSashContainer__Group_3_3__1 : rule__PerspectiveSashContainer__Group_3_3__1__Impl ;
     public final void rule__PerspectiveSashContainer__Group_3_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5198:1: ( rule__PerspectiveSashContainer__Group_3_3__1__Impl )
-            // InternalPerspectiveDsl.g:5199:2: rule__PerspectiveSashContainer__Group_3_3__1__Impl
+            // InternalPerspectiveDsl.g:5260:1: ( rule__PerspectiveSashContainer__Group_3_3__1__Impl )
+            // InternalPerspectiveDsl.g:5261:2: rule__PerspectiveSashContainer__Group_3_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSashContainer__Group_3_3__1__Impl();
@@ -18623,23 +18853,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__Group_3_3__1__Impl"
-    // InternalPerspectiveDsl.g:5205:1: rule__PerspectiveSashContainer__Group_3_3__1__Impl : ( ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 ) ) ;
+    // InternalPerspectiveDsl.g:5267:1: rule__PerspectiveSashContainer__Group_3_3__1__Impl : ( ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 ) ) ;
     public final void rule__PerspectiveSashContainer__Group_3_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5209:1: ( ( ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 ) ) )
-            // InternalPerspectiveDsl.g:5210:1: ( ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 ) )
+            // InternalPerspectiveDsl.g:5271:1: ( ( ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 ) ) )
+            // InternalPerspectiveDsl.g:5272:1: ( ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 ) )
             {
-            // InternalPerspectiveDsl.g:5210:1: ( ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 ) )
-            // InternalPerspectiveDsl.g:5211:2: ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 )
+            // InternalPerspectiveDsl.g:5272:1: ( ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 ) )
+            // InternalPerspectiveDsl.g:5273:2: ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseAssignment_3_3_1()); 
             }
-            // InternalPerspectiveDsl.g:5212:2: ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 )
-            // InternalPerspectiveDsl.g:5212:3: rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1
+            // InternalPerspectiveDsl.g:5274:2: ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 )
+            // InternalPerspectiveDsl.g:5274:3: rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1();
@@ -18674,14 +18904,14 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group__0"
-    // InternalPerspectiveDsl.g:5221:1: rule__PerspectivePartStack__Group__0 : rule__PerspectivePartStack__Group__0__Impl rule__PerspectivePartStack__Group__1 ;
+    // InternalPerspectiveDsl.g:5283:1: rule__PerspectivePartStack__Group__0 : rule__PerspectivePartStack__Group__0__Impl rule__PerspectivePartStack__Group__1 ;
     public final void rule__PerspectivePartStack__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5225:1: ( rule__PerspectivePartStack__Group__0__Impl rule__PerspectivePartStack__Group__1 )
-            // InternalPerspectiveDsl.g:5226:2: rule__PerspectivePartStack__Group__0__Impl rule__PerspectivePartStack__Group__1
+            // InternalPerspectiveDsl.g:5287:1: ( rule__PerspectivePartStack__Group__0__Impl rule__PerspectivePartStack__Group__1 )
+            // InternalPerspectiveDsl.g:5288:2: rule__PerspectivePartStack__Group__0__Impl rule__PerspectivePartStack__Group__1
             {
             pushFollow(FOLLOW_20);
             rule__PerspectivePartStack__Group__0__Impl();
@@ -18712,23 +18942,23 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group__0__Impl"
-    // InternalPerspectiveDsl.g:5233:1: rule__PerspectivePartStack__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:5295:1: rule__PerspectivePartStack__Group__0__Impl : ( () ) ;
     public final void rule__PerspectivePartStack__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5237:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:5238:1: ( () )
+            // InternalPerspectiveDsl.g:5299:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:5300:1: ( () )
             {
-            // InternalPerspectiveDsl.g:5238:1: ( () )
-            // InternalPerspectiveDsl.g:5239:2: ()
+            // InternalPerspectiveDsl.g:5300:1: ( () )
+            // InternalPerspectiveDsl.g:5301:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getPerspectivePartStackAction_0()); 
             }
-            // InternalPerspectiveDsl.g:5240:2: ()
-            // InternalPerspectiveDsl.g:5240:3: 
+            // InternalPerspectiveDsl.g:5302:2: ()
+            // InternalPerspectiveDsl.g:5302:3: 
             {
             }
 
@@ -18753,14 +18983,14 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group__1"
-    // InternalPerspectiveDsl.g:5248:1: rule__PerspectivePartStack__Group__1 : rule__PerspectivePartStack__Group__1__Impl rule__PerspectivePartStack__Group__2 ;
+    // InternalPerspectiveDsl.g:5310:1: rule__PerspectivePartStack__Group__1 : rule__PerspectivePartStack__Group__1__Impl rule__PerspectivePartStack__Group__2 ;
     public final void rule__PerspectivePartStack__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5252:1: ( rule__PerspectivePartStack__Group__1__Impl rule__PerspectivePartStack__Group__2 )
-            // InternalPerspectiveDsl.g:5253:2: rule__PerspectivePartStack__Group__1__Impl rule__PerspectivePartStack__Group__2
+            // InternalPerspectiveDsl.g:5314:1: ( rule__PerspectivePartStack__Group__1__Impl rule__PerspectivePartStack__Group__2 )
+            // InternalPerspectiveDsl.g:5315:2: rule__PerspectivePartStack__Group__1__Impl rule__PerspectivePartStack__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectivePartStack__Group__1__Impl();
@@ -18791,17 +19021,17 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group__1__Impl"
-    // InternalPerspectiveDsl.g:5260:1: rule__PerspectivePartStack__Group__1__Impl : ( 'partStack' ) ;
+    // InternalPerspectiveDsl.g:5322:1: rule__PerspectivePartStack__Group__1__Impl : ( 'partStack' ) ;
     public final void rule__PerspectivePartStack__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5264:1: ( ( 'partStack' ) )
-            // InternalPerspectiveDsl.g:5265:1: ( 'partStack' )
+            // InternalPerspectiveDsl.g:5326:1: ( ( 'partStack' ) )
+            // InternalPerspectiveDsl.g:5327:1: ( 'partStack' )
             {
-            // InternalPerspectiveDsl.g:5265:1: ( 'partStack' )
-            // InternalPerspectiveDsl.g:5266:2: 'partStack'
+            // InternalPerspectiveDsl.g:5327:1: ( 'partStack' )
+            // InternalPerspectiveDsl.g:5328:2: 'partStack'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getPartStackKeyword_1()); 
@@ -18832,14 +19062,14 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group__2"
-    // InternalPerspectiveDsl.g:5275:1: rule__PerspectivePartStack__Group__2 : rule__PerspectivePartStack__Group__2__Impl rule__PerspectivePartStack__Group__3 ;
+    // InternalPerspectiveDsl.g:5337:1: rule__PerspectivePartStack__Group__2 : rule__PerspectivePartStack__Group__2__Impl rule__PerspectivePartStack__Group__3 ;
     public final void rule__PerspectivePartStack__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5279:1: ( rule__PerspectivePartStack__Group__2__Impl rule__PerspectivePartStack__Group__3 )
-            // InternalPerspectiveDsl.g:5280:2: rule__PerspectivePartStack__Group__2__Impl rule__PerspectivePartStack__Group__3
+            // InternalPerspectiveDsl.g:5341:1: ( rule__PerspectivePartStack__Group__2__Impl rule__PerspectivePartStack__Group__3 )
+            // InternalPerspectiveDsl.g:5342:2: rule__PerspectivePartStack__Group__2__Impl rule__PerspectivePartStack__Group__3
             {
             pushFollow(FOLLOW_21);
             rule__PerspectivePartStack__Group__2__Impl();
@@ -18870,23 +19100,23 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group__2__Impl"
-    // InternalPerspectiveDsl.g:5287:1: rule__PerspectivePartStack__Group__2__Impl : ( ( rule__PerspectivePartStack__ElementIdAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:5349:1: rule__PerspectivePartStack__Group__2__Impl : ( ( rule__PerspectivePartStack__ElementIdAssignment_2 ) ) ;
     public final void rule__PerspectivePartStack__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5291:1: ( ( ( rule__PerspectivePartStack__ElementIdAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:5292:1: ( ( rule__PerspectivePartStack__ElementIdAssignment_2 ) )
+            // InternalPerspectiveDsl.g:5353:1: ( ( ( rule__PerspectivePartStack__ElementIdAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:5354:1: ( ( rule__PerspectivePartStack__ElementIdAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:5292:1: ( ( rule__PerspectivePartStack__ElementIdAssignment_2 ) )
-            // InternalPerspectiveDsl.g:5293:2: ( rule__PerspectivePartStack__ElementIdAssignment_2 )
+            // InternalPerspectiveDsl.g:5354:1: ( ( rule__PerspectivePartStack__ElementIdAssignment_2 ) )
+            // InternalPerspectiveDsl.g:5355:2: ( rule__PerspectivePartStack__ElementIdAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getElementIdAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:5294:2: ( rule__PerspectivePartStack__ElementIdAssignment_2 )
-            // InternalPerspectiveDsl.g:5294:3: rule__PerspectivePartStack__ElementIdAssignment_2
+            // InternalPerspectiveDsl.g:5356:2: ( rule__PerspectivePartStack__ElementIdAssignment_2 )
+            // InternalPerspectiveDsl.g:5356:3: rule__PerspectivePartStack__ElementIdAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePartStack__ElementIdAssignment_2();
@@ -18921,14 +19151,14 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group__3"
-    // InternalPerspectiveDsl.g:5302:1: rule__PerspectivePartStack__Group__3 : rule__PerspectivePartStack__Group__3__Impl rule__PerspectivePartStack__Group__4 ;
+    // InternalPerspectiveDsl.g:5364:1: rule__PerspectivePartStack__Group__3 : rule__PerspectivePartStack__Group__3__Impl rule__PerspectivePartStack__Group__4 ;
     public final void rule__PerspectivePartStack__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5306:1: ( rule__PerspectivePartStack__Group__3__Impl rule__PerspectivePartStack__Group__4 )
-            // InternalPerspectiveDsl.g:5307:2: rule__PerspectivePartStack__Group__3__Impl rule__PerspectivePartStack__Group__4
+            // InternalPerspectiveDsl.g:5368:1: ( rule__PerspectivePartStack__Group__3__Impl rule__PerspectivePartStack__Group__4 )
+            // InternalPerspectiveDsl.g:5369:2: rule__PerspectivePartStack__Group__3__Impl rule__PerspectivePartStack__Group__4
             {
             pushFollow(FOLLOW_8);
             rule__PerspectivePartStack__Group__3__Impl();
@@ -18959,23 +19189,23 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group__3__Impl"
-    // InternalPerspectiveDsl.g:5314:1: rule__PerspectivePartStack__Group__3__Impl : ( ( rule__PerspectivePartStack__UnorderedGroup_3 ) ) ;
+    // InternalPerspectiveDsl.g:5376:1: rule__PerspectivePartStack__Group__3__Impl : ( ( rule__PerspectivePartStack__UnorderedGroup_3 ) ) ;
     public final void rule__PerspectivePartStack__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5318:1: ( ( ( rule__PerspectivePartStack__UnorderedGroup_3 ) ) )
-            // InternalPerspectiveDsl.g:5319:1: ( ( rule__PerspectivePartStack__UnorderedGroup_3 ) )
+            // InternalPerspectiveDsl.g:5380:1: ( ( ( rule__PerspectivePartStack__UnorderedGroup_3 ) ) )
+            // InternalPerspectiveDsl.g:5381:1: ( ( rule__PerspectivePartStack__UnorderedGroup_3 ) )
             {
-            // InternalPerspectiveDsl.g:5319:1: ( ( rule__PerspectivePartStack__UnorderedGroup_3 ) )
-            // InternalPerspectiveDsl.g:5320:2: ( rule__PerspectivePartStack__UnorderedGroup_3 )
+            // InternalPerspectiveDsl.g:5381:1: ( ( rule__PerspectivePartStack__UnorderedGroup_3 ) )
+            // InternalPerspectiveDsl.g:5382:2: ( rule__PerspectivePartStack__UnorderedGroup_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:5321:2: ( rule__PerspectivePartStack__UnorderedGroup_3 )
-            // InternalPerspectiveDsl.g:5321:3: rule__PerspectivePartStack__UnorderedGroup_3
+            // InternalPerspectiveDsl.g:5383:2: ( rule__PerspectivePartStack__UnorderedGroup_3 )
+            // InternalPerspectiveDsl.g:5383:3: rule__PerspectivePartStack__UnorderedGroup_3
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePartStack__UnorderedGroup_3();
@@ -19010,14 +19240,14 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group__4"
-    // InternalPerspectiveDsl.g:5329:1: rule__PerspectivePartStack__Group__4 : rule__PerspectivePartStack__Group__4__Impl rule__PerspectivePartStack__Group__5 ;
+    // InternalPerspectiveDsl.g:5391:1: rule__PerspectivePartStack__Group__4 : rule__PerspectivePartStack__Group__4__Impl rule__PerspectivePartStack__Group__5 ;
     public final void rule__PerspectivePartStack__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5333:1: ( rule__PerspectivePartStack__Group__4__Impl rule__PerspectivePartStack__Group__5 )
-            // InternalPerspectiveDsl.g:5334:2: rule__PerspectivePartStack__Group__4__Impl rule__PerspectivePartStack__Group__5
+            // InternalPerspectiveDsl.g:5395:1: ( rule__PerspectivePartStack__Group__4__Impl rule__PerspectivePartStack__Group__5 )
+            // InternalPerspectiveDsl.g:5396:2: rule__PerspectivePartStack__Group__4__Impl rule__PerspectivePartStack__Group__5
             {
             pushFollow(FOLLOW_13);
             rule__PerspectivePartStack__Group__4__Impl();
@@ -19048,17 +19278,17 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group__4__Impl"
-    // InternalPerspectiveDsl.g:5341:1: rule__PerspectivePartStack__Group__4__Impl : ( '{' ) ;
+    // InternalPerspectiveDsl.g:5403:1: rule__PerspectivePartStack__Group__4__Impl : ( '{' ) ;
     public final void rule__PerspectivePartStack__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5345:1: ( ( '{' ) )
-            // InternalPerspectiveDsl.g:5346:1: ( '{' )
+            // InternalPerspectiveDsl.g:5407:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:5408:1: ( '{' )
             {
-            // InternalPerspectiveDsl.g:5346:1: ( '{' )
-            // InternalPerspectiveDsl.g:5347:2: '{'
+            // InternalPerspectiveDsl.g:5408:1: ( '{' )
+            // InternalPerspectiveDsl.g:5409:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getLeftCurlyBracketKeyword_4()); 
@@ -19089,14 +19319,14 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group__5"
-    // InternalPerspectiveDsl.g:5356:1: rule__PerspectivePartStack__Group__5 : rule__PerspectivePartStack__Group__5__Impl rule__PerspectivePartStack__Group__6 ;
+    // InternalPerspectiveDsl.g:5418:1: rule__PerspectivePartStack__Group__5 : rule__PerspectivePartStack__Group__5__Impl rule__PerspectivePartStack__Group__6 ;
     public final void rule__PerspectivePartStack__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5360:1: ( rule__PerspectivePartStack__Group__5__Impl rule__PerspectivePartStack__Group__6 )
-            // InternalPerspectiveDsl.g:5361:2: rule__PerspectivePartStack__Group__5__Impl rule__PerspectivePartStack__Group__6
+            // InternalPerspectiveDsl.g:5422:1: ( rule__PerspectivePartStack__Group__5__Impl rule__PerspectivePartStack__Group__6 )
+            // InternalPerspectiveDsl.g:5423:2: rule__PerspectivePartStack__Group__5__Impl rule__PerspectivePartStack__Group__6
             {
             pushFollow(FOLLOW_13);
             rule__PerspectivePartStack__Group__5__Impl();
@@ -19127,22 +19357,22 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group__5__Impl"
-    // InternalPerspectiveDsl.g:5368:1: rule__PerspectivePartStack__Group__5__Impl : ( ( rule__PerspectivePartStack__ElementsAssignment_5 )* ) ;
+    // InternalPerspectiveDsl.g:5430:1: rule__PerspectivePartStack__Group__5__Impl : ( ( rule__PerspectivePartStack__ElementsAssignment_5 )* ) ;
     public final void rule__PerspectivePartStack__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5372:1: ( ( ( rule__PerspectivePartStack__ElementsAssignment_5 )* ) )
-            // InternalPerspectiveDsl.g:5373:1: ( ( rule__PerspectivePartStack__ElementsAssignment_5 )* )
+            // InternalPerspectiveDsl.g:5434:1: ( ( ( rule__PerspectivePartStack__ElementsAssignment_5 )* ) )
+            // InternalPerspectiveDsl.g:5435:1: ( ( rule__PerspectivePartStack__ElementsAssignment_5 )* )
             {
-            // InternalPerspectiveDsl.g:5373:1: ( ( rule__PerspectivePartStack__ElementsAssignment_5 )* )
-            // InternalPerspectiveDsl.g:5374:2: ( rule__PerspectivePartStack__ElementsAssignment_5 )*
+            // InternalPerspectiveDsl.g:5435:1: ( ( rule__PerspectivePartStack__ElementsAssignment_5 )* )
+            // InternalPerspectiveDsl.g:5436:2: ( rule__PerspectivePartStack__ElementsAssignment_5 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getElementsAssignment_5()); 
             }
-            // InternalPerspectiveDsl.g:5375:2: ( rule__PerspectivePartStack__ElementsAssignment_5 )*
+            // InternalPerspectiveDsl.g:5437:2: ( rule__PerspectivePartStack__ElementsAssignment_5 )*
             loop57:
             do {
                 int alt57=2;
@@ -19155,7 +19385,7 @@
 
                 switch (alt57) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:5375:3: rule__PerspectivePartStack__ElementsAssignment_5
+            	    // InternalPerspectiveDsl.g:5437:3: rule__PerspectivePartStack__ElementsAssignment_5
             	    {
             	    pushFollow(FOLLOW_14);
             	    rule__PerspectivePartStack__ElementsAssignment_5();
@@ -19196,14 +19426,14 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group__6"
-    // InternalPerspectiveDsl.g:5383:1: rule__PerspectivePartStack__Group__6 : rule__PerspectivePartStack__Group__6__Impl ;
+    // InternalPerspectiveDsl.g:5445:1: rule__PerspectivePartStack__Group__6 : rule__PerspectivePartStack__Group__6__Impl ;
     public final void rule__PerspectivePartStack__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5387:1: ( rule__PerspectivePartStack__Group__6__Impl )
-            // InternalPerspectiveDsl.g:5388:2: rule__PerspectivePartStack__Group__6__Impl
+            // InternalPerspectiveDsl.g:5449:1: ( rule__PerspectivePartStack__Group__6__Impl )
+            // InternalPerspectiveDsl.g:5450:2: rule__PerspectivePartStack__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePartStack__Group__6__Impl();
@@ -19229,17 +19459,17 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group__6__Impl"
-    // InternalPerspectiveDsl.g:5394:1: rule__PerspectivePartStack__Group__6__Impl : ( '}' ) ;
+    // InternalPerspectiveDsl.g:5456:1: rule__PerspectivePartStack__Group__6__Impl : ( '}' ) ;
     public final void rule__PerspectivePartStack__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5398:1: ( ( '}' ) )
-            // InternalPerspectiveDsl.g:5399:1: ( '}' )
+            // InternalPerspectiveDsl.g:5460:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:5461:1: ( '}' )
             {
-            // InternalPerspectiveDsl.g:5399:1: ( '}' )
-            // InternalPerspectiveDsl.g:5400:2: '}'
+            // InternalPerspectiveDsl.g:5461:1: ( '}' )
+            // InternalPerspectiveDsl.g:5462:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getRightCurlyBracketKeyword_6()); 
@@ -19270,14 +19500,14 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_0__0"
-    // InternalPerspectiveDsl.g:5410:1: rule__PerspectivePartStack__Group_3_0__0 : rule__PerspectivePartStack__Group_3_0__0__Impl rule__PerspectivePartStack__Group_3_0__1 ;
+    // InternalPerspectiveDsl.g:5472:1: rule__PerspectivePartStack__Group_3_0__0 : rule__PerspectivePartStack__Group_3_0__0__Impl rule__PerspectivePartStack__Group_3_0__1 ;
     public final void rule__PerspectivePartStack__Group_3_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5414:1: ( rule__PerspectivePartStack__Group_3_0__0__Impl rule__PerspectivePartStack__Group_3_0__1 )
-            // InternalPerspectiveDsl.g:5415:2: rule__PerspectivePartStack__Group_3_0__0__Impl rule__PerspectivePartStack__Group_3_0__1
+            // InternalPerspectiveDsl.g:5476:1: ( rule__PerspectivePartStack__Group_3_0__0__Impl rule__PerspectivePartStack__Group_3_0__1 )
+            // InternalPerspectiveDsl.g:5477:2: rule__PerspectivePartStack__Group_3_0__0__Impl rule__PerspectivePartStack__Group_3_0__1
             {
             pushFollow(FOLLOW_7);
             rule__PerspectivePartStack__Group_3_0__0__Impl();
@@ -19308,17 +19538,17 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_0__0__Impl"
-    // InternalPerspectiveDsl.g:5422:1: rule__PerspectivePartStack__Group_3_0__0__Impl : ( 'selectedElement' ) ;
+    // InternalPerspectiveDsl.g:5484:1: rule__PerspectivePartStack__Group_3_0__0__Impl : ( 'selectedElement' ) ;
     public final void rule__PerspectivePartStack__Group_3_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5426:1: ( ( 'selectedElement' ) )
-            // InternalPerspectiveDsl.g:5427:1: ( 'selectedElement' )
+            // InternalPerspectiveDsl.g:5488:1: ( ( 'selectedElement' ) )
+            // InternalPerspectiveDsl.g:5489:1: ( 'selectedElement' )
             {
-            // InternalPerspectiveDsl.g:5427:1: ( 'selectedElement' )
-            // InternalPerspectiveDsl.g:5428:2: 'selectedElement'
+            // InternalPerspectiveDsl.g:5489:1: ( 'selectedElement' )
+            // InternalPerspectiveDsl.g:5490:2: 'selectedElement'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getSelectedElementKeyword_3_0_0()); 
@@ -19349,14 +19579,14 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_0__1"
-    // InternalPerspectiveDsl.g:5437:1: rule__PerspectivePartStack__Group_3_0__1 : rule__PerspectivePartStack__Group_3_0__1__Impl ;
+    // InternalPerspectiveDsl.g:5499:1: rule__PerspectivePartStack__Group_3_0__1 : rule__PerspectivePartStack__Group_3_0__1__Impl ;
     public final void rule__PerspectivePartStack__Group_3_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5441:1: ( rule__PerspectivePartStack__Group_3_0__1__Impl )
-            // InternalPerspectiveDsl.g:5442:2: rule__PerspectivePartStack__Group_3_0__1__Impl
+            // InternalPerspectiveDsl.g:5503:1: ( rule__PerspectivePartStack__Group_3_0__1__Impl )
+            // InternalPerspectiveDsl.g:5504:2: rule__PerspectivePartStack__Group_3_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePartStack__Group_3_0__1__Impl();
@@ -19382,23 +19612,23 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_0__1__Impl"
-    // InternalPerspectiveDsl.g:5448:1: rule__PerspectivePartStack__Group_3_0__1__Impl : ( ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:5510:1: rule__PerspectivePartStack__Group_3_0__1__Impl : ( ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 ) ) ;
     public final void rule__PerspectivePartStack__Group_3_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5452:1: ( ( ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 ) ) )
-            // InternalPerspectiveDsl.g:5453:1: ( ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:5514:1: ( ( ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 ) ) )
+            // InternalPerspectiveDsl.g:5515:1: ( ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:5453:1: ( ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 ) )
-            // InternalPerspectiveDsl.g:5454:2: ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:5515:1: ( ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:5516:2: ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getSelectedElementAssignment_3_0_1()); 
             }
-            // InternalPerspectiveDsl.g:5455:2: ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 )
-            // InternalPerspectiveDsl.g:5455:3: rule__PerspectivePartStack__SelectedElementAssignment_3_0_1
+            // InternalPerspectiveDsl.g:5517:2: ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:5517:3: rule__PerspectivePartStack__SelectedElementAssignment_3_0_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePartStack__SelectedElementAssignment_3_0_1();
@@ -19433,14 +19663,14 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_1__0"
-    // InternalPerspectiveDsl.g:5464:1: rule__PerspectivePartStack__Group_3_1__0 : rule__PerspectivePartStack__Group_3_1__0__Impl rule__PerspectivePartStack__Group_3_1__1 ;
+    // InternalPerspectiveDsl.g:5526:1: rule__PerspectivePartStack__Group_3_1__0 : rule__PerspectivePartStack__Group_3_1__0__Impl rule__PerspectivePartStack__Group_3_1__1 ;
     public final void rule__PerspectivePartStack__Group_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5468:1: ( rule__PerspectivePartStack__Group_3_1__0__Impl rule__PerspectivePartStack__Group_3_1__1 )
-            // InternalPerspectiveDsl.g:5469:2: rule__PerspectivePartStack__Group_3_1__0__Impl rule__PerspectivePartStack__Group_3_1__1
+            // InternalPerspectiveDsl.g:5530:1: ( rule__PerspectivePartStack__Group_3_1__0__Impl rule__PerspectivePartStack__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:5531:2: rule__PerspectivePartStack__Group_3_1__0__Impl rule__PerspectivePartStack__Group_3_1__1
             {
             pushFollow(FOLLOW_15);
             rule__PerspectivePartStack__Group_3_1__0__Impl();
@@ -19471,17 +19701,17 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_1__0__Impl"
-    // InternalPerspectiveDsl.g:5476:1: rule__PerspectivePartStack__Group_3_1__0__Impl : ( 'spaceVolume' ) ;
+    // InternalPerspectiveDsl.g:5538:1: rule__PerspectivePartStack__Group_3_1__0__Impl : ( 'spaceVolume' ) ;
     public final void rule__PerspectivePartStack__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5480:1: ( ( 'spaceVolume' ) )
-            // InternalPerspectiveDsl.g:5481:1: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:5542:1: ( ( 'spaceVolume' ) )
+            // InternalPerspectiveDsl.g:5543:1: ( 'spaceVolume' )
             {
-            // InternalPerspectiveDsl.g:5481:1: ( 'spaceVolume' )
-            // InternalPerspectiveDsl.g:5482:2: 'spaceVolume'
+            // InternalPerspectiveDsl.g:5543:1: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:5544:2: 'spaceVolume'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_1_0()); 
@@ -19512,14 +19742,14 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_1__1"
-    // InternalPerspectiveDsl.g:5491:1: rule__PerspectivePartStack__Group_3_1__1 : rule__PerspectivePartStack__Group_3_1__1__Impl ;
+    // InternalPerspectiveDsl.g:5553:1: rule__PerspectivePartStack__Group_3_1__1 : rule__PerspectivePartStack__Group_3_1__1__Impl ;
     public final void rule__PerspectivePartStack__Group_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5495:1: ( rule__PerspectivePartStack__Group_3_1__1__Impl )
-            // InternalPerspectiveDsl.g:5496:2: rule__PerspectivePartStack__Group_3_1__1__Impl
+            // InternalPerspectiveDsl.g:5557:1: ( rule__PerspectivePartStack__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:5558:2: rule__PerspectivePartStack__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePartStack__Group_3_1__1__Impl();
@@ -19545,23 +19775,23 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_1__1__Impl"
-    // InternalPerspectiveDsl.g:5502:1: rule__PerspectivePartStack__Group_3_1__1__Impl : ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:5564:1: rule__PerspectivePartStack__Group_3_1__1__Impl : ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) ) ;
     public final void rule__PerspectivePartStack__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5506:1: ( ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) ) )
-            // InternalPerspectiveDsl.g:5507:1: ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:5568:1: ( ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:5569:1: ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:5507:1: ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) )
-            // InternalPerspectiveDsl.g:5508:2: ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:5569:1: ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:5570:2: ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_1_1()); 
             }
-            // InternalPerspectiveDsl.g:5509:2: ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 )
-            // InternalPerspectiveDsl.g:5509:3: rule__PerspectivePartStack__ContainerDataAssignment_3_1_1
+            // InternalPerspectiveDsl.g:5571:2: ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:5571:3: rule__PerspectivePartStack__ContainerDataAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePartStack__ContainerDataAssignment_3_1_1();
@@ -19596,14 +19826,14 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_2__0"
-    // InternalPerspectiveDsl.g:5518:1: rule__PerspectivePartStack__Group_3_2__0 : rule__PerspectivePartStack__Group_3_2__0__Impl rule__PerspectivePartStack__Group_3_2__1 ;
+    // InternalPerspectiveDsl.g:5580:1: rule__PerspectivePartStack__Group_3_2__0 : rule__PerspectivePartStack__Group_3_2__0__Impl rule__PerspectivePartStack__Group_3_2__1 ;
     public final void rule__PerspectivePartStack__Group_3_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5522:1: ( rule__PerspectivePartStack__Group_3_2__0__Impl rule__PerspectivePartStack__Group_3_2__1 )
-            // InternalPerspectiveDsl.g:5523:2: rule__PerspectivePartStack__Group_3_2__0__Impl rule__PerspectivePartStack__Group_3_2__1
+            // InternalPerspectiveDsl.g:5584:1: ( rule__PerspectivePartStack__Group_3_2__0__Impl rule__PerspectivePartStack__Group_3_2__1 )
+            // InternalPerspectiveDsl.g:5585:2: rule__PerspectivePartStack__Group_3_2__0__Impl rule__PerspectivePartStack__Group_3_2__1
             {
             pushFollow(FOLLOW_15);
             rule__PerspectivePartStack__Group_3_2__0__Impl();
@@ -19634,17 +19864,17 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_2__0__Impl"
-    // InternalPerspectiveDsl.g:5530:1: rule__PerspectivePartStack__Group_3_2__0__Impl : ( 'accessibility' ) ;
+    // InternalPerspectiveDsl.g:5592:1: rule__PerspectivePartStack__Group_3_2__0__Impl : ( 'accessibility' ) ;
     public final void rule__PerspectivePartStack__Group_3_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5534:1: ( ( 'accessibility' ) )
-            // InternalPerspectiveDsl.g:5535:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:5596:1: ( ( 'accessibility' ) )
+            // InternalPerspectiveDsl.g:5597:1: ( 'accessibility' )
             {
-            // InternalPerspectiveDsl.g:5535:1: ( 'accessibility' )
-            // InternalPerspectiveDsl.g:5536:2: 'accessibility'
+            // InternalPerspectiveDsl.g:5597:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:5598:2: 'accessibility'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_2_0()); 
@@ -19675,14 +19905,14 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_2__1"
-    // InternalPerspectiveDsl.g:5545:1: rule__PerspectivePartStack__Group_3_2__1 : rule__PerspectivePartStack__Group_3_2__1__Impl ;
+    // InternalPerspectiveDsl.g:5607:1: rule__PerspectivePartStack__Group_3_2__1 : rule__PerspectivePartStack__Group_3_2__1__Impl ;
     public final void rule__PerspectivePartStack__Group_3_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5549:1: ( rule__PerspectivePartStack__Group_3_2__1__Impl )
-            // InternalPerspectiveDsl.g:5550:2: rule__PerspectivePartStack__Group_3_2__1__Impl
+            // InternalPerspectiveDsl.g:5611:1: ( rule__PerspectivePartStack__Group_3_2__1__Impl )
+            // InternalPerspectiveDsl.g:5612:2: rule__PerspectivePartStack__Group_3_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePartStack__Group_3_2__1__Impl();
@@ -19708,23 +19938,23 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_2__1__Impl"
-    // InternalPerspectiveDsl.g:5556:1: rule__PerspectivePartStack__Group_3_2__1__Impl : ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:5618:1: rule__PerspectivePartStack__Group_3_2__1__Impl : ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) ) ;
     public final void rule__PerspectivePartStack__Group_3_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5560:1: ( ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) ) )
-            // InternalPerspectiveDsl.g:5561:1: ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:5622:1: ( ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) ) )
+            // InternalPerspectiveDsl.g:5623:1: ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:5561:1: ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) )
-            // InternalPerspectiveDsl.g:5562:2: ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:5623:1: ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:5624:2: ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_2_1()); 
             }
-            // InternalPerspectiveDsl.g:5563:2: ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 )
-            // InternalPerspectiveDsl.g:5563:3: rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1
+            // InternalPerspectiveDsl.g:5625:2: ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:5625:3: rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1();
@@ -19759,14 +19989,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group__0"
-    // InternalPerspectiveDsl.g:5572:1: rule__PerspectivePart__Group__0 : rule__PerspectivePart__Group__0__Impl rule__PerspectivePart__Group__1 ;
+    // InternalPerspectiveDsl.g:5634: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:5576:1: ( rule__PerspectivePart__Group__0__Impl rule__PerspectivePart__Group__1 )
-            // InternalPerspectiveDsl.g:5577:2: rule__PerspectivePart__Group__0__Impl rule__PerspectivePart__Group__1
+            // InternalPerspectiveDsl.g:5638:1: ( rule__PerspectivePart__Group__0__Impl rule__PerspectivePart__Group__1 )
+            // InternalPerspectiveDsl.g:5639:2: rule__PerspectivePart__Group__0__Impl rule__PerspectivePart__Group__1
             {
             pushFollow(FOLLOW_22);
             rule__PerspectivePart__Group__0__Impl();
@@ -19797,23 +20027,23 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group__0__Impl"
-    // InternalPerspectiveDsl.g:5584:1: rule__PerspectivePart__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:5646:1: rule__PerspectivePart__Group__0__Impl : ( () ) ;
     public final void rule__PerspectivePart__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5588:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:5589:1: ( () )
+            // InternalPerspectiveDsl.g:5650:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:5651:1: ( () )
             {
-            // InternalPerspectiveDsl.g:5589:1: ( () )
-            // InternalPerspectiveDsl.g:5590:2: ()
+            // InternalPerspectiveDsl.g:5651:1: ( () )
+            // InternalPerspectiveDsl.g:5652:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getPerspectivePartAction_0()); 
             }
-            // InternalPerspectiveDsl.g:5591:2: ()
-            // InternalPerspectiveDsl.g:5591:3: 
+            // InternalPerspectiveDsl.g:5653:2: ()
+            // InternalPerspectiveDsl.g:5653:3: 
             {
             }
 
@@ -19838,14 +20068,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group__1"
-    // InternalPerspectiveDsl.g:5599:1: rule__PerspectivePart__Group__1 : rule__PerspectivePart__Group__1__Impl rule__PerspectivePart__Group__2 ;
+    // InternalPerspectiveDsl.g:5661: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:5603:1: ( rule__PerspectivePart__Group__1__Impl rule__PerspectivePart__Group__2 )
-            // InternalPerspectiveDsl.g:5604:2: rule__PerspectivePart__Group__1__Impl rule__PerspectivePart__Group__2
+            // InternalPerspectiveDsl.g:5665:1: ( rule__PerspectivePart__Group__1__Impl rule__PerspectivePart__Group__2 )
+            // InternalPerspectiveDsl.g:5666:2: rule__PerspectivePart__Group__1__Impl rule__PerspectivePart__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectivePart__Group__1__Impl();
@@ -19876,17 +20106,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group__1__Impl"
-    // InternalPerspectiveDsl.g:5611:1: rule__PerspectivePart__Group__1__Impl : ( 'part' ) ;
+    // InternalPerspectiveDsl.g:5673:1: rule__PerspectivePart__Group__1__Impl : ( 'part' ) ;
     public final void rule__PerspectivePart__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5615:1: ( ( 'part' ) )
-            // InternalPerspectiveDsl.g:5616:1: ( 'part' )
+            // InternalPerspectiveDsl.g:5677:1: ( ( 'part' ) )
+            // InternalPerspectiveDsl.g:5678:1: ( 'part' )
             {
-            // InternalPerspectiveDsl.g:5616:1: ( 'part' )
-            // InternalPerspectiveDsl.g:5617:2: 'part'
+            // InternalPerspectiveDsl.g:5678:1: ( 'part' )
+            // InternalPerspectiveDsl.g:5679:2: 'part'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getPartKeyword_1()); 
@@ -19917,14 +20147,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group__2"
-    // InternalPerspectiveDsl.g:5626:1: rule__PerspectivePart__Group__2 : rule__PerspectivePart__Group__2__Impl rule__PerspectivePart__Group__3 ;
+    // InternalPerspectiveDsl.g:5688: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:5630:1: ( rule__PerspectivePart__Group__2__Impl rule__PerspectivePart__Group__3 )
-            // InternalPerspectiveDsl.g:5631:2: rule__PerspectivePart__Group__2__Impl rule__PerspectivePart__Group__3
+            // InternalPerspectiveDsl.g:5692:1: ( rule__PerspectivePart__Group__2__Impl rule__PerspectivePart__Group__3 )
+            // InternalPerspectiveDsl.g:5693:2: rule__PerspectivePart__Group__2__Impl rule__PerspectivePart__Group__3
             {
             pushFollow(FOLLOW_23);
             rule__PerspectivePart__Group__2__Impl();
@@ -19955,23 +20185,23 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group__2__Impl"
-    // InternalPerspectiveDsl.g:5638:1: rule__PerspectivePart__Group__2__Impl : ( ( rule__PerspectivePart__ElementIdAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:5700: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:5642:1: ( ( ( rule__PerspectivePart__ElementIdAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:5643:1: ( ( rule__PerspectivePart__ElementIdAssignment_2 ) )
+            // InternalPerspectiveDsl.g:5704:1: ( ( ( rule__PerspectivePart__ElementIdAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:5705:1: ( ( rule__PerspectivePart__ElementIdAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:5643:1: ( ( rule__PerspectivePart__ElementIdAssignment_2 ) )
-            // InternalPerspectiveDsl.g:5644:2: ( rule__PerspectivePart__ElementIdAssignment_2 )
+            // InternalPerspectiveDsl.g:5705:1: ( ( rule__PerspectivePart__ElementIdAssignment_2 ) )
+            // InternalPerspectiveDsl.g:5706:2: ( rule__PerspectivePart__ElementIdAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getElementIdAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:5645:2: ( rule__PerspectivePart__ElementIdAssignment_2 )
-            // InternalPerspectiveDsl.g:5645:3: rule__PerspectivePart__ElementIdAssignment_2
+            // InternalPerspectiveDsl.g:5707:2: ( rule__PerspectivePart__ElementIdAssignment_2 )
+            // InternalPerspectiveDsl.g:5707:3: rule__PerspectivePart__ElementIdAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__ElementIdAssignment_2();
@@ -20006,14 +20236,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group__3"
-    // InternalPerspectiveDsl.g:5653:1: rule__PerspectivePart__Group__3 : rule__PerspectivePart__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:5715: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:5657:1: ( rule__PerspectivePart__Group__3__Impl )
-            // InternalPerspectiveDsl.g:5658:2: rule__PerspectivePart__Group__3__Impl
+            // InternalPerspectiveDsl.g:5719:1: ( rule__PerspectivePart__Group__3__Impl )
+            // InternalPerspectiveDsl.g:5720:2: rule__PerspectivePart__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__Group__3__Impl();
@@ -20039,23 +20269,23 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group__3__Impl"
-    // InternalPerspectiveDsl.g:5664:1: rule__PerspectivePart__Group__3__Impl : ( ( rule__PerspectivePart__UnorderedGroup_3 ) ) ;
+    // InternalPerspectiveDsl.g:5726: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:5668:1: ( ( ( rule__PerspectivePart__UnorderedGroup_3 ) ) )
-            // InternalPerspectiveDsl.g:5669:1: ( ( rule__PerspectivePart__UnorderedGroup_3 ) )
+            // InternalPerspectiveDsl.g:5730:1: ( ( ( rule__PerspectivePart__UnorderedGroup_3 ) ) )
+            // InternalPerspectiveDsl.g:5731:1: ( ( rule__PerspectivePart__UnorderedGroup_3 ) )
             {
-            // InternalPerspectiveDsl.g:5669:1: ( ( rule__PerspectivePart__UnorderedGroup_3 ) )
-            // InternalPerspectiveDsl.g:5670:2: ( rule__PerspectivePart__UnorderedGroup_3 )
+            // InternalPerspectiveDsl.g:5731:1: ( ( rule__PerspectivePart__UnorderedGroup_3 ) )
+            // InternalPerspectiveDsl.g:5732:2: ( rule__PerspectivePart__UnorderedGroup_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:5671:2: ( rule__PerspectivePart__UnorderedGroup_3 )
-            // InternalPerspectiveDsl.g:5671:3: rule__PerspectivePart__UnorderedGroup_3
+            // InternalPerspectiveDsl.g:5733:2: ( rule__PerspectivePart__UnorderedGroup_3 )
+            // InternalPerspectiveDsl.g:5733:3: rule__PerspectivePart__UnorderedGroup_3
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__UnorderedGroup_3();
@@ -20090,14 +20320,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_0__0"
-    // InternalPerspectiveDsl.g:5680:1: rule__PerspectivePart__Group_3_0__0 : rule__PerspectivePart__Group_3_0__0__Impl rule__PerspectivePart__Group_3_0__1 ;
+    // InternalPerspectiveDsl.g:5742: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:5684:1: ( rule__PerspectivePart__Group_3_0__0__Impl rule__PerspectivePart__Group_3_0__1 )
-            // InternalPerspectiveDsl.g:5685:2: rule__PerspectivePart__Group_3_0__0__Impl rule__PerspectivePart__Group_3_0__1
+            // InternalPerspectiveDsl.g:5746:1: ( rule__PerspectivePart__Group_3_0__0__Impl rule__PerspectivePart__Group_3_0__1 )
+            // InternalPerspectiveDsl.g:5747:2: rule__PerspectivePart__Group_3_0__0__Impl rule__PerspectivePart__Group_3_0__1
             {
             pushFollow(FOLLOW_15);
             rule__PerspectivePart__Group_3_0__0__Impl();
@@ -20128,17 +20358,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_0__0__Impl"
-    // InternalPerspectiveDsl.g:5692:1: rule__PerspectivePart__Group_3_0__0__Impl : ( 'spaceVolume' ) ;
+    // InternalPerspectiveDsl.g:5754: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:5696:1: ( ( 'spaceVolume' ) )
-            // InternalPerspectiveDsl.g:5697:1: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:5758:1: ( ( 'spaceVolume' ) )
+            // InternalPerspectiveDsl.g:5759:1: ( 'spaceVolume' )
             {
-            // InternalPerspectiveDsl.g:5697:1: ( 'spaceVolume' )
-            // InternalPerspectiveDsl.g:5698:2: 'spaceVolume'
+            // InternalPerspectiveDsl.g:5759:1: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:5760:2: 'spaceVolume'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getSpaceVolumeKeyword_3_0_0()); 
@@ -20169,14 +20399,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_0__1"
-    // InternalPerspectiveDsl.g:5707:1: rule__PerspectivePart__Group_3_0__1 : rule__PerspectivePart__Group_3_0__1__Impl ;
+    // InternalPerspectiveDsl.g:5769: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:5711:1: ( rule__PerspectivePart__Group_3_0__1__Impl )
-            // InternalPerspectiveDsl.g:5712:2: rule__PerspectivePart__Group_3_0__1__Impl
+            // InternalPerspectiveDsl.g:5773:1: ( rule__PerspectivePart__Group_3_0__1__Impl )
+            // InternalPerspectiveDsl.g:5774:2: rule__PerspectivePart__Group_3_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__Group_3_0__1__Impl();
@@ -20202,23 +20432,23 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_0__1__Impl"
-    // InternalPerspectiveDsl.g:5718:1: rule__PerspectivePart__Group_3_0__1__Impl : ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:5780: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:5722:1: ( ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) ) )
-            // InternalPerspectiveDsl.g:5723:1: ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:5784:1: ( ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) ) )
+            // InternalPerspectiveDsl.g:5785:1: ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:5723:1: ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) )
-            // InternalPerspectiveDsl.g:5724:2: ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:5785:1: ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:5786:2: ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getContainerDataAssignment_3_0_1()); 
             }
-            // InternalPerspectiveDsl.g:5725:2: ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 )
-            // InternalPerspectiveDsl.g:5725:3: rule__PerspectivePart__ContainerDataAssignment_3_0_1
+            // InternalPerspectiveDsl.g:5787:2: ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:5787:3: rule__PerspectivePart__ContainerDataAssignment_3_0_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__ContainerDataAssignment_3_0_1();
@@ -20253,14 +20483,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_1__0"
-    // InternalPerspectiveDsl.g:5734:1: rule__PerspectivePart__Group_3_1__0 : rule__PerspectivePart__Group_3_1__0__Impl rule__PerspectivePart__Group_3_1__1 ;
+    // InternalPerspectiveDsl.g:5796: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:5738:1: ( rule__PerspectivePart__Group_3_1__0__Impl rule__PerspectivePart__Group_3_1__1 )
-            // InternalPerspectiveDsl.g:5739:2: rule__PerspectivePart__Group_3_1__0__Impl rule__PerspectivePart__Group_3_1__1
+            // InternalPerspectiveDsl.g:5800:1: ( rule__PerspectivePart__Group_3_1__0__Impl rule__PerspectivePart__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:5801:2: rule__PerspectivePart__Group_3_1__0__Impl rule__PerspectivePart__Group_3_1__1
             {
             pushFollow(FOLLOW_15);
             rule__PerspectivePart__Group_3_1__0__Impl();
@@ -20291,17 +20521,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_1__0__Impl"
-    // InternalPerspectiveDsl.g:5746:1: rule__PerspectivePart__Group_3_1__0__Impl : ( 'accessibility' ) ;
+    // InternalPerspectiveDsl.g:5808: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:5750:1: ( ( 'accessibility' ) )
-            // InternalPerspectiveDsl.g:5751:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:5812:1: ( ( 'accessibility' ) )
+            // InternalPerspectiveDsl.g:5813:1: ( 'accessibility' )
             {
-            // InternalPerspectiveDsl.g:5751:1: ( 'accessibility' )
-            // InternalPerspectiveDsl.g:5752:2: 'accessibility'
+            // InternalPerspectiveDsl.g:5813:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:5814:2: 'accessibility'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getAccessibilityKeyword_3_1_0()); 
@@ -20332,14 +20562,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_1__1"
-    // InternalPerspectiveDsl.g:5761:1: rule__PerspectivePart__Group_3_1__1 : rule__PerspectivePart__Group_3_1__1__Impl ;
+    // InternalPerspectiveDsl.g:5823: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:5765:1: ( rule__PerspectivePart__Group_3_1__1__Impl )
-            // InternalPerspectiveDsl.g:5766:2: rule__PerspectivePart__Group_3_1__1__Impl
+            // InternalPerspectiveDsl.g:5827:1: ( rule__PerspectivePart__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:5828:2: rule__PerspectivePart__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__Group_3_1__1__Impl();
@@ -20365,23 +20595,23 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_1__1__Impl"
-    // InternalPerspectiveDsl.g:5772:1: rule__PerspectivePart__Group_3_1__1__Impl : ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:5834: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:5776:1: ( ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) ) )
-            // InternalPerspectiveDsl.g:5777:1: ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:5838:1: ( ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:5839:1: ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:5777:1: ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) )
-            // InternalPerspectiveDsl.g:5778:2: ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:5839:1: ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:5840:2: ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseAssignment_3_1_1()); 
             }
-            // InternalPerspectiveDsl.g:5779:2: ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 )
-            // InternalPerspectiveDsl.g:5779:3: rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1
+            // InternalPerspectiveDsl.g:5841:2: ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:5841:3: rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1();
@@ -20416,14 +20646,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_2__0"
-    // InternalPerspectiveDsl.g:5788:1: rule__PerspectivePart__Group_3_2__0 : rule__PerspectivePart__Group_3_2__0__Impl rule__PerspectivePart__Group_3_2__1 ;
+    // InternalPerspectiveDsl.g:5850: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:5792:1: ( rule__PerspectivePart__Group_3_2__0__Impl rule__PerspectivePart__Group_3_2__1 )
-            // InternalPerspectiveDsl.g:5793:2: rule__PerspectivePart__Group_3_2__0__Impl rule__PerspectivePart__Group_3_2__1
+            // InternalPerspectiveDsl.g:5854:1: ( rule__PerspectivePart__Group_3_2__0__Impl rule__PerspectivePart__Group_3_2__1 )
+            // InternalPerspectiveDsl.g:5855:2: rule__PerspectivePart__Group_3_2__0__Impl rule__PerspectivePart__Group_3_2__1
             {
             pushFollow(FOLLOW_15);
             rule__PerspectivePart__Group_3_2__0__Impl();
@@ -20454,17 +20684,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_2__0__Impl"
-    // InternalPerspectiveDsl.g:5800:1: rule__PerspectivePart__Group_3_2__0__Impl : ( 'iconURI' ) ;
+    // InternalPerspectiveDsl.g:5862: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:5804:1: ( ( 'iconURI' ) )
-            // InternalPerspectiveDsl.g:5805:1: ( 'iconURI' )
+            // InternalPerspectiveDsl.g:5866:1: ( ( 'iconURI' ) )
+            // InternalPerspectiveDsl.g:5867:1: ( 'iconURI' )
             {
-            // InternalPerspectiveDsl.g:5805:1: ( 'iconURI' )
-            // InternalPerspectiveDsl.g:5806:2: 'iconURI'
+            // InternalPerspectiveDsl.g:5867:1: ( 'iconURI' )
+            // InternalPerspectiveDsl.g:5868:2: 'iconURI'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getIconURIKeyword_3_2_0()); 
@@ -20495,14 +20725,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_2__1"
-    // InternalPerspectiveDsl.g:5815:1: rule__PerspectivePart__Group_3_2__1 : rule__PerspectivePart__Group_3_2__1__Impl ;
+    // InternalPerspectiveDsl.g:5877: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:5819:1: ( rule__PerspectivePart__Group_3_2__1__Impl )
-            // InternalPerspectiveDsl.g:5820:2: rule__PerspectivePart__Group_3_2__1__Impl
+            // InternalPerspectiveDsl.g:5881:1: ( rule__PerspectivePart__Group_3_2__1__Impl )
+            // InternalPerspectiveDsl.g:5882:2: rule__PerspectivePart__Group_3_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__Group_3_2__1__Impl();
@@ -20528,23 +20758,23 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_2__1__Impl"
-    // InternalPerspectiveDsl.g:5826:1: rule__PerspectivePart__Group_3_2__1__Impl : ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:5888: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:5830:1: ( ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) ) )
-            // InternalPerspectiveDsl.g:5831:1: ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:5892:1: ( ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) ) )
+            // InternalPerspectiveDsl.g:5893:1: ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:5831:1: ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) )
-            // InternalPerspectiveDsl.g:5832:2: ( rule__PerspectivePart__IconURIAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:5893:1: ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:5894:2: ( rule__PerspectivePart__IconURIAssignment_3_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getIconURIAssignment_3_2_1()); 
             }
-            // InternalPerspectiveDsl.g:5833:2: ( rule__PerspectivePart__IconURIAssignment_3_2_1 )
-            // InternalPerspectiveDsl.g:5833:3: rule__PerspectivePart__IconURIAssignment_3_2_1
+            // InternalPerspectiveDsl.g:5895:2: ( rule__PerspectivePart__IconURIAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:5895:3: rule__PerspectivePart__IconURIAssignment_3_2_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__IconURIAssignment_3_2_1();
@@ -20579,14 +20809,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_3__0"
-    // InternalPerspectiveDsl.g:5842:1: rule__PerspectivePart__Group_3_3__0 : rule__PerspectivePart__Group_3_3__0__Impl rule__PerspectivePart__Group_3_3__1 ;
+    // InternalPerspectiveDsl.g:5904: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:5846:1: ( rule__PerspectivePart__Group_3_3__0__Impl rule__PerspectivePart__Group_3_3__1 )
-            // InternalPerspectiveDsl.g:5847:2: rule__PerspectivePart__Group_3_3__0__Impl rule__PerspectivePart__Group_3_3__1
+            // InternalPerspectiveDsl.g:5908:1: ( rule__PerspectivePart__Group_3_3__0__Impl rule__PerspectivePart__Group_3_3__1 )
+            // InternalPerspectiveDsl.g:5909:2: rule__PerspectivePart__Group_3_3__0__Impl rule__PerspectivePart__Group_3_3__1
             {
             pushFollow(FOLLOW_24);
             rule__PerspectivePart__Group_3_3__0__Impl();
@@ -20617,17 +20847,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_3__0__Impl"
-    // InternalPerspectiveDsl.g:5854:1: rule__PerspectivePart__Group_3_3__0__Impl : ( 'view' ) ;
+    // InternalPerspectiveDsl.g:5916: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:5858:1: ( ( 'view' ) )
-            // InternalPerspectiveDsl.g:5859:1: ( 'view' )
+            // InternalPerspectiveDsl.g:5920:1: ( ( 'view' ) )
+            // InternalPerspectiveDsl.g:5921:1: ( 'view' )
             {
-            // InternalPerspectiveDsl.g:5859:1: ( 'view' )
-            // InternalPerspectiveDsl.g:5860:2: 'view'
+            // InternalPerspectiveDsl.g:5921:1: ( 'view' )
+            // InternalPerspectiveDsl.g:5922:2: 'view'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getViewKeyword_3_3_0()); 
@@ -20658,14 +20888,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_3__1"
-    // InternalPerspectiveDsl.g:5869:1: rule__PerspectivePart__Group_3_3__1 : rule__PerspectivePart__Group_3_3__1__Impl ;
+    // InternalPerspectiveDsl.g:5931: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:5873:1: ( rule__PerspectivePart__Group_3_3__1__Impl )
-            // InternalPerspectiveDsl.g:5874:2: rule__PerspectivePart__Group_3_3__1__Impl
+            // InternalPerspectiveDsl.g:5935:1: ( rule__PerspectivePart__Group_3_3__1__Impl )
+            // InternalPerspectiveDsl.g:5936:2: rule__PerspectivePart__Group_3_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__Group_3_3__1__Impl();
@@ -20691,23 +20921,23 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_3__1__Impl"
-    // InternalPerspectiveDsl.g:5880:1: rule__PerspectivePart__Group_3_3__1__Impl : ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) ) ;
+    // InternalPerspectiveDsl.g:5942: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:5884:1: ( ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) ) )
-            // InternalPerspectiveDsl.g:5885:1: ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) )
+            // InternalPerspectiveDsl.g:5946:1: ( ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) ) )
+            // InternalPerspectiveDsl.g:5947:1: ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) )
             {
-            // InternalPerspectiveDsl.g:5885:1: ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) )
-            // InternalPerspectiveDsl.g:5886:2: ( rule__PerspectivePart__ViewAssignment_3_3_1 )
+            // InternalPerspectiveDsl.g:5947:1: ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) )
+            // InternalPerspectiveDsl.g:5948:2: ( rule__PerspectivePart__ViewAssignment_3_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getViewAssignment_3_3_1()); 
             }
-            // InternalPerspectiveDsl.g:5887:2: ( rule__PerspectivePart__ViewAssignment_3_3_1 )
-            // InternalPerspectiveDsl.g:5887:3: rule__PerspectivePart__ViewAssignment_3_3_1
+            // InternalPerspectiveDsl.g:5949:2: ( rule__PerspectivePart__ViewAssignment_3_3_1 )
+            // InternalPerspectiveDsl.g:5949:3: rule__PerspectivePart__ViewAssignment_3_3_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__ViewAssignment_3_3_1();
@@ -20742,14 +20972,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSelection__Group__0"
-    // InternalPerspectiveDsl.g:5896:1: rule__PerspectiveSelection__Group__0 : rule__PerspectiveSelection__Group__0__Impl rule__PerspectiveSelection__Group__1 ;
+    // InternalPerspectiveDsl.g:5958: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:5900:1: ( rule__PerspectiveSelection__Group__0__Impl rule__PerspectiveSelection__Group__1 )
-            // InternalPerspectiveDsl.g:5901:2: rule__PerspectiveSelection__Group__0__Impl rule__PerspectiveSelection__Group__1
+            // InternalPerspectiveDsl.g:5962:1: ( rule__PerspectiveSelection__Group__0__Impl rule__PerspectiveSelection__Group__1 )
+            // InternalPerspectiveDsl.g:5963:2: rule__PerspectiveSelection__Group__0__Impl rule__PerspectiveSelection__Group__1
             {
             pushFollow(FOLLOW_25);
             rule__PerspectiveSelection__Group__0__Impl();
@@ -20780,23 +21010,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSelection__Group__0__Impl"
-    // InternalPerspectiveDsl.g:5908:1: rule__PerspectiveSelection__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:5970:1: rule__PerspectiveSelection__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveSelection__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5912:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:5913:1: ( () )
+            // InternalPerspectiveDsl.g:5974:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:5975:1: ( () )
             {
-            // InternalPerspectiveDsl.g:5913:1: ( () )
-            // InternalPerspectiveDsl.g:5914:2: ()
+            // InternalPerspectiveDsl.g:5975:1: ( () )
+            // InternalPerspectiveDsl.g:5976:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSelectionAccess().getPerspectiveSelectionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:5915:2: ()
-            // InternalPerspectiveDsl.g:5915:3: 
+            // InternalPerspectiveDsl.g:5977:2: ()
+            // InternalPerspectiveDsl.g:5977:3: 
             {
             }
 
@@ -20821,14 +21051,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSelection__Group__1"
-    // InternalPerspectiveDsl.g:5923:1: rule__PerspectiveSelection__Group__1 : rule__PerspectiveSelection__Group__1__Impl rule__PerspectiveSelection__Group__2 ;
+    // InternalPerspectiveDsl.g:5985: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:5927:1: ( rule__PerspectiveSelection__Group__1__Impl rule__PerspectiveSelection__Group__2 )
-            // InternalPerspectiveDsl.g:5928:2: rule__PerspectiveSelection__Group__1__Impl rule__PerspectiveSelection__Group__2
+            // InternalPerspectiveDsl.g:5989:1: ( rule__PerspectiveSelection__Group__1__Impl rule__PerspectiveSelection__Group__2 )
+            // InternalPerspectiveDsl.g:5990:2: rule__PerspectiveSelection__Group__1__Impl rule__PerspectiveSelection__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveSelection__Group__1__Impl();
@@ -20859,17 +21089,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSelection__Group__1__Impl"
-    // InternalPerspectiveDsl.g:5935:1: rule__PerspectiveSelection__Group__1__Impl : ( 'select' ) ;
+    // InternalPerspectiveDsl.g:5997:1: rule__PerspectiveSelection__Group__1__Impl : ( 'select' ) ;
     public final void rule__PerspectiveSelection__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5939:1: ( ( 'select' ) )
-            // InternalPerspectiveDsl.g:5940:1: ( 'select' )
+            // InternalPerspectiveDsl.g:6001:1: ( ( 'select' ) )
+            // InternalPerspectiveDsl.g:6002:1: ( 'select' )
             {
-            // InternalPerspectiveDsl.g:5940:1: ( 'select' )
-            // InternalPerspectiveDsl.g:5941:2: 'select'
+            // InternalPerspectiveDsl.g:6002:1: ( 'select' )
+            // InternalPerspectiveDsl.g:6003:2: 'select'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSelectionAccess().getSelectKeyword_1()); 
@@ -20900,14 +21130,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSelection__Group__2"
-    // InternalPerspectiveDsl.g:5950:1: rule__PerspectiveSelection__Group__2 : rule__PerspectiveSelection__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:6012: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:5954:1: ( rule__PerspectiveSelection__Group__2__Impl )
-            // InternalPerspectiveDsl.g:5955:2: rule__PerspectiveSelection__Group__2__Impl
+            // InternalPerspectiveDsl.g:6016:1: ( rule__PerspectiveSelection__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6017:2: rule__PerspectiveSelection__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSelection__Group__2__Impl();
@@ -20933,23 +21163,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSelection__Group__2__Impl"
-    // InternalPerspectiveDsl.g:5961:1: rule__PerspectiveSelection__Group__2__Impl : ( ( rule__PerspectiveSelection__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:6023: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:5965:1: ( ( ( rule__PerspectiveSelection__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:5966:1: ( ( rule__PerspectiveSelection__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6027:1: ( ( ( rule__PerspectiveSelection__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6028:1: ( ( rule__PerspectiveSelection__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:5966:1: ( ( rule__PerspectiveSelection__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:5967:2: ( rule__PerspectiveSelection__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6028:1: ( ( rule__PerspectiveSelection__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6029:2: ( rule__PerspectiveSelection__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSelectionAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:5968:2: ( rule__PerspectiveSelection__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:5968:3: rule__PerspectiveSelection__RefAssignment_2
+            // InternalPerspectiveDsl.g:6030:2: ( rule__PerspectiveSelection__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6030:3: rule__PerspectiveSelection__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSelection__RefAssignment_2();
@@ -20984,14 +21214,14 @@
 
 
     // $ANTLR start "rule__PerspectiveTable__Group__0"
-    // InternalPerspectiveDsl.g:5977:1: rule__PerspectiveTable__Group__0 : rule__PerspectiveTable__Group__0__Impl rule__PerspectiveTable__Group__1 ;
+    // InternalPerspectiveDsl.g:6039: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:5981:1: ( rule__PerspectiveTable__Group__0__Impl rule__PerspectiveTable__Group__1 )
-            // InternalPerspectiveDsl.g:5982:2: rule__PerspectiveTable__Group__0__Impl rule__PerspectiveTable__Group__1
+            // InternalPerspectiveDsl.g:6043:1: ( rule__PerspectiveTable__Group__0__Impl rule__PerspectiveTable__Group__1 )
+            // InternalPerspectiveDsl.g:6044:2: rule__PerspectiveTable__Group__0__Impl rule__PerspectiveTable__Group__1
             {
             pushFollow(FOLLOW_26);
             rule__PerspectiveTable__Group__0__Impl();
@@ -21022,23 +21252,23 @@
 
 
     // $ANTLR start "rule__PerspectiveTable__Group__0__Impl"
-    // InternalPerspectiveDsl.g:5989:1: rule__PerspectiveTable__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6051:1: rule__PerspectiveTable__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveTable__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5993:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:5994:1: ( () )
+            // InternalPerspectiveDsl.g:6055:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6056:1: ( () )
             {
-            // InternalPerspectiveDsl.g:5994:1: ( () )
-            // InternalPerspectiveDsl.g:5995:2: ()
+            // InternalPerspectiveDsl.g:6056:1: ( () )
+            // InternalPerspectiveDsl.g:6057:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTableAccess().getPerspectiveTableAction_0()); 
             }
-            // InternalPerspectiveDsl.g:5996:2: ()
-            // InternalPerspectiveDsl.g:5996:3: 
+            // InternalPerspectiveDsl.g:6058:2: ()
+            // InternalPerspectiveDsl.g:6058:3: 
             {
             }
 
@@ -21063,14 +21293,14 @@
 
 
     // $ANTLR start "rule__PerspectiveTable__Group__1"
-    // InternalPerspectiveDsl.g:6004:1: rule__PerspectiveTable__Group__1 : rule__PerspectiveTable__Group__1__Impl rule__PerspectiveTable__Group__2 ;
+    // InternalPerspectiveDsl.g:6066: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:6008:1: ( rule__PerspectiveTable__Group__1__Impl rule__PerspectiveTable__Group__2 )
-            // InternalPerspectiveDsl.g:6009:2: rule__PerspectiveTable__Group__1__Impl rule__PerspectiveTable__Group__2
+            // InternalPerspectiveDsl.g:6070:1: ( rule__PerspectiveTable__Group__1__Impl rule__PerspectiveTable__Group__2 )
+            // InternalPerspectiveDsl.g:6071:2: rule__PerspectiveTable__Group__1__Impl rule__PerspectiveTable__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveTable__Group__1__Impl();
@@ -21101,24 +21331,24 @@
 
 
     // $ANTLR start "rule__PerspectiveTable__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6016:1: rule__PerspectiveTable__Group__1__Impl : ( 'table' ) ;
+    // InternalPerspectiveDsl.g:6078:1: rule__PerspectiveTable__Group__1__Impl : ( 'readOnlyTable' ) ;
     public final void rule__PerspectiveTable__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6020:1: ( ( 'table' ) )
-            // InternalPerspectiveDsl.g:6021:1: ( 'table' )
+            // InternalPerspectiveDsl.g:6082:1: ( ( 'readOnlyTable' ) )
+            // InternalPerspectiveDsl.g:6083:1: ( 'readOnlyTable' )
             {
-            // InternalPerspectiveDsl.g:6021:1: ( 'table' )
-            // InternalPerspectiveDsl.g:6022:2: 'table'
+            // InternalPerspectiveDsl.g:6083:1: ( 'readOnlyTable' )
+            // InternalPerspectiveDsl.g:6084:2: 'readOnlyTable'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectiveTableAccess().getTableKeyword_1()); 
+               before(grammarAccess.getPerspectiveTableAccess().getReadOnlyTableKeyword_1()); 
             }
             match(input,70,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectiveTableAccess().getTableKeyword_1()); 
+               after(grammarAccess.getPerspectiveTableAccess().getReadOnlyTableKeyword_1()); 
             }
 
             }
@@ -21142,14 +21372,14 @@
 
 
     // $ANTLR start "rule__PerspectiveTable__Group__2"
-    // InternalPerspectiveDsl.g:6031:1: rule__PerspectiveTable__Group__2 : rule__PerspectiveTable__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:6093: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:6035:1: ( rule__PerspectiveTable__Group__2__Impl )
-            // InternalPerspectiveDsl.g:6036:2: rule__PerspectiveTable__Group__2__Impl
+            // InternalPerspectiveDsl.g:6097:1: ( rule__PerspectiveTable__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6098:2: rule__PerspectiveTable__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveTable__Group__2__Impl();
@@ -21175,23 +21405,23 @@
 
 
     // $ANTLR start "rule__PerspectiveTable__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6042:1: rule__PerspectiveTable__Group__2__Impl : ( ( rule__PerspectiveTable__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:6104: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:6046:1: ( ( ( rule__PerspectiveTable__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:6047:1: ( ( rule__PerspectiveTable__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6108:1: ( ( ( rule__PerspectiveTable__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6109:1: ( ( rule__PerspectiveTable__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:6047:1: ( ( rule__PerspectiveTable__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:6048:2: ( rule__PerspectiveTable__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6109:1: ( ( rule__PerspectiveTable__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6110:2: ( rule__PerspectiveTable__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTableAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:6049:2: ( rule__PerspectiveTable__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:6049:3: rule__PerspectiveTable__RefAssignment_2
+            // InternalPerspectiveDsl.g:6111:2: ( rule__PerspectiveTable__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6111:3: rule__PerspectiveTable__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveTable__RefAssignment_2();
@@ -21226,14 +21456,14 @@
 
 
     // $ANTLR start "rule__PerspectiveGrid__Group__0"
-    // InternalPerspectiveDsl.g:6058:1: rule__PerspectiveGrid__Group__0 : rule__PerspectiveGrid__Group__0__Impl rule__PerspectiveGrid__Group__1 ;
+    // InternalPerspectiveDsl.g:6120: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:6062:1: ( rule__PerspectiveGrid__Group__0__Impl rule__PerspectiveGrid__Group__1 )
-            // InternalPerspectiveDsl.g:6063:2: rule__PerspectiveGrid__Group__0__Impl rule__PerspectiveGrid__Group__1
+            // InternalPerspectiveDsl.g:6124:1: ( rule__PerspectiveGrid__Group__0__Impl rule__PerspectiveGrid__Group__1 )
+            // InternalPerspectiveDsl.g:6125:2: rule__PerspectiveGrid__Group__0__Impl rule__PerspectiveGrid__Group__1
             {
             pushFollow(FOLLOW_27);
             rule__PerspectiveGrid__Group__0__Impl();
@@ -21264,23 +21494,23 @@
 
 
     // $ANTLR start "rule__PerspectiveGrid__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6070:1: rule__PerspectiveGrid__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6132:1: rule__PerspectiveGrid__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveGrid__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6074:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6075:1: ( () )
+            // InternalPerspectiveDsl.g:6136:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6137:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6075:1: ( () )
-            // InternalPerspectiveDsl.g:6076:2: ()
+            // InternalPerspectiveDsl.g:6137:1: ( () )
+            // InternalPerspectiveDsl.g:6138:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveGridAccess().getPerspectiveGridAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6077:2: ()
-            // InternalPerspectiveDsl.g:6077:3: 
+            // InternalPerspectiveDsl.g:6139:2: ()
+            // InternalPerspectiveDsl.g:6139:3: 
             {
             }
 
@@ -21305,14 +21535,14 @@
 
 
     // $ANTLR start "rule__PerspectiveGrid__Group__1"
-    // InternalPerspectiveDsl.g:6085:1: rule__PerspectiveGrid__Group__1 : rule__PerspectiveGrid__Group__1__Impl rule__PerspectiveGrid__Group__2 ;
+    // InternalPerspectiveDsl.g:6147: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:6089:1: ( rule__PerspectiveGrid__Group__1__Impl rule__PerspectiveGrid__Group__2 )
-            // InternalPerspectiveDsl.g:6090:2: rule__PerspectiveGrid__Group__1__Impl rule__PerspectiveGrid__Group__2
+            // InternalPerspectiveDsl.g:6151:1: ( rule__PerspectiveGrid__Group__1__Impl rule__PerspectiveGrid__Group__2 )
+            // InternalPerspectiveDsl.g:6152:2: rule__PerspectiveGrid__Group__1__Impl rule__PerspectiveGrid__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveGrid__Group__1__Impl();
@@ -21343,24 +21573,24 @@
 
 
     // $ANTLR start "rule__PerspectiveGrid__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6097:1: rule__PerspectiveGrid__Group__1__Impl : ( 'grid' ) ;
+    // InternalPerspectiveDsl.g:6159:1: rule__PerspectiveGrid__Group__1__Impl : ( 'editableTable' ) ;
     public final void rule__PerspectiveGrid__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6101:1: ( ( 'grid' ) )
-            // InternalPerspectiveDsl.g:6102:1: ( 'grid' )
+            // InternalPerspectiveDsl.g:6163:1: ( ( 'editableTable' ) )
+            // InternalPerspectiveDsl.g:6164:1: ( 'editableTable' )
             {
-            // InternalPerspectiveDsl.g:6102:1: ( 'grid' )
-            // InternalPerspectiveDsl.g:6103:2: 'grid'
+            // InternalPerspectiveDsl.g:6164:1: ( 'editableTable' )
+            // InternalPerspectiveDsl.g:6165:2: 'editableTable'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectiveGridAccess().getGridKeyword_1()); 
+               before(grammarAccess.getPerspectiveGridAccess().getEditableTableKeyword_1()); 
             }
             match(input,71,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectiveGridAccess().getGridKeyword_1()); 
+               after(grammarAccess.getPerspectiveGridAccess().getEditableTableKeyword_1()); 
             }
 
             }
@@ -21384,14 +21614,14 @@
 
 
     // $ANTLR start "rule__PerspectiveGrid__Group__2"
-    // InternalPerspectiveDsl.g:6112:1: rule__PerspectiveGrid__Group__2 : rule__PerspectiveGrid__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:6174: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:6116:1: ( rule__PerspectiveGrid__Group__2__Impl )
-            // InternalPerspectiveDsl.g:6117:2: rule__PerspectiveGrid__Group__2__Impl
+            // InternalPerspectiveDsl.g:6178:1: ( rule__PerspectiveGrid__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6179:2: rule__PerspectiveGrid__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveGrid__Group__2__Impl();
@@ -21417,23 +21647,23 @@
 
 
     // $ANTLR start "rule__PerspectiveGrid__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6123:1: rule__PerspectiveGrid__Group__2__Impl : ( ( rule__PerspectiveGrid__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:6185: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:6127:1: ( ( ( rule__PerspectiveGrid__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:6128:1: ( ( rule__PerspectiveGrid__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6189:1: ( ( ( rule__PerspectiveGrid__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6190:1: ( ( rule__PerspectiveGrid__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:6128:1: ( ( rule__PerspectiveGrid__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:6129:2: ( rule__PerspectiveGrid__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6190:1: ( ( rule__PerspectiveGrid__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6191:2: ( rule__PerspectiveGrid__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveGridAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:6130:2: ( rule__PerspectiveGrid__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:6130:3: rule__PerspectiveGrid__RefAssignment_2
+            // InternalPerspectiveDsl.g:6192:2: ( rule__PerspectiveGrid__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6192:3: rule__PerspectiveGrid__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveGrid__RefAssignment_2();
@@ -21467,259 +21697,17 @@
     // $ANTLR end "rule__PerspectiveGrid__Group__2__Impl"
 
 
-    // $ANTLR start "rule__PerspectiveBean__Group__0"
-    // InternalPerspectiveDsl.g:6139:1: rule__PerspectiveBean__Group__0 : rule__PerspectiveBean__Group__0__Impl rule__PerspectiveBean__Group__1 ;
-    public final void rule__PerspectiveBean__Group__0() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalPerspectiveDsl.g:6143:1: ( rule__PerspectiveBean__Group__0__Impl rule__PerspectiveBean__Group__1 )
-            // InternalPerspectiveDsl.g:6144:2: rule__PerspectiveBean__Group__0__Impl rule__PerspectiveBean__Group__1
-            {
-            pushFollow(FOLLOW_28);
-            rule__PerspectiveBean__Group__0__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
-            pushFollow(FOLLOW_2);
-            rule__PerspectiveBean__Group__1();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__PerspectiveBean__Group__0"
-
-
-    // $ANTLR start "rule__PerspectiveBean__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6151:1: rule__PerspectiveBean__Group__0__Impl : ( () ) ;
-    public final void rule__PerspectiveBean__Group__0__Impl() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalPerspectiveDsl.g:6155:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6156:1: ( () )
-            {
-            // InternalPerspectiveDsl.g:6156:1: ( () )
-            // InternalPerspectiveDsl.g:6157:2: ()
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectiveBeanAccess().getPerspectiveBeanAction_0()); 
-            }
-            // InternalPerspectiveDsl.g:6158:2: ()
-            // InternalPerspectiveDsl.g:6158:3: 
-            {
-            }
-
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectiveBeanAccess().getPerspectiveBeanAction_0()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__PerspectiveBean__Group__0__Impl"
-
-
-    // $ANTLR start "rule__PerspectiveBean__Group__1"
-    // InternalPerspectiveDsl.g:6166:1: rule__PerspectiveBean__Group__1 : rule__PerspectiveBean__Group__1__Impl rule__PerspectiveBean__Group__2 ;
-    public final void rule__PerspectiveBean__Group__1() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalPerspectiveDsl.g:6170:1: ( rule__PerspectiveBean__Group__1__Impl rule__PerspectiveBean__Group__2 )
-            // InternalPerspectiveDsl.g:6171:2: rule__PerspectiveBean__Group__1__Impl rule__PerspectiveBean__Group__2
-            {
-            pushFollow(FOLLOW_7);
-            rule__PerspectiveBean__Group__1__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
-            pushFollow(FOLLOW_2);
-            rule__PerspectiveBean__Group__2();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__PerspectiveBean__Group__1"
-
-
-    // $ANTLR start "rule__PerspectiveBean__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6178:1: rule__PerspectiveBean__Group__1__Impl : ( 'bean' ) ;
-    public final void rule__PerspectiveBean__Group__1__Impl() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalPerspectiveDsl.g:6182:1: ( ( 'bean' ) )
-            // InternalPerspectiveDsl.g:6183:1: ( 'bean' )
-            {
-            // InternalPerspectiveDsl.g:6183:1: ( 'bean' )
-            // InternalPerspectiveDsl.g:6184:2: 'bean'
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectiveBeanAccess().getBeanKeyword_1()); 
-            }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectiveBeanAccess().getBeanKeyword_1()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__PerspectiveBean__Group__1__Impl"
-
-
-    // $ANTLR start "rule__PerspectiveBean__Group__2"
-    // InternalPerspectiveDsl.g:6193:1: rule__PerspectiveBean__Group__2 : rule__PerspectiveBean__Group__2__Impl ;
-    public final void rule__PerspectiveBean__Group__2() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalPerspectiveDsl.g:6197:1: ( rule__PerspectiveBean__Group__2__Impl )
-            // InternalPerspectiveDsl.g:6198:2: rule__PerspectiveBean__Group__2__Impl
-            {
-            pushFollow(FOLLOW_2);
-            rule__PerspectiveBean__Group__2__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__PerspectiveBean__Group__2"
-
-
-    // $ANTLR start "rule__PerspectiveBean__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6204:1: rule__PerspectiveBean__Group__2__Impl : ( ( rule__PerspectiveBean__RefAssignment_2 ) ) ;
-    public final void rule__PerspectiveBean__Group__2__Impl() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalPerspectiveDsl.g:6208:1: ( ( ( rule__PerspectiveBean__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:6209:1: ( ( rule__PerspectiveBean__RefAssignment_2 ) )
-            {
-            // InternalPerspectiveDsl.g:6209:1: ( ( rule__PerspectiveBean__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:6210:2: ( rule__PerspectiveBean__RefAssignment_2 )
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectiveBeanAccess().getRefAssignment_2()); 
-            }
-            // InternalPerspectiveDsl.g:6211:2: ( rule__PerspectiveBean__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:6211:3: rule__PerspectiveBean__RefAssignment_2
-            {
-            pushFollow(FOLLOW_2);
-            rule__PerspectiveBean__RefAssignment_2();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectiveBeanAccess().getRefAssignment_2()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__PerspectiveBean__Group__2__Impl"
-
-
     // $ANTLR start "rule__PerspectiveChart__Group__0"
-    // InternalPerspectiveDsl.g:6220:1: rule__PerspectiveChart__Group__0 : rule__PerspectiveChart__Group__0__Impl rule__PerspectiveChart__Group__1 ;
+    // InternalPerspectiveDsl.g:6201: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:6224:1: ( rule__PerspectiveChart__Group__0__Impl rule__PerspectiveChart__Group__1 )
-            // InternalPerspectiveDsl.g:6225:2: rule__PerspectiveChart__Group__0__Impl rule__PerspectiveChart__Group__1
+            // InternalPerspectiveDsl.g:6205:1: ( rule__PerspectiveChart__Group__0__Impl rule__PerspectiveChart__Group__1 )
+            // InternalPerspectiveDsl.g:6206:2: rule__PerspectiveChart__Group__0__Impl rule__PerspectiveChart__Group__1
             {
-            pushFollow(FOLLOW_29);
+            pushFollow(FOLLOW_28);
             rule__PerspectiveChart__Group__0__Impl();
 
             state._fsp--;
@@ -21748,23 +21736,23 @@
 
 
     // $ANTLR start "rule__PerspectiveChart__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6232:1: rule__PerspectiveChart__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6213:1: rule__PerspectiveChart__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveChart__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6236:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6237:1: ( () )
+            // InternalPerspectiveDsl.g:6217:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6218:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6237:1: ( () )
-            // InternalPerspectiveDsl.g:6238:2: ()
+            // InternalPerspectiveDsl.g:6218:1: ( () )
+            // InternalPerspectiveDsl.g:6219:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveChartAccess().getPerspectiveChartAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6239:2: ()
-            // InternalPerspectiveDsl.g:6239:3: 
+            // InternalPerspectiveDsl.g:6220:2: ()
+            // InternalPerspectiveDsl.g:6220:3: 
             {
             }
 
@@ -21789,14 +21777,14 @@
 
 
     // $ANTLR start "rule__PerspectiveChart__Group__1"
-    // InternalPerspectiveDsl.g:6247:1: rule__PerspectiveChart__Group__1 : rule__PerspectiveChart__Group__1__Impl rule__PerspectiveChart__Group__2 ;
+    // InternalPerspectiveDsl.g:6228: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:6251:1: ( rule__PerspectiveChart__Group__1__Impl rule__PerspectiveChart__Group__2 )
-            // InternalPerspectiveDsl.g:6252:2: rule__PerspectiveChart__Group__1__Impl rule__PerspectiveChart__Group__2
+            // InternalPerspectiveDsl.g:6232:1: ( rule__PerspectiveChart__Group__1__Impl rule__PerspectiveChart__Group__2 )
+            // InternalPerspectiveDsl.g:6233:2: rule__PerspectiveChart__Group__1__Impl rule__PerspectiveChart__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveChart__Group__1__Impl();
@@ -21827,22 +21815,22 @@
 
 
     // $ANTLR start "rule__PerspectiveChart__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6259:1: rule__PerspectiveChart__Group__1__Impl : ( 'chart' ) ;
+    // InternalPerspectiveDsl.g:6240:1: rule__PerspectiveChart__Group__1__Impl : ( 'chart' ) ;
     public final void rule__PerspectiveChart__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6263:1: ( ( 'chart' ) )
-            // InternalPerspectiveDsl.g:6264:1: ( 'chart' )
+            // InternalPerspectiveDsl.g:6244:1: ( ( 'chart' ) )
+            // InternalPerspectiveDsl.g:6245:1: ( 'chart' )
             {
-            // InternalPerspectiveDsl.g:6264:1: ( 'chart' )
-            // InternalPerspectiveDsl.g:6265:2: 'chart'
+            // InternalPerspectiveDsl.g:6245:1: ( 'chart' )
+            // InternalPerspectiveDsl.g:6246:2: 'chart'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveChartAccess().getChartKeyword_1()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,72,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveChartAccess().getChartKeyword_1()); 
             }
@@ -21868,14 +21856,14 @@
 
 
     // $ANTLR start "rule__PerspectiveChart__Group__2"
-    // InternalPerspectiveDsl.g:6274:1: rule__PerspectiveChart__Group__2 : rule__PerspectiveChart__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:6255: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:6278:1: ( rule__PerspectiveChart__Group__2__Impl )
-            // InternalPerspectiveDsl.g:6279:2: rule__PerspectiveChart__Group__2__Impl
+            // InternalPerspectiveDsl.g:6259:1: ( rule__PerspectiveChart__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6260:2: rule__PerspectiveChart__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveChart__Group__2__Impl();
@@ -21901,23 +21889,23 @@
 
 
     // $ANTLR start "rule__PerspectiveChart__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6285:1: rule__PerspectiveChart__Group__2__Impl : ( ( rule__PerspectiveChart__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:6266: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:6289:1: ( ( ( rule__PerspectiveChart__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:6290:1: ( ( rule__PerspectiveChart__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6270:1: ( ( ( rule__PerspectiveChart__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6271:1: ( ( rule__PerspectiveChart__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:6290:1: ( ( rule__PerspectiveChart__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:6291:2: ( rule__PerspectiveChart__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6271:1: ( ( rule__PerspectiveChart__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6272:2: ( rule__PerspectiveChart__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveChartAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:6292:2: ( rule__PerspectiveChart__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:6292:3: rule__PerspectiveChart__RefAssignment_2
+            // InternalPerspectiveDsl.g:6273:2: ( rule__PerspectiveChart__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6273:3: rule__PerspectiveChart__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveChart__RefAssignment_2();
@@ -21952,16 +21940,16 @@
 
 
     // $ANTLR start "rule__PerspectiveReport__Group__0"
-    // InternalPerspectiveDsl.g:6301:1: rule__PerspectiveReport__Group__0 : rule__PerspectiveReport__Group__0__Impl rule__PerspectiveReport__Group__1 ;
+    // InternalPerspectiveDsl.g:6282: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:6305:1: ( rule__PerspectiveReport__Group__0__Impl rule__PerspectiveReport__Group__1 )
-            // InternalPerspectiveDsl.g:6306:2: rule__PerspectiveReport__Group__0__Impl rule__PerspectiveReport__Group__1
+            // InternalPerspectiveDsl.g:6286:1: ( rule__PerspectiveReport__Group__0__Impl rule__PerspectiveReport__Group__1 )
+            // InternalPerspectiveDsl.g:6287:2: rule__PerspectiveReport__Group__0__Impl rule__PerspectiveReport__Group__1
             {
-            pushFollow(FOLLOW_30);
+            pushFollow(FOLLOW_29);
             rule__PerspectiveReport__Group__0__Impl();
 
             state._fsp--;
@@ -21990,23 +21978,23 @@
 
 
     // $ANTLR start "rule__PerspectiveReport__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6313:1: rule__PerspectiveReport__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6294:1: rule__PerspectiveReport__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveReport__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6317:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6318:1: ( () )
+            // InternalPerspectiveDsl.g:6298:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6299:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6318:1: ( () )
-            // InternalPerspectiveDsl.g:6319:2: ()
+            // InternalPerspectiveDsl.g:6299:1: ( () )
+            // InternalPerspectiveDsl.g:6300:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveReportAccess().getPerspectiveReportAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6320:2: ()
-            // InternalPerspectiveDsl.g:6320:3: 
+            // InternalPerspectiveDsl.g:6301:2: ()
+            // InternalPerspectiveDsl.g:6301:3: 
             {
             }
 
@@ -22031,14 +22019,14 @@
 
 
     // $ANTLR start "rule__PerspectiveReport__Group__1"
-    // InternalPerspectiveDsl.g:6328:1: rule__PerspectiveReport__Group__1 : rule__PerspectiveReport__Group__1__Impl rule__PerspectiveReport__Group__2 ;
+    // InternalPerspectiveDsl.g:6309: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:6332:1: ( rule__PerspectiveReport__Group__1__Impl rule__PerspectiveReport__Group__2 )
-            // InternalPerspectiveDsl.g:6333:2: rule__PerspectiveReport__Group__1__Impl rule__PerspectiveReport__Group__2
+            // InternalPerspectiveDsl.g:6313:1: ( rule__PerspectiveReport__Group__1__Impl rule__PerspectiveReport__Group__2 )
+            // InternalPerspectiveDsl.g:6314:2: rule__PerspectiveReport__Group__1__Impl rule__PerspectiveReport__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveReport__Group__1__Impl();
@@ -22069,22 +22057,22 @@
 
 
     // $ANTLR start "rule__PerspectiveReport__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6340:1: rule__PerspectiveReport__Group__1__Impl : ( 'report' ) ;
+    // InternalPerspectiveDsl.g:6321:1: rule__PerspectiveReport__Group__1__Impl : ( 'report' ) ;
     public final void rule__PerspectiveReport__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6344:1: ( ( 'report' ) )
-            // InternalPerspectiveDsl.g:6345:1: ( 'report' )
+            // InternalPerspectiveDsl.g:6325:1: ( ( 'report' ) )
+            // InternalPerspectiveDsl.g:6326:1: ( 'report' )
             {
-            // InternalPerspectiveDsl.g:6345:1: ( 'report' )
-            // InternalPerspectiveDsl.g:6346:2: 'report'
+            // InternalPerspectiveDsl.g:6326:1: ( 'report' )
+            // InternalPerspectiveDsl.g:6327:2: 'report'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveReportAccess().getReportKeyword_1()); 
             }
-            match(input,74,FOLLOW_2); if (state.failed) return ;
+            match(input,73,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveReportAccess().getReportKeyword_1()); 
             }
@@ -22110,14 +22098,14 @@
 
 
     // $ANTLR start "rule__PerspectiveReport__Group__2"
-    // InternalPerspectiveDsl.g:6355:1: rule__PerspectiveReport__Group__2 : rule__PerspectiveReport__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:6336: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:6359:1: ( rule__PerspectiveReport__Group__2__Impl )
-            // InternalPerspectiveDsl.g:6360:2: rule__PerspectiveReport__Group__2__Impl
+            // InternalPerspectiveDsl.g:6340:1: ( rule__PerspectiveReport__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6341:2: rule__PerspectiveReport__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveReport__Group__2__Impl();
@@ -22143,23 +22131,23 @@
 
 
     // $ANTLR start "rule__PerspectiveReport__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6366:1: rule__PerspectiveReport__Group__2__Impl : ( ( rule__PerspectiveReport__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:6347: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:6370:1: ( ( ( rule__PerspectiveReport__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:6371:1: ( ( rule__PerspectiveReport__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6351:1: ( ( ( rule__PerspectiveReport__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6352:1: ( ( rule__PerspectiveReport__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:6371:1: ( ( rule__PerspectiveReport__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:6372:2: ( rule__PerspectiveReport__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6352:1: ( ( rule__PerspectiveReport__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6353:2: ( rule__PerspectiveReport__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveReportAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:6373:2: ( rule__PerspectiveReport__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:6373:3: rule__PerspectiveReport__RefAssignment_2
+            // InternalPerspectiveDsl.g:6354:2: ( rule__PerspectiveReport__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6354:3: rule__PerspectiveReport__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveReport__RefAssignment_2();
@@ -22194,16 +22182,16 @@
 
 
     // $ANTLR start "rule__PerspectiveOrganization__Group__0"
-    // InternalPerspectiveDsl.g:6382:1: rule__PerspectiveOrganization__Group__0 : rule__PerspectiveOrganization__Group__0__Impl rule__PerspectiveOrganization__Group__1 ;
+    // InternalPerspectiveDsl.g:6363: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:6386:1: ( rule__PerspectiveOrganization__Group__0__Impl rule__PerspectiveOrganization__Group__1 )
-            // InternalPerspectiveDsl.g:6387:2: rule__PerspectiveOrganization__Group__0__Impl rule__PerspectiveOrganization__Group__1
+            // InternalPerspectiveDsl.g:6367:1: ( rule__PerspectiveOrganization__Group__0__Impl rule__PerspectiveOrganization__Group__1 )
+            // InternalPerspectiveDsl.g:6368:2: rule__PerspectiveOrganization__Group__0__Impl rule__PerspectiveOrganization__Group__1
             {
-            pushFollow(FOLLOW_31);
+            pushFollow(FOLLOW_30);
             rule__PerspectiveOrganization__Group__0__Impl();
 
             state._fsp--;
@@ -22232,23 +22220,23 @@
 
 
     // $ANTLR start "rule__PerspectiveOrganization__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6394:1: rule__PerspectiveOrganization__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6375:1: rule__PerspectiveOrganization__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveOrganization__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6398:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6399:1: ( () )
+            // InternalPerspectiveDsl.g:6379:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6380:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6399:1: ( () )
-            // InternalPerspectiveDsl.g:6400:2: ()
+            // InternalPerspectiveDsl.g:6380:1: ( () )
+            // InternalPerspectiveDsl.g:6381:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveOrganizationAccess().getPerspectiveOrganizationAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6401:2: ()
-            // InternalPerspectiveDsl.g:6401:3: 
+            // InternalPerspectiveDsl.g:6382:2: ()
+            // InternalPerspectiveDsl.g:6382:3: 
             {
             }
 
@@ -22273,14 +22261,14 @@
 
 
     // $ANTLR start "rule__PerspectiveOrganization__Group__1"
-    // InternalPerspectiveDsl.g:6409:1: rule__PerspectiveOrganization__Group__1 : rule__PerspectiveOrganization__Group__1__Impl rule__PerspectiveOrganization__Group__2 ;
+    // InternalPerspectiveDsl.g:6390: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:6413:1: ( rule__PerspectiveOrganization__Group__1__Impl rule__PerspectiveOrganization__Group__2 )
-            // InternalPerspectiveDsl.g:6414:2: rule__PerspectiveOrganization__Group__1__Impl rule__PerspectiveOrganization__Group__2
+            // InternalPerspectiveDsl.g:6394:1: ( rule__PerspectiveOrganization__Group__1__Impl rule__PerspectiveOrganization__Group__2 )
+            // InternalPerspectiveDsl.g:6395:2: rule__PerspectiveOrganization__Group__1__Impl rule__PerspectiveOrganization__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveOrganization__Group__1__Impl();
@@ -22311,22 +22299,22 @@
 
 
     // $ANTLR start "rule__PerspectiveOrganization__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6421:1: rule__PerspectiveOrganization__Group__1__Impl : ( 'organigram' ) ;
+    // InternalPerspectiveDsl.g:6402:1: rule__PerspectiveOrganization__Group__1__Impl : ( 'organigram' ) ;
     public final void rule__PerspectiveOrganization__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6425:1: ( ( 'organigram' ) )
-            // InternalPerspectiveDsl.g:6426:1: ( 'organigram' )
+            // InternalPerspectiveDsl.g:6406:1: ( ( 'organigram' ) )
+            // InternalPerspectiveDsl.g:6407:1: ( 'organigram' )
             {
-            // InternalPerspectiveDsl.g:6426:1: ( 'organigram' )
-            // InternalPerspectiveDsl.g:6427:2: 'organigram'
+            // InternalPerspectiveDsl.g:6407:1: ( 'organigram' )
+            // InternalPerspectiveDsl.g:6408:2: 'organigram'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveOrganizationAccess().getOrganigramKeyword_1()); 
             }
-            match(input,75,FOLLOW_2); if (state.failed) return ;
+            match(input,74,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveOrganizationAccess().getOrganigramKeyword_1()); 
             }
@@ -22352,14 +22340,14 @@
 
 
     // $ANTLR start "rule__PerspectiveOrganization__Group__2"
-    // InternalPerspectiveDsl.g:6436:1: rule__PerspectiveOrganization__Group__2 : rule__PerspectiveOrganization__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:6417: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:6440:1: ( rule__PerspectiveOrganization__Group__2__Impl )
-            // InternalPerspectiveDsl.g:6441:2: rule__PerspectiveOrganization__Group__2__Impl
+            // InternalPerspectiveDsl.g:6421:1: ( rule__PerspectiveOrganization__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6422:2: rule__PerspectiveOrganization__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveOrganization__Group__2__Impl();
@@ -22385,23 +22373,23 @@
 
 
     // $ANTLR start "rule__PerspectiveOrganization__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6447:1: rule__PerspectiveOrganization__Group__2__Impl : ( ( rule__PerspectiveOrganization__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:6428: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:6451:1: ( ( ( rule__PerspectiveOrganization__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:6452:1: ( ( rule__PerspectiveOrganization__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6432:1: ( ( ( rule__PerspectiveOrganization__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6433:1: ( ( rule__PerspectiveOrganization__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:6452:1: ( ( rule__PerspectiveOrganization__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:6453:2: ( rule__PerspectiveOrganization__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6433:1: ( ( rule__PerspectiveOrganization__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6434:2: ( rule__PerspectiveOrganization__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveOrganizationAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:6454:2: ( rule__PerspectiveOrganization__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:6454:3: rule__PerspectiveOrganization__RefAssignment_2
+            // InternalPerspectiveDsl.g:6435:2: ( rule__PerspectiveOrganization__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6435:3: rule__PerspectiveOrganization__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveOrganization__RefAssignment_2();
@@ -22436,16 +22424,16 @@
 
 
     // $ANTLR start "rule__PerspectiveTopology__Group__0"
-    // InternalPerspectiveDsl.g:6463:1: rule__PerspectiveTopology__Group__0 : rule__PerspectiveTopology__Group__0__Impl rule__PerspectiveTopology__Group__1 ;
+    // InternalPerspectiveDsl.g:6444: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:6467:1: ( rule__PerspectiveTopology__Group__0__Impl rule__PerspectiveTopology__Group__1 )
-            // InternalPerspectiveDsl.g:6468:2: rule__PerspectiveTopology__Group__0__Impl rule__PerspectiveTopology__Group__1
+            // InternalPerspectiveDsl.g:6448:1: ( rule__PerspectiveTopology__Group__0__Impl rule__PerspectiveTopology__Group__1 )
+            // InternalPerspectiveDsl.g:6449:2: rule__PerspectiveTopology__Group__0__Impl rule__PerspectiveTopology__Group__1
             {
-            pushFollow(FOLLOW_32);
+            pushFollow(FOLLOW_31);
             rule__PerspectiveTopology__Group__0__Impl();
 
             state._fsp--;
@@ -22474,23 +22462,23 @@
 
 
     // $ANTLR start "rule__PerspectiveTopology__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6475:1: rule__PerspectiveTopology__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6456:1: rule__PerspectiveTopology__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveTopology__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6479:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6480:1: ( () )
+            // InternalPerspectiveDsl.g:6460:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6461:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6480:1: ( () )
-            // InternalPerspectiveDsl.g:6481:2: ()
+            // InternalPerspectiveDsl.g:6461:1: ( () )
+            // InternalPerspectiveDsl.g:6462:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTopologyAccess().getPerspectiveTopologyAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6482:2: ()
-            // InternalPerspectiveDsl.g:6482:3: 
+            // InternalPerspectiveDsl.g:6463:2: ()
+            // InternalPerspectiveDsl.g:6463:3: 
             {
             }
 
@@ -22515,14 +22503,14 @@
 
 
     // $ANTLR start "rule__PerspectiveTopology__Group__1"
-    // InternalPerspectiveDsl.g:6490:1: rule__PerspectiveTopology__Group__1 : rule__PerspectiveTopology__Group__1__Impl rule__PerspectiveTopology__Group__2 ;
+    // InternalPerspectiveDsl.g:6471: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:6494:1: ( rule__PerspectiveTopology__Group__1__Impl rule__PerspectiveTopology__Group__2 )
-            // InternalPerspectiveDsl.g:6495:2: rule__PerspectiveTopology__Group__1__Impl rule__PerspectiveTopology__Group__2
+            // InternalPerspectiveDsl.g:6475:1: ( rule__PerspectiveTopology__Group__1__Impl rule__PerspectiveTopology__Group__2 )
+            // InternalPerspectiveDsl.g:6476:2: rule__PerspectiveTopology__Group__1__Impl rule__PerspectiveTopology__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveTopology__Group__1__Impl();
@@ -22553,22 +22541,22 @@
 
 
     // $ANTLR start "rule__PerspectiveTopology__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6502:1: rule__PerspectiveTopology__Group__1__Impl : ( 'topology' ) ;
+    // InternalPerspectiveDsl.g:6483:1: rule__PerspectiveTopology__Group__1__Impl : ( 'topology' ) ;
     public final void rule__PerspectiveTopology__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6506:1: ( ( 'topology' ) )
-            // InternalPerspectiveDsl.g:6507:1: ( 'topology' )
+            // InternalPerspectiveDsl.g:6487:1: ( ( 'topology' ) )
+            // InternalPerspectiveDsl.g:6488:1: ( 'topology' )
             {
-            // InternalPerspectiveDsl.g:6507:1: ( 'topology' )
-            // InternalPerspectiveDsl.g:6508:2: 'topology'
+            // InternalPerspectiveDsl.g:6488:1: ( 'topology' )
+            // InternalPerspectiveDsl.g:6489:2: 'topology'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTopologyAccess().getTopologyKeyword_1()); 
             }
-            match(input,76,FOLLOW_2); if (state.failed) return ;
+            match(input,75,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveTopologyAccess().getTopologyKeyword_1()); 
             }
@@ -22594,14 +22582,14 @@
 
 
     // $ANTLR start "rule__PerspectiveTopology__Group__2"
-    // InternalPerspectiveDsl.g:6517:1: rule__PerspectiveTopology__Group__2 : rule__PerspectiveTopology__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:6498: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:6521:1: ( rule__PerspectiveTopology__Group__2__Impl )
-            // InternalPerspectiveDsl.g:6522:2: rule__PerspectiveTopology__Group__2__Impl
+            // InternalPerspectiveDsl.g:6502:1: ( rule__PerspectiveTopology__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6503:2: rule__PerspectiveTopology__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveTopology__Group__2__Impl();
@@ -22627,23 +22615,23 @@
 
 
     // $ANTLR start "rule__PerspectiveTopology__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6528:1: rule__PerspectiveTopology__Group__2__Impl : ( ( rule__PerspectiveTopology__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:6509: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:6532:1: ( ( ( rule__PerspectiveTopology__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:6533:1: ( ( rule__PerspectiveTopology__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6513:1: ( ( ( rule__PerspectiveTopology__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6514:1: ( ( rule__PerspectiveTopology__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:6533:1: ( ( rule__PerspectiveTopology__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:6534:2: ( rule__PerspectiveTopology__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6514:1: ( ( rule__PerspectiveTopology__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6515:2: ( rule__PerspectiveTopology__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTopologyAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:6535:2: ( rule__PerspectiveTopology__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:6535:3: rule__PerspectiveTopology__RefAssignment_2
+            // InternalPerspectiveDsl.g:6516:2: ( rule__PerspectiveTopology__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6516:3: rule__PerspectiveTopology__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveTopology__RefAssignment_2();
@@ -22678,16 +22666,16 @@
 
 
     // $ANTLR start "rule__PerspectiveDialog__Group__0"
-    // InternalPerspectiveDsl.g:6544:1: rule__PerspectiveDialog__Group__0 : rule__PerspectiveDialog__Group__0__Impl rule__PerspectiveDialog__Group__1 ;
+    // InternalPerspectiveDsl.g:6525: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:6548:1: ( rule__PerspectiveDialog__Group__0__Impl rule__PerspectiveDialog__Group__1 )
-            // InternalPerspectiveDsl.g:6549:2: rule__PerspectiveDialog__Group__0__Impl rule__PerspectiveDialog__Group__1
+            // InternalPerspectiveDsl.g:6529:1: ( rule__PerspectiveDialog__Group__0__Impl rule__PerspectiveDialog__Group__1 )
+            // InternalPerspectiveDsl.g:6530:2: rule__PerspectiveDialog__Group__0__Impl rule__PerspectiveDialog__Group__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_32);
             rule__PerspectiveDialog__Group__0__Impl();
 
             state._fsp--;
@@ -22716,23 +22704,23 @@
 
 
     // $ANTLR start "rule__PerspectiveDialog__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6556:1: rule__PerspectiveDialog__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6537:1: rule__PerspectiveDialog__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveDialog__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6560:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6561:1: ( () )
+            // InternalPerspectiveDsl.g:6541:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6542:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6561:1: ( () )
-            // InternalPerspectiveDsl.g:6562:2: ()
+            // InternalPerspectiveDsl.g:6542:1: ( () )
+            // InternalPerspectiveDsl.g:6543:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDialogAccess().getPerspectiveDialogAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6563:2: ()
-            // InternalPerspectiveDsl.g:6563:3: 
+            // InternalPerspectiveDsl.g:6544:2: ()
+            // InternalPerspectiveDsl.g:6544:3: 
             {
             }
 
@@ -22757,14 +22745,14 @@
 
 
     // $ANTLR start "rule__PerspectiveDialog__Group__1"
-    // InternalPerspectiveDsl.g:6571:1: rule__PerspectiveDialog__Group__1 : rule__PerspectiveDialog__Group__1__Impl rule__PerspectiveDialog__Group__2 ;
+    // InternalPerspectiveDsl.g:6552: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:6575:1: ( rule__PerspectiveDialog__Group__1__Impl rule__PerspectiveDialog__Group__2 )
-            // InternalPerspectiveDsl.g:6576:2: rule__PerspectiveDialog__Group__1__Impl rule__PerspectiveDialog__Group__2
+            // InternalPerspectiveDsl.g:6556:1: ( rule__PerspectiveDialog__Group__1__Impl rule__PerspectiveDialog__Group__2 )
+            // InternalPerspectiveDsl.g:6557:2: rule__PerspectiveDialog__Group__1__Impl rule__PerspectiveDialog__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveDialog__Group__1__Impl();
@@ -22795,22 +22783,22 @@
 
 
     // $ANTLR start "rule__PerspectiveDialog__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6583:1: rule__PerspectiveDialog__Group__1__Impl : ( 'dialog' ) ;
+    // InternalPerspectiveDsl.g:6564:1: rule__PerspectiveDialog__Group__1__Impl : ( 'dialog' ) ;
     public final void rule__PerspectiveDialog__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6587:1: ( ( 'dialog' ) )
-            // InternalPerspectiveDsl.g:6588:1: ( 'dialog' )
+            // InternalPerspectiveDsl.g:6568:1: ( ( 'dialog' ) )
+            // InternalPerspectiveDsl.g:6569:1: ( 'dialog' )
             {
-            // InternalPerspectiveDsl.g:6588:1: ( 'dialog' )
-            // InternalPerspectiveDsl.g:6589:2: 'dialog'
+            // InternalPerspectiveDsl.g:6569:1: ( 'dialog' )
+            // InternalPerspectiveDsl.g:6570:2: 'dialog'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDialogAccess().getDialogKeyword_1()); 
             }
-            match(input,77,FOLLOW_2); if (state.failed) return ;
+            match(input,76,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveDialogAccess().getDialogKeyword_1()); 
             }
@@ -22836,14 +22824,14 @@
 
 
     // $ANTLR start "rule__PerspectiveDialog__Group__2"
-    // InternalPerspectiveDsl.g:6598:1: rule__PerspectiveDialog__Group__2 : rule__PerspectiveDialog__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:6579: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:6602:1: ( rule__PerspectiveDialog__Group__2__Impl )
-            // InternalPerspectiveDsl.g:6603:2: rule__PerspectiveDialog__Group__2__Impl
+            // InternalPerspectiveDsl.g:6583:1: ( rule__PerspectiveDialog__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6584:2: rule__PerspectiveDialog__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveDialog__Group__2__Impl();
@@ -22869,23 +22857,23 @@
 
 
     // $ANTLR start "rule__PerspectiveDialog__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6609:1: rule__PerspectiveDialog__Group__2__Impl : ( ( rule__PerspectiveDialog__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:6590: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:6613:1: ( ( ( rule__PerspectiveDialog__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:6614:1: ( ( rule__PerspectiveDialog__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6594:1: ( ( ( rule__PerspectiveDialog__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6595:1: ( ( rule__PerspectiveDialog__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:6614:1: ( ( rule__PerspectiveDialog__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:6615:2: ( rule__PerspectiveDialog__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6595:1: ( ( rule__PerspectiveDialog__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6596:2: ( rule__PerspectiveDialog__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDialogAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:6616:2: ( rule__PerspectiveDialog__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:6616:3: rule__PerspectiveDialog__RefAssignment_2
+            // InternalPerspectiveDsl.g:6597:2: ( rule__PerspectiveDialog__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6597:3: rule__PerspectiveDialog__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveDialog__RefAssignment_2();
@@ -22919,17 +22907,170 @@
     // $ANTLR end "rule__PerspectiveDialog__Group__2__Impl"
 
 
+    // $ANTLR start "rule__PerspectiveBPMN__Group__0"
+    // InternalPerspectiveDsl.g:6606: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:6610:1: ( rule__PerspectiveBPMN__Group__0__Impl rule__PerspectiveBPMN__Group__1 )
+            // InternalPerspectiveDsl.g:6611:2: rule__PerspectiveBPMN__Group__0__Impl rule__PerspectiveBPMN__Group__1
+            {
+            pushFollow(FOLLOW_33);
+            rule__PerspectiveBPMN__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveBPMN__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveBPMN__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveBPMN__Group__0__Impl"
+    // InternalPerspectiveDsl.g:6618:1: rule__PerspectiveBPMN__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveBPMN__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6622:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6623:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:6623:1: ( () )
+            // InternalPerspectiveDsl.g:6624:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBPMNAccess().getPerspectiveBPMNAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:6625:2: ()
+            // InternalPerspectiveDsl.g:6625:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBPMNAccess().getPerspectiveBPMNAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveBPMN__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveBPMN__Group__1"
+    // InternalPerspectiveDsl.g:6633: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:6637:1: ( rule__PerspectiveBPMN__Group__1__Impl )
+            // InternalPerspectiveDsl.g:6638:2: rule__PerspectiveBPMN__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveBPMN__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveBPMN__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveBPMN__Group__1__Impl"
+    // InternalPerspectiveDsl.g:6644:1: rule__PerspectiveBPMN__Group__1__Impl : ( 'bpmn' ) ;
+    public final void rule__PerspectiveBPMN__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6648:1: ( ( 'bpmn' ) )
+            // InternalPerspectiveDsl.g:6649:1: ( 'bpmn' )
+            {
+            // InternalPerspectiveDsl.g:6649:1: ( 'bpmn' )
+            // InternalPerspectiveDsl.g:6650:2: 'bpmn'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1()); 
+            }
+            match(input,77,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveBPMN__Group__1__Impl"
+
+
     // $ANTLR start "rule__PerspectiveKanban__Group__0"
-    // InternalPerspectiveDsl.g:6625:1: rule__PerspectiveKanban__Group__0 : rule__PerspectiveKanban__Group__0__Impl rule__PerspectiveKanban__Group__1 ;
+    // InternalPerspectiveDsl.g:6660: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:6629:1: ( rule__PerspectiveKanban__Group__0__Impl rule__PerspectiveKanban__Group__1 )
-            // InternalPerspectiveDsl.g:6630:2: rule__PerspectiveKanban__Group__0__Impl rule__PerspectiveKanban__Group__1
+            // InternalPerspectiveDsl.g:6664:1: ( rule__PerspectiveKanban__Group__0__Impl rule__PerspectiveKanban__Group__1 )
+            // InternalPerspectiveDsl.g:6665:2: rule__PerspectiveKanban__Group__0__Impl rule__PerspectiveKanban__Group__1
             {
-            pushFollow(FOLLOW_24);
+            pushFollow(FOLLOW_34);
             rule__PerspectiveKanban__Group__0__Impl();
 
             state._fsp--;
@@ -22958,23 +23099,23 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6637:1: rule__PerspectiveKanban__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6672:1: rule__PerspectiveKanban__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveKanban__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6641:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6642:1: ( () )
+            // InternalPerspectiveDsl.g:6676:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6677:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6642:1: ( () )
-            // InternalPerspectiveDsl.g:6643:2: ()
+            // InternalPerspectiveDsl.g:6677:1: ( () )
+            // InternalPerspectiveDsl.g:6678:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getPerspectiveKanbanAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6644:2: ()
-            // InternalPerspectiveDsl.g:6644:3: 
+            // InternalPerspectiveDsl.g:6679:2: ()
+            // InternalPerspectiveDsl.g:6679:3: 
             {
             }
 
@@ -22999,16 +23140,16 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__1"
-    // InternalPerspectiveDsl.g:6652:1: rule__PerspectiveKanban__Group__1 : rule__PerspectiveKanban__Group__1__Impl rule__PerspectiveKanban__Group__2 ;
+    // InternalPerspectiveDsl.g:6687: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:6656:1: ( rule__PerspectiveKanban__Group__1__Impl rule__PerspectiveKanban__Group__2 )
-            // InternalPerspectiveDsl.g:6657:2: rule__PerspectiveKanban__Group__1__Impl rule__PerspectiveKanban__Group__2
+            // InternalPerspectiveDsl.g:6691:1: ( rule__PerspectiveKanban__Group__1__Impl rule__PerspectiveKanban__Group__2 )
+            // InternalPerspectiveDsl.g:6692:2: rule__PerspectiveKanban__Group__1__Impl rule__PerspectiveKanban__Group__2
             {
-            pushFollow(FOLLOW_34);
+            pushFollow(FOLLOW_35);
             rule__PerspectiveKanban__Group__1__Impl();
 
             state._fsp--;
@@ -23037,17 +23178,17 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6664:1: rule__PerspectiveKanban__Group__1__Impl : ( 'kanban' ) ;
+    // InternalPerspectiveDsl.g:6699:1: rule__PerspectiveKanban__Group__1__Impl : ( 'kanban' ) ;
     public final void rule__PerspectiveKanban__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6668:1: ( ( 'kanban' ) )
-            // InternalPerspectiveDsl.g:6669:1: ( 'kanban' )
+            // InternalPerspectiveDsl.g:6703:1: ( ( 'kanban' ) )
+            // InternalPerspectiveDsl.g:6704:1: ( 'kanban' )
             {
-            // InternalPerspectiveDsl.g:6669:1: ( 'kanban' )
-            // InternalPerspectiveDsl.g:6670:2: 'kanban'
+            // InternalPerspectiveDsl.g:6704:1: ( 'kanban' )
+            // InternalPerspectiveDsl.g:6705:2: 'kanban'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getKanbanKeyword_1()); 
@@ -23078,14 +23219,14 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__2"
-    // InternalPerspectiveDsl.g:6679:1: rule__PerspectiveKanban__Group__2 : rule__PerspectiveKanban__Group__2__Impl rule__PerspectiveKanban__Group__3 ;
+    // InternalPerspectiveDsl.g:6714: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:6683:1: ( rule__PerspectiveKanban__Group__2__Impl rule__PerspectiveKanban__Group__3 )
-            // InternalPerspectiveDsl.g:6684:2: rule__PerspectiveKanban__Group__2__Impl rule__PerspectiveKanban__Group__3
+            // InternalPerspectiveDsl.g:6718:1: ( rule__PerspectiveKanban__Group__2__Impl rule__PerspectiveKanban__Group__3 )
+            // InternalPerspectiveDsl.g:6719:2: rule__PerspectiveKanban__Group__2__Impl rule__PerspectiveKanban__Group__3
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveKanban__Group__2__Impl();
@@ -23116,17 +23257,17 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6691:1: rule__PerspectiveKanban__Group__2__Impl : ( 'of' ) ;
+    // InternalPerspectiveDsl.g:6726:1: rule__PerspectiveKanban__Group__2__Impl : ( 'of' ) ;
     public final void rule__PerspectiveKanban__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6695:1: ( ( 'of' ) )
-            // InternalPerspectiveDsl.g:6696:1: ( 'of' )
+            // InternalPerspectiveDsl.g:6730:1: ( ( 'of' ) )
+            // InternalPerspectiveDsl.g:6731:1: ( 'of' )
             {
-            // InternalPerspectiveDsl.g:6696:1: ( 'of' )
-            // InternalPerspectiveDsl.g:6697:2: 'of'
+            // InternalPerspectiveDsl.g:6731:1: ( 'of' )
+            // InternalPerspectiveDsl.g:6732:2: 'of'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getOfKeyword_2()); 
@@ -23157,16 +23298,16 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__3"
-    // InternalPerspectiveDsl.g:6706:1: rule__PerspectiveKanban__Group__3 : rule__PerspectiveKanban__Group__3__Impl rule__PerspectiveKanban__Group__4 ;
+    // InternalPerspectiveDsl.g:6741: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:6710:1: ( rule__PerspectiveKanban__Group__3__Impl rule__PerspectiveKanban__Group__4 )
-            // InternalPerspectiveDsl.g:6711:2: rule__PerspectiveKanban__Group__3__Impl rule__PerspectiveKanban__Group__4
+            // InternalPerspectiveDsl.g:6745:1: ( rule__PerspectiveKanban__Group__3__Impl rule__PerspectiveKanban__Group__4 )
+            // InternalPerspectiveDsl.g:6746:2: rule__PerspectiveKanban__Group__3__Impl rule__PerspectiveKanban__Group__4
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_36);
             rule__PerspectiveKanban__Group__3__Impl();
 
             state._fsp--;
@@ -23195,23 +23336,23 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__3__Impl"
-    // InternalPerspectiveDsl.g:6718:1: rule__PerspectiveKanban__Group__3__Impl : ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) ) ;
+    // InternalPerspectiveDsl.g:6753: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:6722:1: ( ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) ) )
-            // InternalPerspectiveDsl.g:6723:1: ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) )
+            // InternalPerspectiveDsl.g:6757:1: ( ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:6758:1: ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) )
             {
-            // InternalPerspectiveDsl.g:6723:1: ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) )
-            // InternalPerspectiveDsl.g:6724:2: ( rule__PerspectiveKanban__DtoRefAssignment_3 )
+            // InternalPerspectiveDsl.g:6758:1: ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) )
+            // InternalPerspectiveDsl.g:6759:2: ( rule__PerspectiveKanban__DtoRefAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getDtoRefAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:6725:2: ( rule__PerspectiveKanban__DtoRefAssignment_3 )
-            // InternalPerspectiveDsl.g:6725:3: rule__PerspectiveKanban__DtoRefAssignment_3
+            // InternalPerspectiveDsl.g:6760:2: ( rule__PerspectiveKanban__DtoRefAssignment_3 )
+            // InternalPerspectiveDsl.g:6760:3: rule__PerspectiveKanban__DtoRefAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveKanban__DtoRefAssignment_3();
@@ -23246,14 +23387,14 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__4"
-    // InternalPerspectiveDsl.g:6733:1: rule__PerspectiveKanban__Group__4 : rule__PerspectiveKanban__Group__4__Impl rule__PerspectiveKanban__Group__5 ;
+    // InternalPerspectiveDsl.g:6768: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:6737:1: ( rule__PerspectiveKanban__Group__4__Impl rule__PerspectiveKanban__Group__5 )
-            // InternalPerspectiveDsl.g:6738:2: rule__PerspectiveKanban__Group__4__Impl rule__PerspectiveKanban__Group__5
+            // InternalPerspectiveDsl.g:6772:1: ( rule__PerspectiveKanban__Group__4__Impl rule__PerspectiveKanban__Group__5 )
+            // InternalPerspectiveDsl.g:6773:2: rule__PerspectiveKanban__Group__4__Impl rule__PerspectiveKanban__Group__5
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveKanban__Group__4__Impl();
@@ -23284,17 +23425,17 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__4__Impl"
-    // InternalPerspectiveDsl.g:6745:1: rule__PerspectiveKanban__Group__4__Impl : ( 'card' ) ;
+    // InternalPerspectiveDsl.g:6780:1: rule__PerspectiveKanban__Group__4__Impl : ( 'card' ) ;
     public final void rule__PerspectiveKanban__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6749:1: ( ( 'card' ) )
-            // InternalPerspectiveDsl.g:6750:1: ( 'card' )
+            // InternalPerspectiveDsl.g:6784:1: ( ( 'card' ) )
+            // InternalPerspectiveDsl.g:6785:1: ( 'card' )
             {
-            // InternalPerspectiveDsl.g:6750:1: ( 'card' )
-            // InternalPerspectiveDsl.g:6751:2: 'card'
+            // InternalPerspectiveDsl.g:6785:1: ( 'card' )
+            // InternalPerspectiveDsl.g:6786:2: 'card'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getCardKeyword_4()); 
@@ -23325,16 +23466,16 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__5"
-    // InternalPerspectiveDsl.g:6760:1: rule__PerspectiveKanban__Group__5 : rule__PerspectiveKanban__Group__5__Impl rule__PerspectiveKanban__Group__6 ;
+    // InternalPerspectiveDsl.g:6795: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:6764:1: ( rule__PerspectiveKanban__Group__5__Impl rule__PerspectiveKanban__Group__6 )
-            // InternalPerspectiveDsl.g:6765:2: rule__PerspectiveKanban__Group__5__Impl rule__PerspectiveKanban__Group__6
+            // InternalPerspectiveDsl.g:6799:1: ( rule__PerspectiveKanban__Group__5__Impl rule__PerspectiveKanban__Group__6 )
+            // InternalPerspectiveDsl.g:6800:2: rule__PerspectiveKanban__Group__5__Impl rule__PerspectiveKanban__Group__6
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_32);
             rule__PerspectiveKanban__Group__5__Impl();
 
             state._fsp--;
@@ -23363,23 +23504,23 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__5__Impl"
-    // InternalPerspectiveDsl.g:6772:1: rule__PerspectiveKanban__Group__5__Impl : ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) ) ;
+    // InternalPerspectiveDsl.g:6807: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:6776:1: ( ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) ) )
-            // InternalPerspectiveDsl.g:6777:1: ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) )
+            // InternalPerspectiveDsl.g:6811:1: ( ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) ) )
+            // InternalPerspectiveDsl.g:6812:1: ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) )
             {
-            // InternalPerspectiveDsl.g:6777:1: ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) )
-            // InternalPerspectiveDsl.g:6778:2: ( rule__PerspectiveKanban__CardRefAssignment_5 )
+            // InternalPerspectiveDsl.g:6812:1: ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) )
+            // InternalPerspectiveDsl.g:6813:2: ( rule__PerspectiveKanban__CardRefAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getCardRefAssignment_5()); 
             }
-            // InternalPerspectiveDsl.g:6779:2: ( rule__PerspectiveKanban__CardRefAssignment_5 )
-            // InternalPerspectiveDsl.g:6779:3: rule__PerspectiveKanban__CardRefAssignment_5
+            // InternalPerspectiveDsl.g:6814:2: ( rule__PerspectiveKanban__CardRefAssignment_5 )
+            // InternalPerspectiveDsl.g:6814:3: rule__PerspectiveKanban__CardRefAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveKanban__CardRefAssignment_5();
@@ -23414,14 +23555,14 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__6"
-    // InternalPerspectiveDsl.g:6787:1: rule__PerspectiveKanban__Group__6 : rule__PerspectiveKanban__Group__6__Impl rule__PerspectiveKanban__Group__7 ;
+    // InternalPerspectiveDsl.g:6822: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:6791:1: ( rule__PerspectiveKanban__Group__6__Impl rule__PerspectiveKanban__Group__7 )
-            // InternalPerspectiveDsl.g:6792:2: rule__PerspectiveKanban__Group__6__Impl rule__PerspectiveKanban__Group__7
+            // InternalPerspectiveDsl.g:6826:1: ( rule__PerspectiveKanban__Group__6__Impl rule__PerspectiveKanban__Group__7 )
+            // InternalPerspectiveDsl.g:6827:2: rule__PerspectiveKanban__Group__6__Impl rule__PerspectiveKanban__Group__7
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveKanban__Group__6__Impl();
@@ -23452,22 +23593,22 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__6__Impl"
-    // InternalPerspectiveDsl.g:6799:1: rule__PerspectiveKanban__Group__6__Impl : ( 'dialog' ) ;
+    // InternalPerspectiveDsl.g:6834:1: rule__PerspectiveKanban__Group__6__Impl : ( 'dialog' ) ;
     public final void rule__PerspectiveKanban__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6803:1: ( ( 'dialog' ) )
-            // InternalPerspectiveDsl.g:6804:1: ( 'dialog' )
+            // InternalPerspectiveDsl.g:6838:1: ( ( 'dialog' ) )
+            // InternalPerspectiveDsl.g:6839:1: ( 'dialog' )
             {
-            // InternalPerspectiveDsl.g:6804:1: ( 'dialog' )
-            // InternalPerspectiveDsl.g:6805:2: 'dialog'
+            // InternalPerspectiveDsl.g:6839:1: ( 'dialog' )
+            // InternalPerspectiveDsl.g:6840:2: 'dialog'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getDialogKeyword_6()); 
             }
-            match(input,77,FOLLOW_2); if (state.failed) return ;
+            match(input,76,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveKanbanAccess().getDialogKeyword_6()); 
             }
@@ -23493,14 +23634,14 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__7"
-    // InternalPerspectiveDsl.g:6814:1: rule__PerspectiveKanban__Group__7 : rule__PerspectiveKanban__Group__7__Impl ;
+    // InternalPerspectiveDsl.g:6849: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:6818:1: ( rule__PerspectiveKanban__Group__7__Impl )
-            // InternalPerspectiveDsl.g:6819:2: rule__PerspectiveKanban__Group__7__Impl
+            // InternalPerspectiveDsl.g:6853:1: ( rule__PerspectiveKanban__Group__7__Impl )
+            // InternalPerspectiveDsl.g:6854:2: rule__PerspectiveKanban__Group__7__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveKanban__Group__7__Impl();
@@ -23526,23 +23667,23 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__7__Impl"
-    // InternalPerspectiveDsl.g:6825:1: rule__PerspectiveKanban__Group__7__Impl : ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) ) ;
+    // InternalPerspectiveDsl.g:6860: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:6829:1: ( ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) ) )
-            // InternalPerspectiveDsl.g:6830:1: ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) )
+            // InternalPerspectiveDsl.g:6864:1: ( ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) ) )
+            // InternalPerspectiveDsl.g:6865:1: ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) )
             {
-            // InternalPerspectiveDsl.g:6830:1: ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) )
-            // InternalPerspectiveDsl.g:6831:2: ( rule__PerspectiveKanban__DialogRefAssignment_7 )
+            // InternalPerspectiveDsl.g:6865:1: ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) )
+            // InternalPerspectiveDsl.g:6866:2: ( rule__PerspectiveKanban__DialogRefAssignment_7 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getDialogRefAssignment_7()); 
             }
-            // InternalPerspectiveDsl.g:6832:2: ( rule__PerspectiveKanban__DialogRefAssignment_7 )
-            // InternalPerspectiveDsl.g:6832:3: rule__PerspectiveKanban__DialogRefAssignment_7
+            // InternalPerspectiveDsl.g:6867:2: ( rule__PerspectiveKanban__DialogRefAssignment_7 )
+            // InternalPerspectiveDsl.g:6867:3: rule__PerspectiveKanban__DialogRefAssignment_7
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveKanban__DialogRefAssignment_7();
@@ -23577,16 +23718,16 @@
 
 
     // $ANTLR start "rule__PerspectiveWelcome__Group__0"
-    // InternalPerspectiveDsl.g:6841:1: rule__PerspectiveWelcome__Group__0 : rule__PerspectiveWelcome__Group__0__Impl rule__PerspectiveWelcome__Group__1 ;
+    // InternalPerspectiveDsl.g:6876: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:6845:1: ( rule__PerspectiveWelcome__Group__0__Impl rule__PerspectiveWelcome__Group__1 )
-            // InternalPerspectiveDsl.g:6846:2: rule__PerspectiveWelcome__Group__0__Impl rule__PerspectiveWelcome__Group__1
+            // InternalPerspectiveDsl.g:6880:1: ( rule__PerspectiveWelcome__Group__0__Impl rule__PerspectiveWelcome__Group__1 )
+            // InternalPerspectiveDsl.g:6881:2: rule__PerspectiveWelcome__Group__0__Impl rule__PerspectiveWelcome__Group__1
             {
-            pushFollow(FOLLOW_36);
+            pushFollow(FOLLOW_37);
             rule__PerspectiveWelcome__Group__0__Impl();
 
             state._fsp--;
@@ -23615,23 +23756,23 @@
 
 
     // $ANTLR start "rule__PerspectiveWelcome__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6853:1: rule__PerspectiveWelcome__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6888:1: rule__PerspectiveWelcome__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveWelcome__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6857:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6858:1: ( () )
+            // InternalPerspectiveDsl.g:6892:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6893:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6858:1: ( () )
-            // InternalPerspectiveDsl.g:6859:2: ()
+            // InternalPerspectiveDsl.g:6893:1: ( () )
+            // InternalPerspectiveDsl.g:6894:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveWelcomeAccess().getPerspectiveWelcomeAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6860:2: ()
-            // InternalPerspectiveDsl.g:6860:3: 
+            // InternalPerspectiveDsl.g:6895:2: ()
+            // InternalPerspectiveDsl.g:6895:3: 
             {
             }
 
@@ -23656,14 +23797,14 @@
 
 
     // $ANTLR start "rule__PerspectiveWelcome__Group__1"
-    // InternalPerspectiveDsl.g:6868:1: rule__PerspectiveWelcome__Group__1 : rule__PerspectiveWelcome__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:6903: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:6872:1: ( rule__PerspectiveWelcome__Group__1__Impl )
-            // InternalPerspectiveDsl.g:6873:2: rule__PerspectiveWelcome__Group__1__Impl
+            // InternalPerspectiveDsl.g:6907:1: ( rule__PerspectiveWelcome__Group__1__Impl )
+            // InternalPerspectiveDsl.g:6908:2: rule__PerspectiveWelcome__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveWelcome__Group__1__Impl();
@@ -23689,17 +23830,17 @@
 
 
     // $ANTLR start "rule__PerspectiveWelcome__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6879:1: rule__PerspectiveWelcome__Group__1__Impl : ( 'welcome' ) ;
+    // InternalPerspectiveDsl.g:6914:1: rule__PerspectiveWelcome__Group__1__Impl : ( 'welcome' ) ;
     public final void rule__PerspectiveWelcome__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6883:1: ( ( 'welcome' ) )
-            // InternalPerspectiveDsl.g:6884:1: ( 'welcome' )
+            // InternalPerspectiveDsl.g:6918:1: ( ( 'welcome' ) )
+            // InternalPerspectiveDsl.g:6919:1: ( 'welcome' )
             {
-            // InternalPerspectiveDsl.g:6884:1: ( 'welcome' )
-            // InternalPerspectiveDsl.g:6885:2: 'welcome'
+            // InternalPerspectiveDsl.g:6919:1: ( 'welcome' )
+            // InternalPerspectiveDsl.g:6920:2: 'welcome'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveWelcomeAccess().getWelcomeKeyword_1()); 
@@ -23730,16 +23871,16 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__0"
-    // InternalPerspectiveDsl.g:6895:1: rule__PerspectiveSearch__Group__0 : rule__PerspectiveSearch__Group__0__Impl rule__PerspectiveSearch__Group__1 ;
+    // InternalPerspectiveDsl.g:6930: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:6899:1: ( rule__PerspectiveSearch__Group__0__Impl rule__PerspectiveSearch__Group__1 )
-            // InternalPerspectiveDsl.g:6900:2: rule__PerspectiveSearch__Group__0__Impl rule__PerspectiveSearch__Group__1
+            // InternalPerspectiveDsl.g:6934:1: ( rule__PerspectiveSearch__Group__0__Impl rule__PerspectiveSearch__Group__1 )
+            // InternalPerspectiveDsl.g:6935:2: rule__PerspectiveSearch__Group__0__Impl rule__PerspectiveSearch__Group__1
             {
-            pushFollow(FOLLOW_37);
+            pushFollow(FOLLOW_38);
             rule__PerspectiveSearch__Group__0__Impl();
 
             state._fsp--;
@@ -23768,23 +23909,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6907:1: rule__PerspectiveSearch__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6942:1: rule__PerspectiveSearch__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveSearch__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6911:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6912:1: ( () )
+            // InternalPerspectiveDsl.g:6946:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6947:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6912:1: ( () )
-            // InternalPerspectiveDsl.g:6913:2: ()
+            // InternalPerspectiveDsl.g:6947:1: ( () )
+            // InternalPerspectiveDsl.g:6948:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getPerspectiveSearchAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6914:2: ()
-            // InternalPerspectiveDsl.g:6914:3: 
+            // InternalPerspectiveDsl.g:6949:2: ()
+            // InternalPerspectiveDsl.g:6949:3: 
             {
             }
 
@@ -23809,16 +23950,16 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__1"
-    // InternalPerspectiveDsl.g:6922:1: rule__PerspectiveSearch__Group__1 : rule__PerspectiveSearch__Group__1__Impl rule__PerspectiveSearch__Group__2 ;
+    // InternalPerspectiveDsl.g:6957: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:6926:1: ( rule__PerspectiveSearch__Group__1__Impl rule__PerspectiveSearch__Group__2 )
-            // InternalPerspectiveDsl.g:6927:2: rule__PerspectiveSearch__Group__1__Impl rule__PerspectiveSearch__Group__2
+            // InternalPerspectiveDsl.g:6961:1: ( rule__PerspectiveSearch__Group__1__Impl rule__PerspectiveSearch__Group__2 )
+            // InternalPerspectiveDsl.g:6962:2: rule__PerspectiveSearch__Group__1__Impl rule__PerspectiveSearch__Group__2
             {
-            pushFollow(FOLLOW_38);
+            pushFollow(FOLLOW_39);
             rule__PerspectiveSearch__Group__1__Impl();
 
             state._fsp--;
@@ -23847,17 +23988,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6934:1: rule__PerspectiveSearch__Group__1__Impl : ( 'search' ) ;
+    // InternalPerspectiveDsl.g:6969:1: rule__PerspectiveSearch__Group__1__Impl : ( 'search' ) ;
     public final void rule__PerspectiveSearch__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6938:1: ( ( 'search' ) )
-            // InternalPerspectiveDsl.g:6939:1: ( 'search' )
+            // InternalPerspectiveDsl.g:6973:1: ( ( 'search' ) )
+            // InternalPerspectiveDsl.g:6974:1: ( 'search' )
             {
-            // InternalPerspectiveDsl.g:6939:1: ( 'search' )
-            // InternalPerspectiveDsl.g:6940:2: 'search'
+            // InternalPerspectiveDsl.g:6974:1: ( 'search' )
+            // InternalPerspectiveDsl.g:6975:2: 'search'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getSearchKeyword_1()); 
@@ -23888,14 +24029,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__2"
-    // InternalPerspectiveDsl.g:6949:1: rule__PerspectiveSearch__Group__2 : rule__PerspectiveSearch__Group__2__Impl rule__PerspectiveSearch__Group__3 ;
+    // InternalPerspectiveDsl.g:6984: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:6953:1: ( rule__PerspectiveSearch__Group__2__Impl rule__PerspectiveSearch__Group__3 )
-            // InternalPerspectiveDsl.g:6954:2: rule__PerspectiveSearch__Group__2__Impl rule__PerspectiveSearch__Group__3
+            // InternalPerspectiveDsl.g:6988:1: ( rule__PerspectiveSearch__Group__2__Impl rule__PerspectiveSearch__Group__3 )
+            // InternalPerspectiveDsl.g:6989:2: rule__PerspectiveSearch__Group__2__Impl rule__PerspectiveSearch__Group__3
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveSearch__Group__2__Impl();
@@ -23926,17 +24067,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6961:1: rule__PerspectiveSearch__Group__2__Impl : ( 'in' ) ;
+    // InternalPerspectiveDsl.g:6996:1: rule__PerspectiveSearch__Group__2__Impl : ( 'in' ) ;
     public final void rule__PerspectiveSearch__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6965:1: ( ( 'in' ) )
-            // InternalPerspectiveDsl.g:6966:1: ( 'in' )
+            // InternalPerspectiveDsl.g:7000:1: ( ( 'in' ) )
+            // InternalPerspectiveDsl.g:7001:1: ( 'in' )
             {
-            // InternalPerspectiveDsl.g:6966:1: ( 'in' )
-            // InternalPerspectiveDsl.g:6967:2: 'in'
+            // InternalPerspectiveDsl.g:7001:1: ( 'in' )
+            // InternalPerspectiveDsl.g:7002:2: 'in'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getInKeyword_2()); 
@@ -23967,16 +24108,16 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__3"
-    // InternalPerspectiveDsl.g:6976:1: rule__PerspectiveSearch__Group__3 : rule__PerspectiveSearch__Group__3__Impl rule__PerspectiveSearch__Group__4 ;
+    // InternalPerspectiveDsl.g:7011: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:6980:1: ( rule__PerspectiveSearch__Group__3__Impl rule__PerspectiveSearch__Group__4 )
-            // InternalPerspectiveDsl.g:6981:2: rule__PerspectiveSearch__Group__3__Impl rule__PerspectiveSearch__Group__4
+            // InternalPerspectiveDsl.g:7015:1: ( rule__PerspectiveSearch__Group__3__Impl rule__PerspectiveSearch__Group__4 )
+            // InternalPerspectiveDsl.g:7016:2: rule__PerspectiveSearch__Group__3__Impl rule__PerspectiveSearch__Group__4
             {
-            pushFollow(FOLLOW_39);
+            pushFollow(FOLLOW_40);
             rule__PerspectiveSearch__Group__3__Impl();
 
             state._fsp--;
@@ -24005,23 +24146,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__3__Impl"
-    // InternalPerspectiveDsl.g:6988:1: rule__PerspectiveSearch__Group__3__Impl : ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) ) ;
+    // InternalPerspectiveDsl.g:7023: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:6992:1: ( ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) ) )
-            // InternalPerspectiveDsl.g:6993:1: ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) )
+            // InternalPerspectiveDsl.g:7027:1: ( ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:7028:1: ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) )
             {
-            // InternalPerspectiveDsl.g:6993:1: ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) )
-            // InternalPerspectiveDsl.g:6994:2: ( rule__PerspectiveSearch__DtoRefAssignment_3 )
+            // InternalPerspectiveDsl.g:7028:1: ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) )
+            // InternalPerspectiveDsl.g:7029:2: ( rule__PerspectiveSearch__DtoRefAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getDtoRefAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:6995:2: ( rule__PerspectiveSearch__DtoRefAssignment_3 )
-            // InternalPerspectiveDsl.g:6995:3: rule__PerspectiveSearch__DtoRefAssignment_3
+            // InternalPerspectiveDsl.g:7030:2: ( rule__PerspectiveSearch__DtoRefAssignment_3 )
+            // InternalPerspectiveDsl.g:7030:3: rule__PerspectiveSearch__DtoRefAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__DtoRefAssignment_3();
@@ -24056,14 +24197,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__4"
-    // InternalPerspectiveDsl.g:7003:1: rule__PerspectiveSearch__Group__4 : rule__PerspectiveSearch__Group__4__Impl ;
+    // InternalPerspectiveDsl.g:7038: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:7007:1: ( rule__PerspectiveSearch__Group__4__Impl )
-            // InternalPerspectiveDsl.g:7008:2: rule__PerspectiveSearch__Group__4__Impl
+            // InternalPerspectiveDsl.g:7042:1: ( rule__PerspectiveSearch__Group__4__Impl )
+            // InternalPerspectiveDsl.g:7043:2: rule__PerspectiveSearch__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__Group__4__Impl();
@@ -24089,23 +24230,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__4__Impl"
-    // InternalPerspectiveDsl.g:7014:1: rule__PerspectiveSearch__Group__4__Impl : ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) ) ;
+    // InternalPerspectiveDsl.g:7049: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:7018:1: ( ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) ) )
-            // InternalPerspectiveDsl.g:7019:1: ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) )
+            // InternalPerspectiveDsl.g:7053:1: ( ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) ) )
+            // InternalPerspectiveDsl.g:7054:1: ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) )
             {
-            // InternalPerspectiveDsl.g:7019:1: ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) )
-            // InternalPerspectiveDsl.g:7020:2: ( rule__PerspectiveSearch__UnorderedGroup_4 )
+            // InternalPerspectiveDsl.g:7054:1: ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) )
+            // InternalPerspectiveDsl.g:7055:2: ( rule__PerspectiveSearch__UnorderedGroup_4 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4()); 
             }
-            // InternalPerspectiveDsl.g:7021:2: ( rule__PerspectiveSearch__UnorderedGroup_4 )
-            // InternalPerspectiveDsl.g:7021:3: rule__PerspectiveSearch__UnorderedGroup_4
+            // InternalPerspectiveDsl.g:7056:2: ( rule__PerspectiveSearch__UnorderedGroup_4 )
+            // InternalPerspectiveDsl.g:7056:3: rule__PerspectiveSearch__UnorderedGroup_4
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__UnorderedGroup_4();
@@ -24140,16 +24281,16 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_0__0"
-    // InternalPerspectiveDsl.g:7030:1: rule__PerspectiveSearch__Group_4_0__0 : rule__PerspectiveSearch__Group_4_0__0__Impl rule__PerspectiveSearch__Group_4_0__1 ;
+    // InternalPerspectiveDsl.g:7065: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:7034:1: ( rule__PerspectiveSearch__Group_4_0__0__Impl rule__PerspectiveSearch__Group_4_0__1 )
-            // InternalPerspectiveDsl.g:7035:2: rule__PerspectiveSearch__Group_4_0__0__Impl rule__PerspectiveSearch__Group_4_0__1
+            // InternalPerspectiveDsl.g:7069:1: ( rule__PerspectiveSearch__Group_4_0__0__Impl rule__PerspectiveSearch__Group_4_0__1 )
+            // InternalPerspectiveDsl.g:7070:2: rule__PerspectiveSearch__Group_4_0__0__Impl rule__PerspectiveSearch__Group_4_0__1
             {
-            pushFollow(FOLLOW_40);
+            pushFollow(FOLLOW_41);
             rule__PerspectiveSearch__Group_4_0__0__Impl();
 
             state._fsp--;
@@ -24178,17 +24319,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_0__0__Impl"
-    // InternalPerspectiveDsl.g:7042:1: rule__PerspectiveSearch__Group_4_0__0__Impl : ( 'depth' ) ;
+    // InternalPerspectiveDsl.g:7077: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:7046:1: ( ( 'depth' ) )
-            // InternalPerspectiveDsl.g:7047:1: ( 'depth' )
+            // InternalPerspectiveDsl.g:7081:1: ( ( 'depth' ) )
+            // InternalPerspectiveDsl.g:7082:1: ( 'depth' )
             {
-            // InternalPerspectiveDsl.g:7047:1: ( 'depth' )
-            // InternalPerspectiveDsl.g:7048:2: 'depth'
+            // InternalPerspectiveDsl.g:7082:1: ( 'depth' )
+            // InternalPerspectiveDsl.g:7083:2: 'depth'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getDepthKeyword_4_0_0()); 
@@ -24219,14 +24360,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_0__1"
-    // InternalPerspectiveDsl.g:7057:1: rule__PerspectiveSearch__Group_4_0__1 : rule__PerspectiveSearch__Group_4_0__1__Impl ;
+    // InternalPerspectiveDsl.g:7092: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:7061:1: ( rule__PerspectiveSearch__Group_4_0__1__Impl )
-            // InternalPerspectiveDsl.g:7062:2: rule__PerspectiveSearch__Group_4_0__1__Impl
+            // InternalPerspectiveDsl.g:7096:1: ( rule__PerspectiveSearch__Group_4_0__1__Impl )
+            // InternalPerspectiveDsl.g:7097:2: rule__PerspectiveSearch__Group_4_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__Group_4_0__1__Impl();
@@ -24252,23 +24393,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_0__1__Impl"
-    // InternalPerspectiveDsl.g:7068:1: rule__PerspectiveSearch__Group_4_0__1__Impl : ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:7103: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:7072:1: ( ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) ) )
-            // InternalPerspectiveDsl.g:7073:1: ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) )
+            // InternalPerspectiveDsl.g:7107:1: ( ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) ) )
+            // InternalPerspectiveDsl.g:7108:1: ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:7073:1: ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) )
-            // InternalPerspectiveDsl.g:7074:2: ( rule__PerspectiveSearch__DepthAssignment_4_0_1 )
+            // InternalPerspectiveDsl.g:7108:1: ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) )
+            // InternalPerspectiveDsl.g:7109:2: ( rule__PerspectiveSearch__DepthAssignment_4_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getDepthAssignment_4_0_1()); 
             }
-            // InternalPerspectiveDsl.g:7075:2: ( rule__PerspectiveSearch__DepthAssignment_4_0_1 )
-            // InternalPerspectiveDsl.g:7075:3: rule__PerspectiveSearch__DepthAssignment_4_0_1
+            // InternalPerspectiveDsl.g:7110:2: ( rule__PerspectiveSearch__DepthAssignment_4_0_1 )
+            // InternalPerspectiveDsl.g:7110:3: rule__PerspectiveSearch__DepthAssignment_4_0_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__DepthAssignment_4_0_1();
@@ -24303,16 +24444,16 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_1__0"
-    // InternalPerspectiveDsl.g:7084:1: rule__PerspectiveSearch__Group_4_1__0 : rule__PerspectiveSearch__Group_4_1__0__Impl rule__PerspectiveSearch__Group_4_1__1 ;
+    // InternalPerspectiveDsl.g:7119: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:7088:1: ( rule__PerspectiveSearch__Group_4_1__0__Impl rule__PerspectiveSearch__Group_4_1__1 )
-            // InternalPerspectiveDsl.g:7089:2: rule__PerspectiveSearch__Group_4_1__0__Impl rule__PerspectiveSearch__Group_4_1__1
+            // InternalPerspectiveDsl.g:7123:1: ( rule__PerspectiveSearch__Group_4_1__0__Impl rule__PerspectiveSearch__Group_4_1__1 )
+            // InternalPerspectiveDsl.g:7124:2: rule__PerspectiveSearch__Group_4_1__0__Impl rule__PerspectiveSearch__Group_4_1__1
             {
-            pushFollow(FOLLOW_40);
+            pushFollow(FOLLOW_41);
             rule__PerspectiveSearch__Group_4_1__0__Impl();
 
             state._fsp--;
@@ -24341,17 +24482,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_1__0__Impl"
-    // InternalPerspectiveDsl.g:7096:1: rule__PerspectiveSearch__Group_4_1__0__Impl : ( 'filterColumns' ) ;
+    // InternalPerspectiveDsl.g:7131: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:7100:1: ( ( 'filterColumns' ) )
-            // InternalPerspectiveDsl.g:7101:1: ( 'filterColumns' )
+            // InternalPerspectiveDsl.g:7135:1: ( ( 'filterColumns' ) )
+            // InternalPerspectiveDsl.g:7136:1: ( 'filterColumns' )
             {
-            // InternalPerspectiveDsl.g:7101:1: ( 'filterColumns' )
-            // InternalPerspectiveDsl.g:7102:2: 'filterColumns'
+            // InternalPerspectiveDsl.g:7136:1: ( 'filterColumns' )
+            // InternalPerspectiveDsl.g:7137:2: 'filterColumns'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getFilterColumnsKeyword_4_1_0()); 
@@ -24382,14 +24523,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_1__1"
-    // InternalPerspectiveDsl.g:7111:1: rule__PerspectiveSearch__Group_4_1__1 : rule__PerspectiveSearch__Group_4_1__1__Impl ;
+    // InternalPerspectiveDsl.g:7146: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:7115:1: ( rule__PerspectiveSearch__Group_4_1__1__Impl )
-            // InternalPerspectiveDsl.g:7116:2: rule__PerspectiveSearch__Group_4_1__1__Impl
+            // InternalPerspectiveDsl.g:7150:1: ( rule__PerspectiveSearch__Group_4_1__1__Impl )
+            // InternalPerspectiveDsl.g:7151:2: rule__PerspectiveSearch__Group_4_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__Group_4_1__1__Impl();
@@ -24415,23 +24556,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_1__1__Impl"
-    // InternalPerspectiveDsl.g:7122:1: rule__PerspectiveSearch__Group_4_1__1__Impl : ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:7157: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:7126:1: ( ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) ) )
-            // InternalPerspectiveDsl.g:7127:1: ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) )
+            // InternalPerspectiveDsl.g:7161:1: ( ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) ) )
+            // InternalPerspectiveDsl.g:7162:1: ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:7127:1: ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) )
-            // InternalPerspectiveDsl.g:7128:2: ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 )
+            // InternalPerspectiveDsl.g:7162:1: ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) )
+            // InternalPerspectiveDsl.g:7163:2: ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getFilterColsAssignment_4_1_1()); 
             }
-            // InternalPerspectiveDsl.g:7129:2: ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 )
-            // InternalPerspectiveDsl.g:7129:3: rule__PerspectiveSearch__FilterColsAssignment_4_1_1
+            // InternalPerspectiveDsl.g:7164:2: ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 )
+            // InternalPerspectiveDsl.g:7164:3: rule__PerspectiveSearch__FilterColsAssignment_4_1_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__FilterColsAssignment_4_1_1();
@@ -24466,16 +24607,16 @@
 
 
     // $ANTLR start "rule__PerspectiveDataInterchange__Group__0"
-    // InternalPerspectiveDsl.g:7138:1: rule__PerspectiveDataInterchange__Group__0 : rule__PerspectiveDataInterchange__Group__0__Impl rule__PerspectiveDataInterchange__Group__1 ;
+    // InternalPerspectiveDsl.g:7173: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:7142:1: ( rule__PerspectiveDataInterchange__Group__0__Impl rule__PerspectiveDataInterchange__Group__1 )
-            // InternalPerspectiveDsl.g:7143:2: rule__PerspectiveDataInterchange__Group__0__Impl rule__PerspectiveDataInterchange__Group__1
+            // InternalPerspectiveDsl.g:7177:1: ( rule__PerspectiveDataInterchange__Group__0__Impl rule__PerspectiveDataInterchange__Group__1 )
+            // InternalPerspectiveDsl.g:7178:2: rule__PerspectiveDataInterchange__Group__0__Impl rule__PerspectiveDataInterchange__Group__1
             {
-            pushFollow(FOLLOW_41);
+            pushFollow(FOLLOW_42);
             rule__PerspectiveDataInterchange__Group__0__Impl();
 
             state._fsp--;
@@ -24504,23 +24645,23 @@
 
 
     // $ANTLR start "rule__PerspectiveDataInterchange__Group__0__Impl"
-    // InternalPerspectiveDsl.g:7150:1: rule__PerspectiveDataInterchange__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:7185:1: rule__PerspectiveDataInterchange__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveDataInterchange__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7154:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:7155:1: ( () )
+            // InternalPerspectiveDsl.g:7189:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7190:1: ( () )
             {
-            // InternalPerspectiveDsl.g:7155:1: ( () )
-            // InternalPerspectiveDsl.g:7156:2: ()
+            // InternalPerspectiveDsl.g:7190:1: ( () )
+            // InternalPerspectiveDsl.g:7191:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDataInterchangeAccess().getPerspectiveDataInterchangeAction_0()); 
             }
-            // InternalPerspectiveDsl.g:7157:2: ()
-            // InternalPerspectiveDsl.g:7157:3: 
+            // InternalPerspectiveDsl.g:7192:2: ()
+            // InternalPerspectiveDsl.g:7192:3: 
             {
             }
 
@@ -24545,14 +24686,14 @@
 
 
     // $ANTLR start "rule__PerspectiveDataInterchange__Group__1"
-    // InternalPerspectiveDsl.g:7165:1: rule__PerspectiveDataInterchange__Group__1 : rule__PerspectiveDataInterchange__Group__1__Impl rule__PerspectiveDataInterchange__Group__2 ;
+    // InternalPerspectiveDsl.g:7200: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:7169:1: ( rule__PerspectiveDataInterchange__Group__1__Impl rule__PerspectiveDataInterchange__Group__2 )
-            // InternalPerspectiveDsl.g:7170:2: rule__PerspectiveDataInterchange__Group__1__Impl rule__PerspectiveDataInterchange__Group__2
+            // InternalPerspectiveDsl.g:7204:1: ( rule__PerspectiveDataInterchange__Group__1__Impl rule__PerspectiveDataInterchange__Group__2 )
+            // InternalPerspectiveDsl.g:7205:2: rule__PerspectiveDataInterchange__Group__1__Impl rule__PerspectiveDataInterchange__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveDataInterchange__Group__1__Impl();
@@ -24583,17 +24724,17 @@
 
 
     // $ANTLR start "rule__PerspectiveDataInterchange__Group__1__Impl"
-    // InternalPerspectiveDsl.g:7177:1: rule__PerspectiveDataInterchange__Group__1__Impl : ( 'dataInterchange' ) ;
+    // InternalPerspectiveDsl.g:7212:1: rule__PerspectiveDataInterchange__Group__1__Impl : ( 'dataInterchange' ) ;
     public final void rule__PerspectiveDataInterchange__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7181:1: ( ( 'dataInterchange' ) )
-            // InternalPerspectiveDsl.g:7182:1: ( 'dataInterchange' )
+            // InternalPerspectiveDsl.g:7216:1: ( ( 'dataInterchange' ) )
+            // InternalPerspectiveDsl.g:7217:1: ( 'dataInterchange' )
             {
-            // InternalPerspectiveDsl.g:7182:1: ( 'dataInterchange' )
-            // InternalPerspectiveDsl.g:7183:2: 'dataInterchange'
+            // InternalPerspectiveDsl.g:7217:1: ( 'dataInterchange' )
+            // InternalPerspectiveDsl.g:7218:2: 'dataInterchange'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDataInterchangeAccess().getDataInterchangeKeyword_1()); 
@@ -24624,14 +24765,14 @@
 
 
     // $ANTLR start "rule__PerspectiveDataInterchange__Group__2"
-    // InternalPerspectiveDsl.g:7192:1: rule__PerspectiveDataInterchange__Group__2 : rule__PerspectiveDataInterchange__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:7227: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:7196:1: ( rule__PerspectiveDataInterchange__Group__2__Impl )
-            // InternalPerspectiveDsl.g:7197:2: rule__PerspectiveDataInterchange__Group__2__Impl
+            // InternalPerspectiveDsl.g:7231:1: ( rule__PerspectiveDataInterchange__Group__2__Impl )
+            // InternalPerspectiveDsl.g:7232:2: rule__PerspectiveDataInterchange__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveDataInterchange__Group__2__Impl();
@@ -24657,23 +24798,23 @@
 
 
     // $ANTLR start "rule__PerspectiveDataInterchange__Group__2__Impl"
-    // InternalPerspectiveDsl.g:7203:1: rule__PerspectiveDataInterchange__Group__2__Impl : ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:7238: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:7207:1: ( ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:7208:1: ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7242:1: ( ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:7243:1: ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:7208:1: ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:7209:2: ( rule__PerspectiveDataInterchange__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:7243:1: ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7244:2: ( rule__PerspectiveDataInterchange__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDataInterchangeAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:7210:2: ( rule__PerspectiveDataInterchange__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:7210:3: rule__PerspectiveDataInterchange__RefAssignment_2
+            // InternalPerspectiveDsl.g:7245:2: ( rule__PerspectiveDataInterchange__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:7245:3: rule__PerspectiveDataInterchange__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveDataInterchange__RefAssignment_2();
@@ -24707,17 +24848,501 @@
     // $ANTLR end "rule__PerspectiveDataInterchange__Group__2__Impl"
 
 
+    // $ANTLR start "rule__PerspectiveTitle__Group__0"
+    // InternalPerspectiveDsl.g:7254: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:7258:1: ( rule__PerspectiveTitle__Group__0__Impl rule__PerspectiveTitle__Group__1 )
+            // InternalPerspectiveDsl.g:7259:2: rule__PerspectiveTitle__Group__0__Impl rule__PerspectiveTitle__Group__1
+            {
+            pushFollow(FOLLOW_43);
+            rule__PerspectiveTitle__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveTitle__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTitle__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveTitle__Group__0__Impl"
+    // InternalPerspectiveDsl.g:7266:1: rule__PerspectiveTitle__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveTitle__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7270:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7271:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:7271:1: ( () )
+            // InternalPerspectiveDsl.g:7272:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTitleAccess().getPerspectiveTitleAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:7273:2: ()
+            // InternalPerspectiveDsl.g:7273:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTitleAccess().getPerspectiveTitleAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTitle__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveTitle__Group__1"
+    // InternalPerspectiveDsl.g:7281: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:7285:1: ( rule__PerspectiveTitle__Group__1__Impl rule__PerspectiveTitle__Group__2 )
+            // InternalPerspectiveDsl.g:7286:2: rule__PerspectiveTitle__Group__1__Impl rule__PerspectiveTitle__Group__2
+            {
+            pushFollow(FOLLOW_15);
+            rule__PerspectiveTitle__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveTitle__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTitle__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveTitle__Group__1__Impl"
+    // InternalPerspectiveDsl.g:7293:1: rule__PerspectiveTitle__Group__1__Impl : ( 'title' ) ;
+    public final void rule__PerspectiveTitle__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7297:1: ( ( 'title' ) )
+            // InternalPerspectiveDsl.g:7298:1: ( 'title' )
+            {
+            // InternalPerspectiveDsl.g:7298:1: ( 'title' )
+            // InternalPerspectiveDsl.g:7299:2: 'title'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTitleAccess().getTitleKeyword_1()); 
+            }
+            match(input,87,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTitleAccess().getTitleKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTitle__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveTitle__Group__2"
+    // InternalPerspectiveDsl.g:7308: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:7312:1: ( rule__PerspectiveTitle__Group__2__Impl )
+            // InternalPerspectiveDsl.g:7313:2: rule__PerspectiveTitle__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveTitle__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTitle__Group__2"
+
+
+    // $ANTLR start "rule__PerspectiveTitle__Group__2__Impl"
+    // InternalPerspectiveDsl.g:7319: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:7323:1: ( ( ( rule__PerspectiveTitle__HtmlNameAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:7324:1: ( ( rule__PerspectiveTitle__HtmlNameAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:7324:1: ( ( rule__PerspectiveTitle__HtmlNameAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7325:2: ( rule__PerspectiveTitle__HtmlNameAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTitleAccess().getHtmlNameAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:7326:2: ( rule__PerspectiveTitle__HtmlNameAssignment_2 )
+            // InternalPerspectiveDsl.g:7326:3: rule__PerspectiveTitle__HtmlNameAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveTitle__HtmlNameAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTitleAccess().getHtmlNameAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTitle__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveDashboard__Group__0"
+    // InternalPerspectiveDsl.g:7335: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:7339:1: ( rule__PerspectiveDashboard__Group__0__Impl rule__PerspectiveDashboard__Group__1 )
+            // InternalPerspectiveDsl.g:7340:2: rule__PerspectiveDashboard__Group__0__Impl rule__PerspectiveDashboard__Group__1
+            {
+            pushFollow(FOLLOW_24);
+            rule__PerspectiveDashboard__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveDashboard__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDashboard__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveDashboard__Group__0__Impl"
+    // InternalPerspectiveDsl.g:7347:1: rule__PerspectiveDashboard__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveDashboard__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7351:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7352:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:7352:1: ( () )
+            // InternalPerspectiveDsl.g:7353:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDashboardAccess().getPerspectiveDashboardAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:7354:2: ()
+            // InternalPerspectiveDsl.g:7354:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDashboardAccess().getPerspectiveDashboardAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDashboard__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveDashboard__Group__1"
+    // InternalPerspectiveDsl.g:7362: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:7366:1: ( rule__PerspectiveDashboard__Group__1__Impl rule__PerspectiveDashboard__Group__2 )
+            // InternalPerspectiveDsl.g:7367:2: rule__PerspectiveDashboard__Group__1__Impl rule__PerspectiveDashboard__Group__2
+            {
+            pushFollow(FOLLOW_15);
+            rule__PerspectiveDashboard__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveDashboard__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDashboard__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveDashboard__Group__1__Impl"
+    // InternalPerspectiveDsl.g:7374:1: rule__PerspectiveDashboard__Group__1__Impl : ( 'name' ) ;
+    public final void rule__PerspectiveDashboard__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7378:1: ( ( 'name' ) )
+            // InternalPerspectiveDsl.g:7379:1: ( 'name' )
+            {
+            // InternalPerspectiveDsl.g:7379:1: ( 'name' )
+            // InternalPerspectiveDsl.g:7380:2: 'name'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDashboardAccess().getNameKeyword_1()); 
+            }
+            match(input,88,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDashboardAccess().getNameKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDashboard__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveDashboard__Group__2"
+    // InternalPerspectiveDsl.g:7389: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:7393:1: ( rule__PerspectiveDashboard__Group__2__Impl )
+            // InternalPerspectiveDsl.g:7394:2: rule__PerspectiveDashboard__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveDashboard__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDashboard__Group__2"
+
+
+    // $ANTLR start "rule__PerspectiveDashboard__Group__2__Impl"
+    // InternalPerspectiveDsl.g:7400: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:7404:1: ( ( ( rule__PerspectiveDashboard__NameAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:7405:1: ( ( rule__PerspectiveDashboard__NameAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:7405:1: ( ( rule__PerspectiveDashboard__NameAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7406:2: ( rule__PerspectiveDashboard__NameAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDashboardAccess().getNameAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:7407:2: ( rule__PerspectiveDashboard__NameAssignment_2 )
+            // InternalPerspectiveDsl.g:7407:3: rule__PerspectiveDashboard__NameAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveDashboard__NameAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDashboardAccess().getNameAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDashboard__Group__2__Impl"
+
+
     // $ANTLR start "rule__XImportDeclaration__Group__0"
-    // InternalPerspectiveDsl.g:7219:1: rule__XImportDeclaration__Group__0 : rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 ;
+    // InternalPerspectiveDsl.g:7416: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:7223:1: ( rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 )
-            // InternalPerspectiveDsl.g:7224:2: rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1
+            // InternalPerspectiveDsl.g:7420:1: ( rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 )
+            // InternalPerspectiveDsl.g:7421:2: rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1
             {
-            pushFollow(FOLLOW_42);
+            pushFollow(FOLLOW_44);
             rule__XImportDeclaration__Group__0__Impl();
 
             state._fsp--;
@@ -24746,23 +25371,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__0__Impl"
-    // InternalPerspectiveDsl.g:7231:1: rule__XImportDeclaration__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:7428:1: rule__XImportDeclaration__Group__0__Impl : ( () ) ;
     public final void rule__XImportDeclaration__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7235:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:7236:1: ( () )
+            // InternalPerspectiveDsl.g:7432:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7433:1: ( () )
             {
-            // InternalPerspectiveDsl.g:7236:1: ( () )
-            // InternalPerspectiveDsl.g:7237:2: ()
+            // InternalPerspectiveDsl.g:7433:1: ( () )
+            // InternalPerspectiveDsl.g:7434:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0()); 
             }
-            // InternalPerspectiveDsl.g:7238:2: ()
-            // InternalPerspectiveDsl.g:7238:3: 
+            // InternalPerspectiveDsl.g:7435:2: ()
+            // InternalPerspectiveDsl.g:7435:3: 
             {
             }
 
@@ -24787,16 +25412,16 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__1"
-    // InternalPerspectiveDsl.g:7246:1: rule__XImportDeclaration__Group__1 : rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 ;
+    // InternalPerspectiveDsl.g:7443: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:7250:1: ( rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 )
-            // InternalPerspectiveDsl.g:7251:2: rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2
+            // InternalPerspectiveDsl.g:7447:1: ( rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 )
+            // InternalPerspectiveDsl.g:7448:2: rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2
             {
-            pushFollow(FOLLOW_43);
+            pushFollow(FOLLOW_45);
             rule__XImportDeclaration__Group__1__Impl();
 
             state._fsp--;
@@ -24825,17 +25450,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__1__Impl"
-    // InternalPerspectiveDsl.g:7258:1: rule__XImportDeclaration__Group__1__Impl : ( 'import' ) ;
+    // InternalPerspectiveDsl.g:7455:1: rule__XImportDeclaration__Group__1__Impl : ( 'import' ) ;
     public final void rule__XImportDeclaration__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7262:1: ( ( 'import' ) )
-            // InternalPerspectiveDsl.g:7263:1: ( 'import' )
+            // InternalPerspectiveDsl.g:7459:1: ( ( 'import' ) )
+            // InternalPerspectiveDsl.g:7460:1: ( 'import' )
             {
-            // InternalPerspectiveDsl.g:7263:1: ( 'import' )
-            // InternalPerspectiveDsl.g:7264:2: 'import'
+            // InternalPerspectiveDsl.g:7460:1: ( 'import' )
+            // InternalPerspectiveDsl.g:7461:2: 'import'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportKeyword_1()); 
@@ -24866,16 +25491,16 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__2"
-    // InternalPerspectiveDsl.g:7273:1: rule__XImportDeclaration__Group__2 : rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 ;
+    // InternalPerspectiveDsl.g:7470: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:7277:1: ( rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 )
-            // InternalPerspectiveDsl.g:7278:2: rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3
+            // InternalPerspectiveDsl.g:7474:1: ( rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 )
+            // InternalPerspectiveDsl.g:7475:2: rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3
             {
-            pushFollow(FOLLOW_44);
+            pushFollow(FOLLOW_46);
             rule__XImportDeclaration__Group__2__Impl();
 
             state._fsp--;
@@ -24904,23 +25529,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__2__Impl"
-    // InternalPerspectiveDsl.g:7285:1: rule__XImportDeclaration__Group__2__Impl : ( ( rule__XImportDeclaration__Alternatives_2 ) ) ;
+    // InternalPerspectiveDsl.g:7482: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:7289:1: ( ( ( rule__XImportDeclaration__Alternatives_2 ) ) )
-            // InternalPerspectiveDsl.g:7290:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            // InternalPerspectiveDsl.g:7486:1: ( ( ( rule__XImportDeclaration__Alternatives_2 ) ) )
+            // InternalPerspectiveDsl.g:7487:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
             {
-            // InternalPerspectiveDsl.g:7290:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
-            // InternalPerspectiveDsl.g:7291:2: ( rule__XImportDeclaration__Alternatives_2 )
+            // InternalPerspectiveDsl.g:7487:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            // InternalPerspectiveDsl.g:7488:2: ( rule__XImportDeclaration__Alternatives_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2()); 
             }
-            // InternalPerspectiveDsl.g:7292:2: ( rule__XImportDeclaration__Alternatives_2 )
-            // InternalPerspectiveDsl.g:7292:3: rule__XImportDeclaration__Alternatives_2
+            // InternalPerspectiveDsl.g:7489:2: ( rule__XImportDeclaration__Alternatives_2 )
+            // InternalPerspectiveDsl.g:7489:3: rule__XImportDeclaration__Alternatives_2
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Alternatives_2();
@@ -24955,14 +25580,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__3"
-    // InternalPerspectiveDsl.g:7300:1: rule__XImportDeclaration__Group__3 : rule__XImportDeclaration__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:7497: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:7304:1: ( rule__XImportDeclaration__Group__3__Impl )
-            // InternalPerspectiveDsl.g:7305:2: rule__XImportDeclaration__Group__3__Impl
+            // InternalPerspectiveDsl.g:7501:1: ( rule__XImportDeclaration__Group__3__Impl )
+            // InternalPerspectiveDsl.g:7502:2: rule__XImportDeclaration__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group__3__Impl();
@@ -24988,33 +25613,33 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__3__Impl"
-    // InternalPerspectiveDsl.g:7311:1: rule__XImportDeclaration__Group__3__Impl : ( ( ';' )? ) ;
+    // InternalPerspectiveDsl.g:7508:1: rule__XImportDeclaration__Group__3__Impl : ( ( ';' )? ) ;
     public final void rule__XImportDeclaration__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7315:1: ( ( ( ';' )? ) )
-            // InternalPerspectiveDsl.g:7316:1: ( ( ';' )? )
+            // InternalPerspectiveDsl.g:7512:1: ( ( ( ';' )? ) )
+            // InternalPerspectiveDsl.g:7513:1: ( ( ';' )? )
             {
-            // InternalPerspectiveDsl.g:7316:1: ( ( ';' )? )
-            // InternalPerspectiveDsl.g:7317:2: ( ';' )?
+            // InternalPerspectiveDsl.g:7513:1: ( ( ';' )? )
+            // InternalPerspectiveDsl.g:7514:2: ( ';' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3()); 
             }
-            // InternalPerspectiveDsl.g:7318:2: ( ';' )?
+            // InternalPerspectiveDsl.g:7515:2: ( ';' )?
             int alt58=2;
             int LA58_0 = input.LA(1);
 
-            if ( (LA58_0==87) ) {
+            if ( (LA58_0==89) ) {
                 alt58=1;
             }
             switch (alt58) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7318:3: ';'
+                    // InternalPerspectiveDsl.g:7515:3: ';'
                     {
-                    match(input,87,FOLLOW_2); if (state.failed) return ;
+                    match(input,89,FOLLOW_2); if (state.failed) return ;
 
                     }
                     break;
@@ -25046,16 +25671,16 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__0"
-    // InternalPerspectiveDsl.g:7327:1: rule__XImportDeclaration__Group_2_0__0 : rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 ;
+    // InternalPerspectiveDsl.g:7524: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:7331:1: ( rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 )
-            // InternalPerspectiveDsl.g:7332:2: rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1
+            // InternalPerspectiveDsl.g:7528:1: ( rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 )
+            // InternalPerspectiveDsl.g:7529:2: rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1
             {
-            pushFollow(FOLLOW_45);
+            pushFollow(FOLLOW_47);
             rule__XImportDeclaration__Group_2_0__0__Impl();
 
             state._fsp--;
@@ -25084,23 +25709,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__0__Impl"
-    // InternalPerspectiveDsl.g:7339:1: rule__XImportDeclaration__Group_2_0__0__Impl : ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) ;
+    // InternalPerspectiveDsl.g:7536: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:7343:1: ( ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) )
-            // InternalPerspectiveDsl.g:7344:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            // InternalPerspectiveDsl.g:7540:1: ( ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) )
+            // InternalPerspectiveDsl.g:7541:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
             {
-            // InternalPerspectiveDsl.g:7344:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
-            // InternalPerspectiveDsl.g:7345:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            // InternalPerspectiveDsl.g:7541:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            // InternalPerspectiveDsl.g:7542:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0()); 
             }
-            // InternalPerspectiveDsl.g:7346:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
-            // InternalPerspectiveDsl.g:7346:3: rule__XImportDeclaration__StaticAssignment_2_0_0
+            // InternalPerspectiveDsl.g:7543:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            // InternalPerspectiveDsl.g:7543:3: rule__XImportDeclaration__StaticAssignment_2_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__StaticAssignment_2_0_0();
@@ -25135,16 +25760,16 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__1"
-    // InternalPerspectiveDsl.g:7354:1: rule__XImportDeclaration__Group_2_0__1 : rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 ;
+    // InternalPerspectiveDsl.g:7551: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:7358:1: ( rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 )
-            // InternalPerspectiveDsl.g:7359:2: rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2
+            // InternalPerspectiveDsl.g:7555:1: ( rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 )
+            // InternalPerspectiveDsl.g:7556:2: rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2
             {
-            pushFollow(FOLLOW_45);
+            pushFollow(FOLLOW_47);
             rule__XImportDeclaration__Group_2_0__1__Impl();
 
             state._fsp--;
@@ -25173,22 +25798,22 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__1__Impl"
-    // InternalPerspectiveDsl.g:7366:1: rule__XImportDeclaration__Group_2_0__1__Impl : ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) ;
+    // InternalPerspectiveDsl.g:7563: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:7370:1: ( ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) )
-            // InternalPerspectiveDsl.g:7371:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            // InternalPerspectiveDsl.g:7567:1: ( ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) )
+            // InternalPerspectiveDsl.g:7568:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
             {
-            // InternalPerspectiveDsl.g:7371:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
-            // InternalPerspectiveDsl.g:7372:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            // InternalPerspectiveDsl.g:7568:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            // InternalPerspectiveDsl.g:7569:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1()); 
             }
-            // InternalPerspectiveDsl.g:7373:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            // InternalPerspectiveDsl.g:7570:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
             int alt59=2;
             int LA59_0 = input.LA(1);
 
@@ -25197,7 +25822,7 @@
             }
             switch (alt59) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7373:3: rule__XImportDeclaration__ExtensionAssignment_2_0_1
+                    // InternalPerspectiveDsl.g:7570:3: rule__XImportDeclaration__ExtensionAssignment_2_0_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ExtensionAssignment_2_0_1();
@@ -25235,16 +25860,16 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__2"
-    // InternalPerspectiveDsl.g:7381:1: rule__XImportDeclaration__Group_2_0__2 : rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 ;
+    // InternalPerspectiveDsl.g:7578: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:7385:1: ( rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 )
-            // InternalPerspectiveDsl.g:7386:2: rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3
+            // InternalPerspectiveDsl.g:7582:1: ( rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 )
+            // InternalPerspectiveDsl.g:7583:2: rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3
             {
-            pushFollow(FOLLOW_46);
+            pushFollow(FOLLOW_48);
             rule__XImportDeclaration__Group_2_0__2__Impl();
 
             state._fsp--;
@@ -25273,23 +25898,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__2__Impl"
-    // InternalPerspectiveDsl.g:7393:1: rule__XImportDeclaration__Group_2_0__2__Impl : ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) ;
+    // InternalPerspectiveDsl.g:7590: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:7397:1: ( ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) )
-            // InternalPerspectiveDsl.g:7398:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            // InternalPerspectiveDsl.g:7594:1: ( ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) )
+            // InternalPerspectiveDsl.g:7595:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
             {
-            // InternalPerspectiveDsl.g:7398:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
-            // InternalPerspectiveDsl.g:7399:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            // InternalPerspectiveDsl.g:7595:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            // InternalPerspectiveDsl.g:7596:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2()); 
             }
-            // InternalPerspectiveDsl.g:7400:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
-            // InternalPerspectiveDsl.g:7400:3: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2
+            // InternalPerspectiveDsl.g:7597:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            // InternalPerspectiveDsl.g:7597:3: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__ImportedTypeAssignment_2_0_2();
@@ -25324,14 +25949,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__3"
-    // InternalPerspectiveDsl.g:7408:1: rule__XImportDeclaration__Group_2_0__3 : rule__XImportDeclaration__Group_2_0__3__Impl ;
+    // InternalPerspectiveDsl.g:7605: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:7412:1: ( rule__XImportDeclaration__Group_2_0__3__Impl )
-            // InternalPerspectiveDsl.g:7413:2: rule__XImportDeclaration__Group_2_0__3__Impl
+            // InternalPerspectiveDsl.g:7609:1: ( rule__XImportDeclaration__Group_2_0__3__Impl )
+            // InternalPerspectiveDsl.g:7610:2: rule__XImportDeclaration__Group_2_0__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group_2_0__3__Impl();
@@ -25357,23 +25982,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__3__Impl"
-    // InternalPerspectiveDsl.g:7419:1: rule__XImportDeclaration__Group_2_0__3__Impl : ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) ;
+    // InternalPerspectiveDsl.g:7616: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:7423:1: ( ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) )
-            // InternalPerspectiveDsl.g:7424:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            // InternalPerspectiveDsl.g:7620:1: ( ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) )
+            // InternalPerspectiveDsl.g:7621:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
             {
-            // InternalPerspectiveDsl.g:7424:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
-            // InternalPerspectiveDsl.g:7425:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            // InternalPerspectiveDsl.g:7621:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            // InternalPerspectiveDsl.g:7622:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3()); 
             }
-            // InternalPerspectiveDsl.g:7426:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
-            // InternalPerspectiveDsl.g:7426:3: rule__XImportDeclaration__Alternatives_2_0_3
+            // InternalPerspectiveDsl.g:7623:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            // InternalPerspectiveDsl.g:7623:3: rule__XImportDeclaration__Alternatives_2_0_3
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Alternatives_2_0_3();
@@ -25408,14 +26033,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__0"
-    // InternalPerspectiveDsl.g:7435:1: rule__XImportDeclaration__Group_2_3__0 : rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 ;
+    // InternalPerspectiveDsl.g:7632: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:7439:1: ( rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 )
-            // InternalPerspectiveDsl.g:7440:2: rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1
+            // InternalPerspectiveDsl.g:7636:1: ( rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 )
+            // InternalPerspectiveDsl.g:7637:2: rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1
             {
             pushFollow(FOLLOW_7);
             rule__XImportDeclaration__Group_2_3__0__Impl();
@@ -25446,23 +26071,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__0__Impl"
-    // InternalPerspectiveDsl.g:7447:1: rule__XImportDeclaration__Group_2_3__0__Impl : ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) ;
+    // InternalPerspectiveDsl.g:7644: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:7451:1: ( ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) )
-            // InternalPerspectiveDsl.g:7452:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            // InternalPerspectiveDsl.g:7648:1: ( ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) )
+            // InternalPerspectiveDsl.g:7649:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
             {
-            // InternalPerspectiveDsl.g:7452:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
-            // InternalPerspectiveDsl.g:7453:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            // InternalPerspectiveDsl.g:7649:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            // InternalPerspectiveDsl.g:7650:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0()); 
             }
-            // InternalPerspectiveDsl.g:7454:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
-            // InternalPerspectiveDsl.g:7454:3: rule__XImportDeclaration__FqnImportAssignment_2_3_0
+            // InternalPerspectiveDsl.g:7651:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            // InternalPerspectiveDsl.g:7651:3: rule__XImportDeclaration__FqnImportAssignment_2_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__FqnImportAssignment_2_3_0();
@@ -25497,14 +26122,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__1"
-    // InternalPerspectiveDsl.g:7462:1: rule__XImportDeclaration__Group_2_3__1 : rule__XImportDeclaration__Group_2_3__1__Impl ;
+    // InternalPerspectiveDsl.g:7659: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:7466:1: ( rule__XImportDeclaration__Group_2_3__1__Impl )
-            // InternalPerspectiveDsl.g:7467:2: rule__XImportDeclaration__Group_2_3__1__Impl
+            // InternalPerspectiveDsl.g:7663:1: ( rule__XImportDeclaration__Group_2_3__1__Impl )
+            // InternalPerspectiveDsl.g:7664:2: rule__XImportDeclaration__Group_2_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group_2_3__1__Impl();
@@ -25530,23 +26155,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__1__Impl"
-    // InternalPerspectiveDsl.g:7473:1: rule__XImportDeclaration__Group_2_3__1__Impl : ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) ;
+    // InternalPerspectiveDsl.g:7670: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:7477:1: ( ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) )
-            // InternalPerspectiveDsl.g:7478:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            // InternalPerspectiveDsl.g:7674:1: ( ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) )
+            // InternalPerspectiveDsl.g:7675:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
             {
-            // InternalPerspectiveDsl.g:7478:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
-            // InternalPerspectiveDsl.g:7479:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            // InternalPerspectiveDsl.g:7675:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            // InternalPerspectiveDsl.g:7676:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1()); 
             }
-            // InternalPerspectiveDsl.g:7480:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
-            // InternalPerspectiveDsl.g:7480:3: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1
+            // InternalPerspectiveDsl.g:7677:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            // InternalPerspectiveDsl.g:7677:3: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1();
@@ -25581,16 +26206,16 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__0"
-    // InternalPerspectiveDsl.g:7489:1: rule__XAnnotation__Group__0 : rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 ;
+    // InternalPerspectiveDsl.g:7686: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:7493:1: ( rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 )
-            // InternalPerspectiveDsl.g:7494:2: rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1
+            // InternalPerspectiveDsl.g:7690:1: ( rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 )
+            // InternalPerspectiveDsl.g:7691:2: rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1
             {
-            pushFollow(FOLLOW_47);
+            pushFollow(FOLLOW_49);
             rule__XAnnotation__Group__0__Impl();
 
             state._fsp--;
@@ -25619,23 +26244,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__0__Impl"
-    // InternalPerspectiveDsl.g:7501:1: rule__XAnnotation__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:7698:1: rule__XAnnotation__Group__0__Impl : ( () ) ;
     public final void rule__XAnnotation__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7505:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:7506:1: ( () )
+            // InternalPerspectiveDsl.g:7702:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7703:1: ( () )
             {
-            // InternalPerspectiveDsl.g:7506:1: ( () )
-            // InternalPerspectiveDsl.g:7507:2: ()
+            // InternalPerspectiveDsl.g:7703:1: ( () )
+            // InternalPerspectiveDsl.g:7704:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getXAnnotationAction_0()); 
             }
-            // InternalPerspectiveDsl.g:7508:2: ()
-            // InternalPerspectiveDsl.g:7508:3: 
+            // InternalPerspectiveDsl.g:7705:2: ()
+            // InternalPerspectiveDsl.g:7705:3: 
             {
             }
 
@@ -25660,14 +26285,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__1"
-    // InternalPerspectiveDsl.g:7516:1: rule__XAnnotation__Group__1 : rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 ;
+    // InternalPerspectiveDsl.g:7713: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:7520:1: ( rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 )
-            // InternalPerspectiveDsl.g:7521:2: rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2
+            // InternalPerspectiveDsl.g:7717:1: ( rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 )
+            // InternalPerspectiveDsl.g:7718:2: rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__XAnnotation__Group__1__Impl();
@@ -25698,22 +26323,22 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__1__Impl"
-    // InternalPerspectiveDsl.g:7528:1: rule__XAnnotation__Group__1__Impl : ( '@' ) ;
+    // InternalPerspectiveDsl.g:7725:1: rule__XAnnotation__Group__1__Impl : ( '@' ) ;
     public final void rule__XAnnotation__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7532:1: ( ( '@' ) )
-            // InternalPerspectiveDsl.g:7533:1: ( '@' )
+            // InternalPerspectiveDsl.g:7729:1: ( ( '@' ) )
+            // InternalPerspectiveDsl.g:7730:1: ( '@' )
             {
-            // InternalPerspectiveDsl.g:7533:1: ( '@' )
-            // InternalPerspectiveDsl.g:7534:2: '@'
+            // InternalPerspectiveDsl.g:7730:1: ( '@' )
+            // InternalPerspectiveDsl.g:7731:2: '@'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); 
             }
-            match(input,88,FOLLOW_2); if (state.failed) return ;
+            match(input,90,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); 
             }
@@ -25739,16 +26364,16 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__2"
-    // InternalPerspectiveDsl.g:7543:1: rule__XAnnotation__Group__2 : rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 ;
+    // InternalPerspectiveDsl.g:7740: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:7547:1: ( rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 )
-            // InternalPerspectiveDsl.g:7548:2: rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3
+            // InternalPerspectiveDsl.g:7744:1: ( rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 )
+            // InternalPerspectiveDsl.g:7745:2: rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3
             {
-            pushFollow(FOLLOW_48);
+            pushFollow(FOLLOW_50);
             rule__XAnnotation__Group__2__Impl();
 
             state._fsp--;
@@ -25777,23 +26402,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__2__Impl"
-    // InternalPerspectiveDsl.g:7555:1: rule__XAnnotation__Group__2__Impl : ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:7752: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:7559:1: ( ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:7560:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7756:1: ( ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:7757:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:7560:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
-            // InternalPerspectiveDsl.g:7561:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            // InternalPerspectiveDsl.g:7757:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7758:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:7562:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
-            // InternalPerspectiveDsl.g:7562:3: rule__XAnnotation__AnnotationTypeAssignment_2
+            // InternalPerspectiveDsl.g:7759:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            // InternalPerspectiveDsl.g:7759:3: rule__XAnnotation__AnnotationTypeAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__AnnotationTypeAssignment_2();
@@ -25828,14 +26453,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__3"
-    // InternalPerspectiveDsl.g:7570:1: rule__XAnnotation__Group__3 : rule__XAnnotation__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:7767: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:7574:1: ( rule__XAnnotation__Group__3__Impl )
-            // InternalPerspectiveDsl.g:7575:2: rule__XAnnotation__Group__3__Impl
+            // InternalPerspectiveDsl.g:7771:1: ( rule__XAnnotation__Group__3__Impl )
+            // InternalPerspectiveDsl.g:7772:2: rule__XAnnotation__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group__3__Impl();
@@ -25861,31 +26486,31 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__3__Impl"
-    // InternalPerspectiveDsl.g:7581:1: rule__XAnnotation__Group__3__Impl : ( ( rule__XAnnotation__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:7778: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:7585:1: ( ( ( rule__XAnnotation__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:7586:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:7782:1: ( ( ( rule__XAnnotation__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:7783:1: ( ( rule__XAnnotation__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:7586:1: ( ( rule__XAnnotation__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:7587:2: ( rule__XAnnotation__Group_3__0 )?
+            // InternalPerspectiveDsl.g:7783:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:7784:2: ( rule__XAnnotation__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:7588:2: ( rule__XAnnotation__Group_3__0 )?
+            // InternalPerspectiveDsl.g:7785:2: ( rule__XAnnotation__Group_3__0 )?
             int alt60=2;
             int LA60_0 = input.LA(1);
 
-            if ( (LA60_0==89) ) {
+            if ( (LA60_0==91) ) {
                 alt60=1;
             }
             switch (alt60) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7588:3: rule__XAnnotation__Group_3__0
+                    // InternalPerspectiveDsl.g:7785:3: rule__XAnnotation__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__Group_3__0();
@@ -25923,16 +26548,16 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__0"
-    // InternalPerspectiveDsl.g:7597:1: rule__XAnnotation__Group_3__0 : rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 ;
+    // InternalPerspectiveDsl.g:7794: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:7601:1: ( rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 )
-            // InternalPerspectiveDsl.g:7602:2: rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1
+            // InternalPerspectiveDsl.g:7798:1: ( rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 )
+            // InternalPerspectiveDsl.g:7799:2: rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1
             {
-            pushFollow(FOLLOW_49);
+            pushFollow(FOLLOW_51);
             rule__XAnnotation__Group_3__0__Impl();
 
             state._fsp--;
@@ -25961,25 +26586,25 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:7609:1: rule__XAnnotation__Group_3__0__Impl : ( ( '(' ) ) ;
+    // InternalPerspectiveDsl.g:7806:1: rule__XAnnotation__Group_3__0__Impl : ( ( '(' ) ) ;
     public final void rule__XAnnotation__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7613:1: ( ( ( '(' ) ) )
-            // InternalPerspectiveDsl.g:7614:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:7810:1: ( ( ( '(' ) ) )
+            // InternalPerspectiveDsl.g:7811:1: ( ( '(' ) )
             {
-            // InternalPerspectiveDsl.g:7614:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:7615:2: ( '(' )
+            // InternalPerspectiveDsl.g:7811:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:7812:2: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()); 
             }
-            // InternalPerspectiveDsl.g:7616:2: ( '(' )
-            // InternalPerspectiveDsl.g:7616:3: '('
+            // InternalPerspectiveDsl.g:7813:2: ( '(' )
+            // InternalPerspectiveDsl.g:7813:3: '('
             {
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -26008,16 +26633,16 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__1"
-    // InternalPerspectiveDsl.g:7624:1: rule__XAnnotation__Group_3__1 : rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 ;
+    // InternalPerspectiveDsl.g:7821: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:7628:1: ( rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 )
-            // InternalPerspectiveDsl.g:7629:2: rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2
+            // InternalPerspectiveDsl.g:7825:1: ( rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 )
+            // InternalPerspectiveDsl.g:7826:2: rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2
             {
-            pushFollow(FOLLOW_49);
+            pushFollow(FOLLOW_51);
             rule__XAnnotation__Group_3__1__Impl();
 
             state._fsp--;
@@ -26046,31 +26671,31 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:7636:1: rule__XAnnotation__Group_3__1__Impl : ( ( rule__XAnnotation__Alternatives_3_1 )? ) ;
+    // InternalPerspectiveDsl.g:7833: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:7640:1: ( ( ( rule__XAnnotation__Alternatives_3_1 )? ) )
-            // InternalPerspectiveDsl.g:7641:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            // InternalPerspectiveDsl.g:7837:1: ( ( ( rule__XAnnotation__Alternatives_3_1 )? ) )
+            // InternalPerspectiveDsl.g:7838:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
             {
-            // InternalPerspectiveDsl.g:7641:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
-            // InternalPerspectiveDsl.g:7642:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            // InternalPerspectiveDsl.g:7838:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            // InternalPerspectiveDsl.g:7839:2: ( rule__XAnnotation__Alternatives_3_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAlternatives_3_1()); 
             }
-            // InternalPerspectiveDsl.g:7643:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            // InternalPerspectiveDsl.g:7840:2: ( rule__XAnnotation__Alternatives_3_1 )?
             int alt61=2;
             int LA61_0 = input.LA(1);
 
-            if ( ((LA61_0>=RULE_ID && LA61_0<=RULE_DECIMAL)||LA61_0==27||(LA61_0>=34 && LA61_0<=35)||LA61_0==40||(LA61_0>=45 && LA61_0<=50)||LA61_0==54||(LA61_0>=88 && LA61_0<=89)||(LA61_0>=93 && LA61_0<=94)||LA61_0==97||LA61_0==99||(LA61_0>=103 && LA61_0<=111)||LA61_0==113||LA61_0==124) ) {
+            if ( ((LA61_0>=RULE_ID && LA61_0<=RULE_DECIMAL)||LA61_0==27||(LA61_0>=34 && LA61_0<=35)||LA61_0==40||(LA61_0>=45 && LA61_0<=50)||LA61_0==54||(LA61_0>=90 && LA61_0<=91)||(LA61_0>=95 && LA61_0<=96)||LA61_0==99||LA61_0==101||(LA61_0>=105 && LA61_0<=113)||LA61_0==115||LA61_0==126) ) {
                 alt61=1;
             }
             switch (alt61) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7643:3: rule__XAnnotation__Alternatives_3_1
+                    // InternalPerspectiveDsl.g:7840:3: rule__XAnnotation__Alternatives_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__Alternatives_3_1();
@@ -26108,14 +26733,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__2"
-    // InternalPerspectiveDsl.g:7651:1: rule__XAnnotation__Group_3__2 : rule__XAnnotation__Group_3__2__Impl ;
+    // InternalPerspectiveDsl.g:7848: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:7655:1: ( rule__XAnnotation__Group_3__2__Impl )
-            // InternalPerspectiveDsl.g:7656:2: rule__XAnnotation__Group_3__2__Impl
+            // InternalPerspectiveDsl.g:7852:1: ( rule__XAnnotation__Group_3__2__Impl )
+            // InternalPerspectiveDsl.g:7853:2: rule__XAnnotation__Group_3__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group_3__2__Impl();
@@ -26141,22 +26766,22 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__2__Impl"
-    // InternalPerspectiveDsl.g:7662:1: rule__XAnnotation__Group_3__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:7859:1: rule__XAnnotation__Group_3__2__Impl : ( ')' ) ;
     public final void rule__XAnnotation__Group_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7666:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:7667:1: ( ')' )
+            // InternalPerspectiveDsl.g:7863:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:7864:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:7667:1: ( ')' )
-            // InternalPerspectiveDsl.g:7668:2: ')'
+            // InternalPerspectiveDsl.g:7864:1: ( ')' )
+            // InternalPerspectiveDsl.g:7865:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); 
             }
@@ -26182,16 +26807,16 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__0"
-    // InternalPerspectiveDsl.g:7678: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:7875: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:7682:1: ( rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 )
-            // InternalPerspectiveDsl.g:7683:2: rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1
+            // InternalPerspectiveDsl.g:7879:1: ( rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 )
+            // InternalPerspectiveDsl.g:7880:2: rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__XAnnotation__Group_3_1_0__0__Impl();
 
             state._fsp--;
@@ -26220,23 +26845,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:7690:1: rule__XAnnotation__Group_3_1_0__0__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) ;
+    // InternalPerspectiveDsl.g:7887: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:7694:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) )
-            // InternalPerspectiveDsl.g:7695:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            // InternalPerspectiveDsl.g:7891:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) )
+            // InternalPerspectiveDsl.g:7892:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
             {
-            // InternalPerspectiveDsl.g:7695:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
-            // InternalPerspectiveDsl.g:7696:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            // InternalPerspectiveDsl.g:7892:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            // InternalPerspectiveDsl.g:7893:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:7697:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
-            // InternalPerspectiveDsl.g:7697:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0
+            // InternalPerspectiveDsl.g:7894:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            // InternalPerspectiveDsl.g:7894:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0();
@@ -26271,14 +26896,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__1"
-    // InternalPerspectiveDsl.g:7705:1: rule__XAnnotation__Group_3_1_0__1 : rule__XAnnotation__Group_3_1_0__1__Impl ;
+    // InternalPerspectiveDsl.g:7902: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:7709:1: ( rule__XAnnotation__Group_3_1_0__1__Impl )
-            // InternalPerspectiveDsl.g:7710:2: rule__XAnnotation__Group_3_1_0__1__Impl
+            // InternalPerspectiveDsl.g:7906:1: ( rule__XAnnotation__Group_3_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:7907:2: rule__XAnnotation__Group_3_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group_3_1_0__1__Impl();
@@ -26304,37 +26929,37 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__1__Impl"
-    // InternalPerspectiveDsl.g:7716:1: rule__XAnnotation__Group_3_1_0__1__Impl : ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:7913: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:7720:1: ( ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) )
-            // InternalPerspectiveDsl.g:7721:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            // InternalPerspectiveDsl.g:7917:1: ( ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) )
+            // InternalPerspectiveDsl.g:7918:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:7721:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
-            // InternalPerspectiveDsl.g:7722:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            // InternalPerspectiveDsl.g:7918:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            // InternalPerspectiveDsl.g:7919:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1()); 
             }
-            // InternalPerspectiveDsl.g:7723:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            // InternalPerspectiveDsl.g:7920:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
             loop62:
             do {
                 int alt62=2;
                 int LA62_0 = input.LA(1);
 
-                if ( (LA62_0==91) ) {
+                if ( (LA62_0==93) ) {
                     alt62=1;
                 }
 
 
                 switch (alt62) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:7723:3: rule__XAnnotation__Group_3_1_0_1__0
+            	    // InternalPerspectiveDsl.g:7920:3: rule__XAnnotation__Group_3_1_0_1__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XAnnotation__Group_3_1_0_1__0();
 
             	    state._fsp--;
@@ -26373,14 +26998,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__0"
-    // InternalPerspectiveDsl.g:7732: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:7929: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:7736:1: ( rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 )
-            // InternalPerspectiveDsl.g:7737:2: rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1
+            // InternalPerspectiveDsl.g:7933:1: ( rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 )
+            // InternalPerspectiveDsl.g:7934: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();
@@ -26411,22 +27036,22 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:7744:1: rule__XAnnotation__Group_3_1_0_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:7941: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:7748:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:7749:1: ( ',' )
+            // InternalPerspectiveDsl.g:7945:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:7946:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:7749:1: ( ',' )
-            // InternalPerspectiveDsl.g:7750:2: ','
+            // InternalPerspectiveDsl.g:7946:1: ( ',' )
+            // InternalPerspectiveDsl.g:7947:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); 
             }
@@ -26452,14 +27077,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__1"
-    // InternalPerspectiveDsl.g:7759:1: rule__XAnnotation__Group_3_1_0_1__1 : rule__XAnnotation__Group_3_1_0_1__1__Impl ;
+    // InternalPerspectiveDsl.g:7956: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:7763:1: ( rule__XAnnotation__Group_3_1_0_1__1__Impl )
-            // InternalPerspectiveDsl.g:7764:2: rule__XAnnotation__Group_3_1_0_1__1__Impl
+            // InternalPerspectiveDsl.g:7960:1: ( rule__XAnnotation__Group_3_1_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:7961:2: rule__XAnnotation__Group_3_1_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group_3_1_0_1__1__Impl();
@@ -26485,23 +27110,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__1__Impl"
-    // InternalPerspectiveDsl.g:7770:1: rule__XAnnotation__Group_3_1_0_1__1__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:7967: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:7774:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) )
-            // InternalPerspectiveDsl.g:7775:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            // InternalPerspectiveDsl.g:7971:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) )
+            // InternalPerspectiveDsl.g:7972:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:7775:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
-            // InternalPerspectiveDsl.g:7776:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            // InternalPerspectiveDsl.g:7972:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            // InternalPerspectiveDsl.g:7973:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1()); 
             }
-            // InternalPerspectiveDsl.g:7777:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
-            // InternalPerspectiveDsl.g:7777:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1
+            // InternalPerspectiveDsl.g:7974:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            // InternalPerspectiveDsl.g:7974:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1();
@@ -26536,16 +27161,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__0"
-    // InternalPerspectiveDsl.g:7786:1: rule__XAnnotationElementValuePair__Group__0 : rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 ;
+    // InternalPerspectiveDsl.g:7983: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:7790:1: ( rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 )
-            // InternalPerspectiveDsl.g:7791:2: rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1
+            // InternalPerspectiveDsl.g:7987:1: ( rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 )
+            // InternalPerspectiveDsl.g:7988:2: rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XAnnotationElementValuePair__Group__0__Impl();
 
             state._fsp--;
@@ -26574,23 +27199,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__0__Impl"
-    // InternalPerspectiveDsl.g:7798:1: rule__XAnnotationElementValuePair__Group__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:7995: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:7802:1: ( ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) )
-            // InternalPerspectiveDsl.g:7803:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:7999:1: ( ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) )
+            // InternalPerspectiveDsl.g:8000:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:7803:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
-            // InternalPerspectiveDsl.g:7804:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            // InternalPerspectiveDsl.g:8000:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:8001:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0()); 
             }
-            // InternalPerspectiveDsl.g:7805:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
-            // InternalPerspectiveDsl.g:7805:3: rule__XAnnotationElementValuePair__Group_0__0
+            // InternalPerspectiveDsl.g:8002:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            // InternalPerspectiveDsl.g:8002:3: rule__XAnnotationElementValuePair__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0__0();
@@ -26625,14 +27250,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__1"
-    // InternalPerspectiveDsl.g:7813:1: rule__XAnnotationElementValuePair__Group__1 : rule__XAnnotationElementValuePair__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:8010: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:7817:1: ( rule__XAnnotationElementValuePair__Group__1__Impl )
-            // InternalPerspectiveDsl.g:7818:2: rule__XAnnotationElementValuePair__Group__1__Impl
+            // InternalPerspectiveDsl.g:8014:1: ( rule__XAnnotationElementValuePair__Group__1__Impl )
+            // InternalPerspectiveDsl.g:8015:2: rule__XAnnotationElementValuePair__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group__1__Impl();
@@ -26658,23 +27283,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__1__Impl"
-    // InternalPerspectiveDsl.g:7824:1: rule__XAnnotationElementValuePair__Group__1__Impl : ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:8021: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:7828:1: ( ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:7829:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            // InternalPerspectiveDsl.g:8025:1: ( ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:8026:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:7829:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
-            // InternalPerspectiveDsl.g:7830:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            // InternalPerspectiveDsl.g:8026:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            // InternalPerspectiveDsl.g:8027:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:7831:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
-            // InternalPerspectiveDsl.g:7831:3: rule__XAnnotationElementValuePair__ValueAssignment_1
+            // InternalPerspectiveDsl.g:8028:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            // InternalPerspectiveDsl.g:8028:3: rule__XAnnotationElementValuePair__ValueAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__ValueAssignment_1();
@@ -26709,14 +27334,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0__0"
-    // InternalPerspectiveDsl.g:7840:1: rule__XAnnotationElementValuePair__Group_0__0 : rule__XAnnotationElementValuePair__Group_0__0__Impl ;
+    // InternalPerspectiveDsl.g:8037: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:7844:1: ( rule__XAnnotationElementValuePair__Group_0__0__Impl )
-            // InternalPerspectiveDsl.g:7845:2: rule__XAnnotationElementValuePair__Group_0__0__Impl
+            // InternalPerspectiveDsl.g:8041:1: ( rule__XAnnotationElementValuePair__Group_0__0__Impl )
+            // InternalPerspectiveDsl.g:8042:2: rule__XAnnotationElementValuePair__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0__0__Impl();
@@ -26742,23 +27367,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:7851:1: rule__XAnnotationElementValuePair__Group_0__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:8048: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:7855:1: ( ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:7856:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8052:1: ( ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:8053:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:7856:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
-            // InternalPerspectiveDsl.g:7857:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:8053:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8054:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0()); 
             }
-            // InternalPerspectiveDsl.g:7858:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
-            // InternalPerspectiveDsl.g:7858:3: rule__XAnnotationElementValuePair__Group_0_0__0
+            // InternalPerspectiveDsl.g:8055:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:8055:3: rule__XAnnotationElementValuePair__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0_0__0();
@@ -26793,16 +27418,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__0"
-    // InternalPerspectiveDsl.g:7867:1: rule__XAnnotationElementValuePair__Group_0_0__0 : rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 ;
+    // InternalPerspectiveDsl.g:8064: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:7871:1: ( rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 )
-            // InternalPerspectiveDsl.g:7872:2: rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1
+            // InternalPerspectiveDsl.g:8068:1: ( rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 )
+            // InternalPerspectiveDsl.g:8069:2: rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1
             {
-            pushFollow(FOLLOW_53);
+            pushFollow(FOLLOW_55);
             rule__XAnnotationElementValuePair__Group_0_0__0__Impl();
 
             state._fsp--;
@@ -26831,23 +27456,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:7879:1: rule__XAnnotationElementValuePair__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) ;
+    // InternalPerspectiveDsl.g:8076: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:7883:1: ( ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) )
-            // InternalPerspectiveDsl.g:7884:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            // InternalPerspectiveDsl.g:8080:1: ( ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) )
+            // InternalPerspectiveDsl.g:8081:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
             {
-            // InternalPerspectiveDsl.g:7884:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
-            // InternalPerspectiveDsl.g:7885:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            // InternalPerspectiveDsl.g:8081:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            // InternalPerspectiveDsl.g:8082:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:7886:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
-            // InternalPerspectiveDsl.g:7886:3: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0
+            // InternalPerspectiveDsl.g:8083:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            // InternalPerspectiveDsl.g:8083:3: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__ElementAssignment_0_0_0();
@@ -26882,14 +27507,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__1"
-    // InternalPerspectiveDsl.g:7894:1: rule__XAnnotationElementValuePair__Group_0_0__1 : rule__XAnnotationElementValuePair__Group_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:8091: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:7898:1: ( rule__XAnnotationElementValuePair__Group_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:7899:2: rule__XAnnotationElementValuePair__Group_0_0__1__Impl
+            // InternalPerspectiveDsl.g:8095:1: ( rule__XAnnotationElementValuePair__Group_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:8096:2: rule__XAnnotationElementValuePair__Group_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0_0__1__Impl();
@@ -26915,17 +27540,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:7905:1: rule__XAnnotationElementValuePair__Group_0_0__1__Impl : ( '=' ) ;
+    // InternalPerspectiveDsl.g:8102: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:7909:1: ( ( '=' ) )
-            // InternalPerspectiveDsl.g:7910:1: ( '=' )
+            // InternalPerspectiveDsl.g:8106:1: ( ( '=' ) )
+            // InternalPerspectiveDsl.g:8107:1: ( '=' )
             {
-            // InternalPerspectiveDsl.g:7910:1: ( '=' )
-            // InternalPerspectiveDsl.g:7911:2: '='
+            // InternalPerspectiveDsl.g:8107:1: ( '=' )
+            // InternalPerspectiveDsl.g:8108:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1()); 
@@ -26956,16 +27581,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__0"
-    // InternalPerspectiveDsl.g:7921:1: rule__XAnnotationElementValueOrCommaList__Group_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 ;
+    // InternalPerspectiveDsl.g:8118: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:7925:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 )
-            // InternalPerspectiveDsl.g:7926:2: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1
+            // InternalPerspectiveDsl.g:8122:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 )
+            // InternalPerspectiveDsl.g:8123:2: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1
             {
-            pushFollow(FOLLOW_54);
+            pushFollow(FOLLOW_56);
             rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl();
 
             state._fsp--;
@@ -26994,23 +27619,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:7933:1: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:8130: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:7937:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:7938:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8134:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:8135:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:7938:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
-            // InternalPerspectiveDsl.g:7939:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:8135:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8136:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0()); 
             }
-            // InternalPerspectiveDsl.g:7940:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
-            // InternalPerspectiveDsl.g:7940:3: rule__XAnnotationElementValueOrCommaList__Group_0_0__0
+            // InternalPerspectiveDsl.g:8137:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:8137:3: rule__XAnnotationElementValueOrCommaList__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0__0();
@@ -27045,16 +27670,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__1"
-    // InternalPerspectiveDsl.g:7948:1: rule__XAnnotationElementValueOrCommaList__Group_0__1 : rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 ;
+    // InternalPerspectiveDsl.g:8145: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:7952:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 )
-            // InternalPerspectiveDsl.g:7953:2: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2
+            // InternalPerspectiveDsl.g:8149:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 )
+            // InternalPerspectiveDsl.g:8150:2: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2
             {
-            pushFollow(FOLLOW_54);
+            pushFollow(FOLLOW_56);
             rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl();
 
             state._fsp--;
@@ -27083,31 +27708,31 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl"
-    // InternalPerspectiveDsl.g:7960:1: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:8157: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:7964:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) )
-            // InternalPerspectiveDsl.g:7965:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            // InternalPerspectiveDsl.g:8161:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) )
+            // InternalPerspectiveDsl.g:8162:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:7965:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
-            // InternalPerspectiveDsl.g:7966:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            // InternalPerspectiveDsl.g:8162:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            // InternalPerspectiveDsl.g:8163:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1()); 
             }
-            // InternalPerspectiveDsl.g:7967:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            // InternalPerspectiveDsl.g:8164:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
             int alt63=2;
             int LA63_0 = input.LA(1);
 
-            if ( ((LA63_0>=RULE_ID && LA63_0<=RULE_DECIMAL)||LA63_0==27||(LA63_0>=34 && LA63_0<=35)||LA63_0==40||(LA63_0>=45 && LA63_0<=50)||LA63_0==54||(LA63_0>=88 && LA63_0<=89)||(LA63_0>=93 && LA63_0<=94)||LA63_0==97||LA63_0==99||(LA63_0>=103 && LA63_0<=111)||LA63_0==113||LA63_0==124) ) {
+            if ( ((LA63_0>=RULE_ID && LA63_0<=RULE_DECIMAL)||LA63_0==27||(LA63_0>=34 && LA63_0<=35)||LA63_0==40||(LA63_0>=45 && LA63_0<=50)||LA63_0==54||(LA63_0>=90 && LA63_0<=91)||(LA63_0>=95 && LA63_0<=96)||LA63_0==99||LA63_0==101||(LA63_0>=105 && LA63_0<=113)||LA63_0==115||LA63_0==126) ) {
                 alt63=1;
             }
             switch (alt63) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7967:3: rule__XAnnotationElementValueOrCommaList__Group_0_1__0
+                    // InternalPerspectiveDsl.g:8164:3: rule__XAnnotationElementValueOrCommaList__Group_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_0_1__0();
@@ -27145,14 +27770,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__2"
-    // InternalPerspectiveDsl.g:7975:1: rule__XAnnotationElementValueOrCommaList__Group_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl ;
+    // InternalPerspectiveDsl.g:8172: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:7979:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl )
-            // InternalPerspectiveDsl.g:7980:2: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl
+            // InternalPerspectiveDsl.g:8176:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl )
+            // InternalPerspectiveDsl.g:8177:2: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl();
@@ -27178,22 +27803,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl"
-    // InternalPerspectiveDsl.g:7986:1: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl : ( ']' ) ;
+    // InternalPerspectiveDsl.g:8183:1: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl : ( ']' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7990:1: ( ( ']' ) )
-            // InternalPerspectiveDsl.g:7991:1: ( ']' )
+            // InternalPerspectiveDsl.g:8187:1: ( ( ']' ) )
+            // InternalPerspectiveDsl.g:8188:1: ( ']' )
             {
-            // InternalPerspectiveDsl.g:7991:1: ( ']' )
-            // InternalPerspectiveDsl.g:7992:2: ']'
+            // InternalPerspectiveDsl.g:8188:1: ( ']' )
+            // InternalPerspectiveDsl.g:8189:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); 
             }
-            match(input,92,FOLLOW_2); if (state.failed) return ;
+            match(input,94,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); 
             }
@@ -27219,14 +27844,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0__0"
-    // InternalPerspectiveDsl.g:8002:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl ;
+    // InternalPerspectiveDsl.g:8199: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:8006:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl )
-            // InternalPerspectiveDsl.g:8007:2: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl
+            // InternalPerspectiveDsl.g:8203:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl )
+            // InternalPerspectiveDsl.g:8204:2: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl();
@@ -27252,23 +27877,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:8013:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:8210: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:8017:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:8018:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8214:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:8215:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:8018:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
-            // InternalPerspectiveDsl.g:8019:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            // InternalPerspectiveDsl.g:8215:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8216:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:8020:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
-            // InternalPerspectiveDsl.g:8020:3: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0
+            // InternalPerspectiveDsl.g:8217:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            // InternalPerspectiveDsl.g:8217:3: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0();
@@ -27303,16 +27928,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0"
-    // InternalPerspectiveDsl.g:8029: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:8226: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:8033:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 )
-            // InternalPerspectiveDsl.g:8034:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
+            // InternalPerspectiveDsl.g:8230:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 )
+            // InternalPerspectiveDsl.g:8231:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
             {
-            pushFollow(FOLLOW_55);
+            pushFollow(FOLLOW_57);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl();
 
             state._fsp--;
@@ -27341,23 +27966,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:8041:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:8238: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:8045:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:8046:1: ( () )
+            // InternalPerspectiveDsl.g:8242:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:8243:1: ( () )
             {
-            // InternalPerspectiveDsl.g:8046:1: ( () )
-            // InternalPerspectiveDsl.g:8047:2: ()
+            // InternalPerspectiveDsl.g:8243:1: ( () )
+            // InternalPerspectiveDsl.g:8244:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:8048:2: ()
-            // InternalPerspectiveDsl.g:8048:3: 
+            // InternalPerspectiveDsl.g:8245:2: ()
+            // InternalPerspectiveDsl.g:8245:3: 
             {
             }
 
@@ -27382,16 +28007,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1"
-    // InternalPerspectiveDsl.g:8056: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:8253: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:8060:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 )
-            // InternalPerspectiveDsl.g:8061:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
+            // InternalPerspectiveDsl.g:8257:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 )
+            // InternalPerspectiveDsl.g:8258:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
             {
-            pushFollow(FOLLOW_56);
+            pushFollow(FOLLOW_58);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl();
 
             state._fsp--;
@@ -27420,22 +28045,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:8068:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl : ( '#' ) ;
+    // InternalPerspectiveDsl.g:8265: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:8072:1: ( ( '#' ) )
-            // InternalPerspectiveDsl.g:8073:1: ( '#' )
+            // InternalPerspectiveDsl.g:8269:1: ( ( '#' ) )
+            // InternalPerspectiveDsl.g:8270:1: ( '#' )
             {
-            // InternalPerspectiveDsl.g:8073:1: ( '#' )
-            // InternalPerspectiveDsl.g:8074:2: '#'
+            // InternalPerspectiveDsl.g:8270:1: ( '#' )
+            // InternalPerspectiveDsl.g:8271:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); 
             }
-            match(input,93,FOLLOW_2); if (state.failed) return ;
+            match(input,95,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); 
             }
@@ -27461,14 +28086,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2"
-    // InternalPerspectiveDsl.g:8083:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl ;
+    // InternalPerspectiveDsl.g:8280: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:8087:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl )
-            // InternalPerspectiveDsl.g:8088:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl
+            // InternalPerspectiveDsl.g:8284:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl )
+            // InternalPerspectiveDsl.g:8285:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl();
@@ -27494,22 +28119,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl"
-    // InternalPerspectiveDsl.g:8094:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl : ( '[' ) ;
+    // InternalPerspectiveDsl.g:8291: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:8098:1: ( ( '[' ) )
-            // InternalPerspectiveDsl.g:8099:1: ( '[' )
+            // InternalPerspectiveDsl.g:8295:1: ( ( '[' ) )
+            // InternalPerspectiveDsl.g:8296:1: ( '[' )
             {
-            // InternalPerspectiveDsl.g:8099:1: ( '[' )
-            // InternalPerspectiveDsl.g:8100:2: '['
+            // InternalPerspectiveDsl.g:8296:1: ( '[' )
+            // InternalPerspectiveDsl.g:8297:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
-            match(input,94,FOLLOW_2); if (state.failed) return ;
+            match(input,96,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
@@ -27535,16 +28160,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__0"
-    // InternalPerspectiveDsl.g:8110:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0 : rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 ;
+    // InternalPerspectiveDsl.g:8307: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:8114:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 )
-            // InternalPerspectiveDsl.g:8115:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1
+            // InternalPerspectiveDsl.g:8311:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 )
+            // InternalPerspectiveDsl.g:8312:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl();
 
             state._fsp--;
@@ -27573,23 +28198,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:8122:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:8319: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:8126:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) )
-            // InternalPerspectiveDsl.g:8127:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            // InternalPerspectiveDsl.g:8323:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) )
+            // InternalPerspectiveDsl.g:8324:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:8127:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
-            // InternalPerspectiveDsl.g:8128:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            // InternalPerspectiveDsl.g:8324:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            // InternalPerspectiveDsl.g:8325:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:8129:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
-            // InternalPerspectiveDsl.g:8129:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0
+            // InternalPerspectiveDsl.g:8326:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            // InternalPerspectiveDsl.g:8326:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0();
@@ -27624,14 +28249,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__1"
-    // InternalPerspectiveDsl.g:8137:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl ;
+    // InternalPerspectiveDsl.g:8334: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:8141:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl )
-            // InternalPerspectiveDsl.g:8142:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl
+            // InternalPerspectiveDsl.g:8338:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:8339:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl();
@@ -27657,37 +28282,37 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl"
-    // InternalPerspectiveDsl.g:8148:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:8345: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:8152:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:8153:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:8349:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:8350:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:8153:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
-            // InternalPerspectiveDsl.g:8154:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:8350:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:8351:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1()); 
             }
-            // InternalPerspectiveDsl.g:8155:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:8352:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
             loop64:
             do {
                 int alt64=2;
                 int LA64_0 = input.LA(1);
 
-                if ( (LA64_0==91) ) {
+                if ( (LA64_0==93) ) {
                     alt64=1;
                 }
 
 
                 switch (alt64) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:8155:3: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0
+            	    // InternalPerspectiveDsl.g:8352:3: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0();
 
             	    state._fsp--;
@@ -27726,16 +28351,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0"
-    // InternalPerspectiveDsl.g:8164: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:8361: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:8168:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 )
-            // InternalPerspectiveDsl.g:8169:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
+            // InternalPerspectiveDsl.g:8365:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 )
+            // InternalPerspectiveDsl.g:8366:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl();
 
             state._fsp--;
@@ -27764,22 +28389,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:8176:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:8373: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:8180:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:8181:1: ( ',' )
+            // InternalPerspectiveDsl.g:8377:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:8378:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:8181:1: ( ',' )
-            // InternalPerspectiveDsl.g:8182:2: ','
+            // InternalPerspectiveDsl.g:8378:1: ( ',' )
+            // InternalPerspectiveDsl.g:8379:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); 
             }
@@ -27805,14 +28430,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1"
-    // InternalPerspectiveDsl.g:8191:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:8388: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:8195:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:8196:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl
+            // InternalPerspectiveDsl.g:8392:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:8393:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl();
@@ -27838,23 +28463,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:8202:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:8399: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:8206:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:8207:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:8403:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:8404:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:8207:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
-            // InternalPerspectiveDsl.g:8208:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            // InternalPerspectiveDsl.g:8404:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:8405:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:8209:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
-            // InternalPerspectiveDsl.g:8209:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1
+            // InternalPerspectiveDsl.g:8406:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            // InternalPerspectiveDsl.g:8406:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1();
@@ -27889,16 +28514,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__0"
-    // InternalPerspectiveDsl.g:8218:1: rule__XAnnotationElementValueOrCommaList__Group_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 ;
+    // InternalPerspectiveDsl.g:8415: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:8222:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 )
-            // InternalPerspectiveDsl.g:8223:2: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1
+            // InternalPerspectiveDsl.g:8419:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 )
+            // InternalPerspectiveDsl.g:8420:2: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl();
 
             state._fsp--;
@@ -27927,17 +28552,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:8230:1: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl : ( ruleXAnnotationOrExpression ) ;
+    // InternalPerspectiveDsl.g:8427: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:8234:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalPerspectiveDsl.g:8235:1: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:8431:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:8432:1: ( ruleXAnnotationOrExpression )
             {
-            // InternalPerspectiveDsl.g:8235:1: ( ruleXAnnotationOrExpression )
-            // InternalPerspectiveDsl.g:8236:2: ruleXAnnotationOrExpression
+            // InternalPerspectiveDsl.g:8432:1: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:8433:2: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
@@ -27972,14 +28597,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__1"
-    // InternalPerspectiveDsl.g:8245:1: rule__XAnnotationElementValueOrCommaList__Group_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:8442: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:8249:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:8250:2: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:8446:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:8447:2: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl();
@@ -28005,31 +28630,31 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:8256:1: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:8453: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:8260:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) )
-            // InternalPerspectiveDsl.g:8261:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            // InternalPerspectiveDsl.g:8457:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) )
+            // InternalPerspectiveDsl.g:8458:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:8261:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
-            // InternalPerspectiveDsl.g:8262:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            // InternalPerspectiveDsl.g:8458:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            // InternalPerspectiveDsl.g:8459:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1()); 
             }
-            // InternalPerspectiveDsl.g:8263:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            // InternalPerspectiveDsl.g:8460:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
             int alt65=2;
             int LA65_0 = input.LA(1);
 
-            if ( (LA65_0==91) ) {
+            if ( (LA65_0==93) ) {
                 alt65=1;
             }
             switch (alt65) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8263:3: rule__XAnnotationElementValueOrCommaList__Group_1_1__0
+                    // InternalPerspectiveDsl.g:8460:3: rule__XAnnotationElementValueOrCommaList__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_1_1__0();
@@ -28067,16 +28692,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__0"
-    // InternalPerspectiveDsl.g:8272:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 ;
+    // InternalPerspectiveDsl.g:8469: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:8276:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 )
-            // InternalPerspectiveDsl.g:8277:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1
+            // InternalPerspectiveDsl.g:8473:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 )
+            // InternalPerspectiveDsl.g:8474:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl();
 
             state._fsp--;
@@ -28105,23 +28730,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:8284:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:8481: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:8288:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:8289:1: ( () )
+            // InternalPerspectiveDsl.g:8485:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:8486:1: ( () )
             {
-            // InternalPerspectiveDsl.g:8289:1: ( () )
-            // InternalPerspectiveDsl.g:8290:2: ()
+            // InternalPerspectiveDsl.g:8486:1: ( () )
+            // InternalPerspectiveDsl.g:8487:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:8291:2: ()
-            // InternalPerspectiveDsl.g:8291:3: 
+            // InternalPerspectiveDsl.g:8488:2: ()
+            // InternalPerspectiveDsl.g:8488:3: 
             {
             }
 
@@ -28146,14 +28771,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__1"
-    // InternalPerspectiveDsl.g:8299:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:8496: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:8303:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:8304:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl
+            // InternalPerspectiveDsl.g:8500:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:8501:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl();
@@ -28179,28 +28804,28 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:8310:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) ;
+    // InternalPerspectiveDsl.g:8507: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:8314:1: ( ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) )
-            // InternalPerspectiveDsl.g:8315:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:8511:1: ( ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) )
+            // InternalPerspectiveDsl.g:8512:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
             {
-            // InternalPerspectiveDsl.g:8315:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:8316:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:8512:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:8513:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:8316:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) )
-            // InternalPerspectiveDsl.g:8317:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            // InternalPerspectiveDsl.g:8513:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) )
+            // InternalPerspectiveDsl.g:8514:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:8318:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
-            // InternalPerspectiveDsl.g:8318:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            // InternalPerspectiveDsl.g:8515:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            // InternalPerspectiveDsl.g:8515:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
             {
-            pushFollow(FOLLOW_51);
+            pushFollow(FOLLOW_53);
             rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
 
             state._fsp--;
@@ -28214,28 +28839,28 @@
 
             }
 
-            // InternalPerspectiveDsl.g:8321:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
-            // InternalPerspectiveDsl.g:8322:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:8518:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:8519:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:8323:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:8520:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
             loop66:
             do {
                 int alt66=2;
                 int LA66_0 = input.LA(1);
 
-                if ( (LA66_0==91) ) {
+                if ( (LA66_0==93) ) {
                     alt66=1;
                 }
 
 
                 switch (alt66) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:8323:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            	    // InternalPerspectiveDsl.g:8520:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
 
             	    state._fsp--;
@@ -28277,16 +28902,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0"
-    // InternalPerspectiveDsl.g:8333: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:8530: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:8337:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 )
-            // InternalPerspectiveDsl.g:8338:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
+            // InternalPerspectiveDsl.g:8534:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 )
+            // InternalPerspectiveDsl.g:8535:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl();
 
             state._fsp--;
@@ -28315,22 +28940,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:8345:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:8542: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:8349:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:8350:1: ( ',' )
+            // InternalPerspectiveDsl.g:8546:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:8547:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:8350:1: ( ',' )
-            // InternalPerspectiveDsl.g:8351:2: ','
+            // InternalPerspectiveDsl.g:8547:1: ( ',' )
+            // InternalPerspectiveDsl.g:8548:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); 
             }
@@ -28356,14 +28981,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1"
-    // InternalPerspectiveDsl.g:8360:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:8557: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:8364:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:8365:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl
+            // InternalPerspectiveDsl.g:8561:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:8562:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl();
@@ -28389,23 +29014,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:8371:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:8568: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:8375:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:8376:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:8572:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:8573:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:8376:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
-            // InternalPerspectiveDsl.g:8377:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            // InternalPerspectiveDsl.g:8573:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:8574:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:8378:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
-            // InternalPerspectiveDsl.g:8378:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1
+            // InternalPerspectiveDsl.g:8575:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            // InternalPerspectiveDsl.g:8575:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1();
@@ -28440,16 +29065,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__0"
-    // InternalPerspectiveDsl.g:8387:1: rule__XAnnotationElementValue__Group_0__0 : rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 ;
+    // InternalPerspectiveDsl.g:8584: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:8391:1: ( rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 )
-            // InternalPerspectiveDsl.g:8392:2: rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1
+            // InternalPerspectiveDsl.g:8588:1: ( rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 )
+            // InternalPerspectiveDsl.g:8589:2: rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1
             {
-            pushFollow(FOLLOW_54);
+            pushFollow(FOLLOW_56);
             rule__XAnnotationElementValue__Group_0__0__Impl();
 
             state._fsp--;
@@ -28478,23 +29103,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:8399:1: rule__XAnnotationElementValue__Group_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:8596: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:8403:1: ( ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:8404:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8600:1: ( ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:8601:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:8404:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
-            // InternalPerspectiveDsl.g:8405:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:8601:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8602:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0()); 
             }
-            // InternalPerspectiveDsl.g:8406:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
-            // InternalPerspectiveDsl.g:8406:3: rule__XAnnotationElementValue__Group_0_0__0
+            // InternalPerspectiveDsl.g:8603:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:8603:3: rule__XAnnotationElementValue__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0__0();
@@ -28529,16 +29154,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__1"
-    // InternalPerspectiveDsl.g:8414:1: rule__XAnnotationElementValue__Group_0__1 : rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 ;
+    // InternalPerspectiveDsl.g:8611: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:8418:1: ( rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 )
-            // InternalPerspectiveDsl.g:8419:2: rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2
+            // InternalPerspectiveDsl.g:8615:1: ( rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 )
+            // InternalPerspectiveDsl.g:8616:2: rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2
             {
-            pushFollow(FOLLOW_54);
+            pushFollow(FOLLOW_56);
             rule__XAnnotationElementValue__Group_0__1__Impl();
 
             state._fsp--;
@@ -28567,31 +29192,31 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__1__Impl"
-    // InternalPerspectiveDsl.g:8426:1: rule__XAnnotationElementValue__Group_0__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:8623: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:8430:1: ( ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) )
-            // InternalPerspectiveDsl.g:8431:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            // InternalPerspectiveDsl.g:8627:1: ( ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) )
+            // InternalPerspectiveDsl.g:8628:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:8431:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
-            // InternalPerspectiveDsl.g:8432:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            // InternalPerspectiveDsl.g:8628:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            // InternalPerspectiveDsl.g:8629:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1()); 
             }
-            // InternalPerspectiveDsl.g:8433:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            // InternalPerspectiveDsl.g:8630:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
             int alt67=2;
             int LA67_0 = input.LA(1);
 
-            if ( ((LA67_0>=RULE_ID && LA67_0<=RULE_DECIMAL)||LA67_0==27||(LA67_0>=34 && LA67_0<=35)||LA67_0==40||(LA67_0>=45 && LA67_0<=50)||LA67_0==54||(LA67_0>=88 && LA67_0<=89)||(LA67_0>=93 && LA67_0<=94)||LA67_0==97||LA67_0==99||(LA67_0>=103 && LA67_0<=111)||LA67_0==113||LA67_0==124) ) {
+            if ( ((LA67_0>=RULE_ID && LA67_0<=RULE_DECIMAL)||LA67_0==27||(LA67_0>=34 && LA67_0<=35)||LA67_0==40||(LA67_0>=45 && LA67_0<=50)||LA67_0==54||(LA67_0>=90 && LA67_0<=91)||(LA67_0>=95 && LA67_0<=96)||LA67_0==99||LA67_0==101||(LA67_0>=105 && LA67_0<=113)||LA67_0==115||LA67_0==126) ) {
                 alt67=1;
             }
             switch (alt67) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8433:3: rule__XAnnotationElementValue__Group_0_1__0
+                    // InternalPerspectiveDsl.g:8630:3: rule__XAnnotationElementValue__Group_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValue__Group_0_1__0();
@@ -28629,14 +29254,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__2"
-    // InternalPerspectiveDsl.g:8441:1: rule__XAnnotationElementValue__Group_0__2 : rule__XAnnotationElementValue__Group_0__2__Impl ;
+    // InternalPerspectiveDsl.g:8638: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:8445:1: ( rule__XAnnotationElementValue__Group_0__2__Impl )
-            // InternalPerspectiveDsl.g:8446:2: rule__XAnnotationElementValue__Group_0__2__Impl
+            // InternalPerspectiveDsl.g:8642:1: ( rule__XAnnotationElementValue__Group_0__2__Impl )
+            // InternalPerspectiveDsl.g:8643:2: rule__XAnnotationElementValue__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0__2__Impl();
@@ -28662,22 +29287,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__2__Impl"
-    // InternalPerspectiveDsl.g:8452:1: rule__XAnnotationElementValue__Group_0__2__Impl : ( ']' ) ;
+    // InternalPerspectiveDsl.g:8649:1: rule__XAnnotationElementValue__Group_0__2__Impl : ( ']' ) ;
     public final void rule__XAnnotationElementValue__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8456:1: ( ( ']' ) )
-            // InternalPerspectiveDsl.g:8457:1: ( ']' )
+            // InternalPerspectiveDsl.g:8653:1: ( ( ']' ) )
+            // InternalPerspectiveDsl.g:8654:1: ( ']' )
             {
-            // InternalPerspectiveDsl.g:8457:1: ( ']' )
-            // InternalPerspectiveDsl.g:8458:2: ']'
+            // InternalPerspectiveDsl.g:8654:1: ( ']' )
+            // InternalPerspectiveDsl.g:8655:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); 
             }
-            match(input,92,FOLLOW_2); if (state.failed) return ;
+            match(input,94,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); 
             }
@@ -28703,14 +29328,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0__0"
-    // InternalPerspectiveDsl.g:8468:1: rule__XAnnotationElementValue__Group_0_0__0 : rule__XAnnotationElementValue__Group_0_0__0__Impl ;
+    // InternalPerspectiveDsl.g:8665: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:8472:1: ( rule__XAnnotationElementValue__Group_0_0__0__Impl )
-            // InternalPerspectiveDsl.g:8473:2: rule__XAnnotationElementValue__Group_0_0__0__Impl
+            // InternalPerspectiveDsl.g:8669:1: ( rule__XAnnotationElementValue__Group_0_0__0__Impl )
+            // InternalPerspectiveDsl.g:8670:2: rule__XAnnotationElementValue__Group_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0__0__Impl();
@@ -28736,23 +29361,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:8479:1: rule__XAnnotationElementValue__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:8676: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:8483:1: ( ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:8484:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8680:1: ( ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:8681:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:8484:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
-            // InternalPerspectiveDsl.g:8485:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            // InternalPerspectiveDsl.g:8681:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8682:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:8486:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
-            // InternalPerspectiveDsl.g:8486:3: rule__XAnnotationElementValue__Group_0_0_0__0
+            // InternalPerspectiveDsl.g:8683:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            // InternalPerspectiveDsl.g:8683:3: rule__XAnnotationElementValue__Group_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0_0__0();
@@ -28787,16 +29412,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__0"
-    // InternalPerspectiveDsl.g:8495: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:8692: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:8499:1: ( rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 )
-            // InternalPerspectiveDsl.g:8500:2: rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1
+            // InternalPerspectiveDsl.g:8696:1: ( rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 )
+            // InternalPerspectiveDsl.g:8697:2: rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1
             {
-            pushFollow(FOLLOW_55);
+            pushFollow(FOLLOW_57);
             rule__XAnnotationElementValue__Group_0_0_0__0__Impl();
 
             state._fsp--;
@@ -28825,23 +29450,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:8507:1: rule__XAnnotationElementValue__Group_0_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:8704: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:8511:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:8512:1: ( () )
+            // InternalPerspectiveDsl.g:8708:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:8709:1: ( () )
             {
-            // InternalPerspectiveDsl.g:8512:1: ( () )
-            // InternalPerspectiveDsl.g:8513:2: ()
+            // InternalPerspectiveDsl.g:8709:1: ( () )
+            // InternalPerspectiveDsl.g:8710:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:8514:2: ()
-            // InternalPerspectiveDsl.g:8514:3: 
+            // InternalPerspectiveDsl.g:8711:2: ()
+            // InternalPerspectiveDsl.g:8711:3: 
             {
             }
 
@@ -28866,16 +29491,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__1"
-    // InternalPerspectiveDsl.g:8522: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:8719: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:8526:1: ( rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 )
-            // InternalPerspectiveDsl.g:8527:2: rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2
+            // InternalPerspectiveDsl.g:8723:1: ( rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 )
+            // InternalPerspectiveDsl.g:8724:2: rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2
             {
-            pushFollow(FOLLOW_56);
+            pushFollow(FOLLOW_58);
             rule__XAnnotationElementValue__Group_0_0_0__1__Impl();
 
             state._fsp--;
@@ -28904,22 +29529,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:8534:1: rule__XAnnotationElementValue__Group_0_0_0__1__Impl : ( '#' ) ;
+    // InternalPerspectiveDsl.g:8731: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:8538:1: ( ( '#' ) )
-            // InternalPerspectiveDsl.g:8539:1: ( '#' )
+            // InternalPerspectiveDsl.g:8735:1: ( ( '#' ) )
+            // InternalPerspectiveDsl.g:8736:1: ( '#' )
             {
-            // InternalPerspectiveDsl.g:8539:1: ( '#' )
-            // InternalPerspectiveDsl.g:8540:2: '#'
+            // InternalPerspectiveDsl.g:8736:1: ( '#' )
+            // InternalPerspectiveDsl.g:8737:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); 
             }
-            match(input,93,FOLLOW_2); if (state.failed) return ;
+            match(input,95,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); 
             }
@@ -28945,14 +29570,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__2"
-    // InternalPerspectiveDsl.g:8549:1: rule__XAnnotationElementValue__Group_0_0_0__2 : rule__XAnnotationElementValue__Group_0_0_0__2__Impl ;
+    // InternalPerspectiveDsl.g:8746: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:8553:1: ( rule__XAnnotationElementValue__Group_0_0_0__2__Impl )
-            // InternalPerspectiveDsl.g:8554:2: rule__XAnnotationElementValue__Group_0_0_0__2__Impl
+            // InternalPerspectiveDsl.g:8750:1: ( rule__XAnnotationElementValue__Group_0_0_0__2__Impl )
+            // InternalPerspectiveDsl.g:8751:2: rule__XAnnotationElementValue__Group_0_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0_0__2__Impl();
@@ -28978,22 +29603,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__2__Impl"
-    // InternalPerspectiveDsl.g:8560:1: rule__XAnnotationElementValue__Group_0_0_0__2__Impl : ( '[' ) ;
+    // InternalPerspectiveDsl.g:8757: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:8564:1: ( ( '[' ) )
-            // InternalPerspectiveDsl.g:8565:1: ( '[' )
+            // InternalPerspectiveDsl.g:8761:1: ( ( '[' ) )
+            // InternalPerspectiveDsl.g:8762:1: ( '[' )
             {
-            // InternalPerspectiveDsl.g:8565:1: ( '[' )
-            // InternalPerspectiveDsl.g:8566:2: '['
+            // InternalPerspectiveDsl.g:8762:1: ( '[' )
+            // InternalPerspectiveDsl.g:8763:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
-            match(input,94,FOLLOW_2); if (state.failed) return ;
+            match(input,96,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
@@ -29019,16 +29644,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__0"
-    // InternalPerspectiveDsl.g:8576:1: rule__XAnnotationElementValue__Group_0_1__0 : rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 ;
+    // InternalPerspectiveDsl.g:8773: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:8580:1: ( rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 )
-            // InternalPerspectiveDsl.g:8581:2: rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1
+            // InternalPerspectiveDsl.g:8777:1: ( rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 )
+            // InternalPerspectiveDsl.g:8778:2: rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__XAnnotationElementValue__Group_0_1__0__Impl();
 
             state._fsp--;
@@ -29057,23 +29682,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:8588:1: rule__XAnnotationElementValue__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:8785: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:8592:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) )
-            // InternalPerspectiveDsl.g:8593:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            // InternalPerspectiveDsl.g:8789:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) )
+            // InternalPerspectiveDsl.g:8790:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:8593:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
-            // InternalPerspectiveDsl.g:8594:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            // InternalPerspectiveDsl.g:8790:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            // InternalPerspectiveDsl.g:8791:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:8595:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
-            // InternalPerspectiveDsl.g:8595:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_0
+            // InternalPerspectiveDsl.g:8792:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            // InternalPerspectiveDsl.g:8792:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__ElementsAssignment_0_1_0();
@@ -29108,14 +29733,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__1"
-    // InternalPerspectiveDsl.g:8603:1: rule__XAnnotationElementValue__Group_0_1__1 : rule__XAnnotationElementValue__Group_0_1__1__Impl ;
+    // InternalPerspectiveDsl.g:8800: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:8607:1: ( rule__XAnnotationElementValue__Group_0_1__1__Impl )
-            // InternalPerspectiveDsl.g:8608:2: rule__XAnnotationElementValue__Group_0_1__1__Impl
+            // InternalPerspectiveDsl.g:8804:1: ( rule__XAnnotationElementValue__Group_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:8805:2: rule__XAnnotationElementValue__Group_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_1__1__Impl();
@@ -29141,37 +29766,37 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__1__Impl"
-    // InternalPerspectiveDsl.g:8614:1: rule__XAnnotationElementValue__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:8811: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:8618:1: ( ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:8619:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:8815:1: ( ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:8816:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:8619:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
-            // InternalPerspectiveDsl.g:8620:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:8816:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:8817:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1()); 
             }
-            // InternalPerspectiveDsl.g:8621:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:8818:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
             loop68:
             do {
                 int alt68=2;
                 int LA68_0 = input.LA(1);
 
-                if ( (LA68_0==91) ) {
+                if ( (LA68_0==93) ) {
                     alt68=1;
                 }
 
 
                 switch (alt68) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:8621:3: rule__XAnnotationElementValue__Group_0_1_1__0
+            	    // InternalPerspectiveDsl.g:8818:3: rule__XAnnotationElementValue__Group_0_1_1__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XAnnotationElementValue__Group_0_1_1__0();
 
             	    state._fsp--;
@@ -29210,16 +29835,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__0"
-    // InternalPerspectiveDsl.g:8630: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:8827: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:8634:1: ( rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 )
-            // InternalPerspectiveDsl.g:8635:2: rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1
+            // InternalPerspectiveDsl.g:8831:1: ( rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 )
+            // InternalPerspectiveDsl.g:8832:2: rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XAnnotationElementValue__Group_0_1_1__0__Impl();
 
             state._fsp--;
@@ -29248,22 +29873,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:8642:1: rule__XAnnotationElementValue__Group_0_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:8839: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:8646:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:8647:1: ( ',' )
+            // InternalPerspectiveDsl.g:8843:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:8844:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:8647:1: ( ',' )
-            // InternalPerspectiveDsl.g:8648:2: ','
+            // InternalPerspectiveDsl.g:8844:1: ( ',' )
+            // InternalPerspectiveDsl.g:8845:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); 
             }
@@ -29289,14 +29914,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__1"
-    // InternalPerspectiveDsl.g:8657:1: rule__XAnnotationElementValue__Group_0_1_1__1 : rule__XAnnotationElementValue__Group_0_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:8854: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:8661:1: ( rule__XAnnotationElementValue__Group_0_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:8662:2: rule__XAnnotationElementValue__Group_0_1_1__1__Impl
+            // InternalPerspectiveDsl.g:8858:1: ( rule__XAnnotationElementValue__Group_0_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:8859:2: rule__XAnnotationElementValue__Group_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_1_1__1__Impl();
@@ -29322,23 +29947,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:8668:1: rule__XAnnotationElementValue__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:8865: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:8672:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:8673:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:8869:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:8870:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:8673:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
-            // InternalPerspectiveDsl.g:8674:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            // InternalPerspectiveDsl.g:8870:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:8871:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:8675:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
-            // InternalPerspectiveDsl.g:8675:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1
+            // InternalPerspectiveDsl.g:8872:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            // InternalPerspectiveDsl.g:8872:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1();
@@ -29373,16 +29998,16 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__0"
-    // InternalPerspectiveDsl.g:8684:1: rule__XAssignment__Group_0__0 : rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 ;
+    // InternalPerspectiveDsl.g:8881: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:8688:1: ( rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 )
-            // InternalPerspectiveDsl.g:8689:2: rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1
+            // InternalPerspectiveDsl.g:8885:1: ( rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 )
+            // InternalPerspectiveDsl.g:8886:2: rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1
             {
-            pushFollow(FOLLOW_57);
+            pushFollow(FOLLOW_59);
             rule__XAssignment__Group_0__0__Impl();
 
             state._fsp--;
@@ -29411,23 +30036,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:8696:1: rule__XAssignment__Group_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:8893:1: rule__XAssignment__Group_0__0__Impl : ( () ) ;
     public final void rule__XAssignment__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8700:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:8701:1: ( () )
+            // InternalPerspectiveDsl.g:8897:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:8898:1: ( () )
             {
-            // InternalPerspectiveDsl.g:8701:1: ( () )
-            // InternalPerspectiveDsl.g:8702:2: ()
+            // InternalPerspectiveDsl.g:8898:1: ( () )
+            // InternalPerspectiveDsl.g:8899:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0()); 
             }
-            // InternalPerspectiveDsl.g:8703:2: ()
-            // InternalPerspectiveDsl.g:8703:3: 
+            // InternalPerspectiveDsl.g:8900:2: ()
+            // InternalPerspectiveDsl.g:8900:3: 
             {
             }
 
@@ -29452,16 +30077,16 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__1"
-    // InternalPerspectiveDsl.g:8711:1: rule__XAssignment__Group_0__1 : rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 ;
+    // InternalPerspectiveDsl.g:8908: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:8715:1: ( rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 )
-            // InternalPerspectiveDsl.g:8716:2: rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2
+            // InternalPerspectiveDsl.g:8912:1: ( rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 )
+            // InternalPerspectiveDsl.g:8913:2: rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2
             {
-            pushFollow(FOLLOW_53);
+            pushFollow(FOLLOW_55);
             rule__XAssignment__Group_0__1__Impl();
 
             state._fsp--;
@@ -29490,23 +30115,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__1__Impl"
-    // InternalPerspectiveDsl.g:8723:1: rule__XAssignment__Group_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:8920: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:8727:1: ( ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) )
-            // InternalPerspectiveDsl.g:8728:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            // InternalPerspectiveDsl.g:8924:1: ( ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) )
+            // InternalPerspectiveDsl.g:8925:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:8728:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
-            // InternalPerspectiveDsl.g:8729:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            // InternalPerspectiveDsl.g:8925:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            // InternalPerspectiveDsl.g:8926:2: ( rule__XAssignment__FeatureAssignment_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1()); 
             }
-            // InternalPerspectiveDsl.g:8730:2: ( rule__XAssignment__FeatureAssignment_0_1 )
-            // InternalPerspectiveDsl.g:8730:3: rule__XAssignment__FeatureAssignment_0_1
+            // InternalPerspectiveDsl.g:8927:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            // InternalPerspectiveDsl.g:8927:3: rule__XAssignment__FeatureAssignment_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__FeatureAssignment_0_1();
@@ -29541,16 +30166,16 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__2"
-    // InternalPerspectiveDsl.g:8738:1: rule__XAssignment__Group_0__2 : rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 ;
+    // InternalPerspectiveDsl.g:8935: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:8742:1: ( rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 )
-            // InternalPerspectiveDsl.g:8743:2: rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3
+            // InternalPerspectiveDsl.g:8939:1: ( rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 )
+            // InternalPerspectiveDsl.g:8940:2: rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XAssignment__Group_0__2__Impl();
 
             state._fsp--;
@@ -29579,17 +30204,17 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__2__Impl"
-    // InternalPerspectiveDsl.g:8750:1: rule__XAssignment__Group_0__2__Impl : ( ruleOpSingleAssign ) ;
+    // InternalPerspectiveDsl.g:8947: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:8754:1: ( ( ruleOpSingleAssign ) )
-            // InternalPerspectiveDsl.g:8755:1: ( ruleOpSingleAssign )
+            // InternalPerspectiveDsl.g:8951:1: ( ( ruleOpSingleAssign ) )
+            // InternalPerspectiveDsl.g:8952:1: ( ruleOpSingleAssign )
             {
-            // InternalPerspectiveDsl.g:8755:1: ( ruleOpSingleAssign )
-            // InternalPerspectiveDsl.g:8756:2: ruleOpSingleAssign
+            // InternalPerspectiveDsl.g:8952:1: ( ruleOpSingleAssign )
+            // InternalPerspectiveDsl.g:8953:2: ruleOpSingleAssign
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
@@ -29624,14 +30249,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__3"
-    // InternalPerspectiveDsl.g:8765:1: rule__XAssignment__Group_0__3 : rule__XAssignment__Group_0__3__Impl ;
+    // InternalPerspectiveDsl.g:8962: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:8769:1: ( rule__XAssignment__Group_0__3__Impl )
-            // InternalPerspectiveDsl.g:8770:2: rule__XAssignment__Group_0__3__Impl
+            // InternalPerspectiveDsl.g:8966:1: ( rule__XAssignment__Group_0__3__Impl )
+            // InternalPerspectiveDsl.g:8967:2: rule__XAssignment__Group_0__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_0__3__Impl();
@@ -29657,23 +30282,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__3__Impl"
-    // InternalPerspectiveDsl.g:8776:1: rule__XAssignment__Group_0__3__Impl : ( ( rule__XAssignment__ValueAssignment_0_3 ) ) ;
+    // InternalPerspectiveDsl.g:8973: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:8780:1: ( ( ( rule__XAssignment__ValueAssignment_0_3 ) ) )
-            // InternalPerspectiveDsl.g:8781:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            // InternalPerspectiveDsl.g:8977:1: ( ( ( rule__XAssignment__ValueAssignment_0_3 ) ) )
+            // InternalPerspectiveDsl.g:8978:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
             {
-            // InternalPerspectiveDsl.g:8781:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
-            // InternalPerspectiveDsl.g:8782:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            // InternalPerspectiveDsl.g:8978:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            // InternalPerspectiveDsl.g:8979:2: ( rule__XAssignment__ValueAssignment_0_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3()); 
             }
-            // InternalPerspectiveDsl.g:8783:2: ( rule__XAssignment__ValueAssignment_0_3 )
-            // InternalPerspectiveDsl.g:8783:3: rule__XAssignment__ValueAssignment_0_3
+            // InternalPerspectiveDsl.g:8980:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            // InternalPerspectiveDsl.g:8980:3: rule__XAssignment__ValueAssignment_0_3
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__ValueAssignment_0_3();
@@ -29708,16 +30333,16 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__0"
-    // InternalPerspectiveDsl.g:8792:1: rule__XAssignment__Group_1__0 : rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 ;
+    // InternalPerspectiveDsl.g:8989: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:8796:1: ( rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 )
-            // InternalPerspectiveDsl.g:8797:2: rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1
+            // InternalPerspectiveDsl.g:8993:1: ( rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 )
+            // InternalPerspectiveDsl.g:8994:2: rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1
             {
-            pushFollow(FOLLOW_58);
+            pushFollow(FOLLOW_60);
             rule__XAssignment__Group_1__0__Impl();
 
             state._fsp--;
@@ -29746,17 +30371,17 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:8804:1: rule__XAssignment__Group_1__0__Impl : ( ruleXOrExpression ) ;
+    // InternalPerspectiveDsl.g:9001: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:8808:1: ( ( ruleXOrExpression ) )
-            // InternalPerspectiveDsl.g:8809:1: ( ruleXOrExpression )
+            // InternalPerspectiveDsl.g:9005:1: ( ( ruleXOrExpression ) )
+            // InternalPerspectiveDsl.g:9006:1: ( ruleXOrExpression )
             {
-            // InternalPerspectiveDsl.g:8809:1: ( ruleXOrExpression )
-            // InternalPerspectiveDsl.g:8810:2: ruleXOrExpression
+            // InternalPerspectiveDsl.g:9006:1: ( ruleXOrExpression )
+            // InternalPerspectiveDsl.g:9007:2: ruleXOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
@@ -29791,14 +30416,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__1"
-    // InternalPerspectiveDsl.g:8819:1: rule__XAssignment__Group_1__1 : rule__XAssignment__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:9016: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:8823:1: ( rule__XAssignment__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:8824:2: rule__XAssignment__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:9020:1: ( rule__XAssignment__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:9021:2: rule__XAssignment__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1__1__Impl();
@@ -29824,27 +30449,27 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:8830:1: rule__XAssignment__Group_1__1__Impl : ( ( rule__XAssignment__Group_1_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:9027: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:8834:1: ( ( ( rule__XAssignment__Group_1_1__0 )? ) )
-            // InternalPerspectiveDsl.g:8835:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            // InternalPerspectiveDsl.g:9031:1: ( ( ( rule__XAssignment__Group_1_1__0 )? ) )
+            // InternalPerspectiveDsl.g:9032:1: ( ( rule__XAssignment__Group_1_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:8835:1: ( ( rule__XAssignment__Group_1_1__0 )? )
-            // InternalPerspectiveDsl.g:8836:2: ( rule__XAssignment__Group_1_1__0 )?
+            // InternalPerspectiveDsl.g:9032:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            // InternalPerspectiveDsl.g:9033:2: ( rule__XAssignment__Group_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getGroup_1_1()); 
             }
-            // InternalPerspectiveDsl.g:8837:2: ( rule__XAssignment__Group_1_1__0 )?
+            // InternalPerspectiveDsl.g:9034:2: ( rule__XAssignment__Group_1_1__0 )?
             int alt69=2;
             alt69 = dfa69.predict(input);
             switch (alt69) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8837:3: rule__XAssignment__Group_1_1__0
+                    // InternalPerspectiveDsl.g:9034:3: rule__XAssignment__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_1_1__0();
@@ -29882,16 +30507,16 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__0"
-    // InternalPerspectiveDsl.g:8846:1: rule__XAssignment__Group_1_1__0 : rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 ;
+    // InternalPerspectiveDsl.g:9043: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:8850:1: ( rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 )
-            // InternalPerspectiveDsl.g:8851:2: rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1
+            // InternalPerspectiveDsl.g:9047:1: ( rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 )
+            // InternalPerspectiveDsl.g:9048:2: rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XAssignment__Group_1_1__0__Impl();
 
             state._fsp--;
@@ -29920,23 +30545,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:8858:1: rule__XAssignment__Group_1_1__0__Impl : ( ( rule__XAssignment__Group_1_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:9055: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:8862:1: ( ( ( rule__XAssignment__Group_1_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:8863:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            // InternalPerspectiveDsl.g:9059:1: ( ( ( rule__XAssignment__Group_1_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9060:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:8863:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
-            // InternalPerspectiveDsl.g:8864:2: ( rule__XAssignment__Group_1_1_0__0 )
+            // InternalPerspectiveDsl.g:9060:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            // InternalPerspectiveDsl.g:9061:2: ( rule__XAssignment__Group_1_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:8865:2: ( rule__XAssignment__Group_1_1_0__0 )
-            // InternalPerspectiveDsl.g:8865:3: rule__XAssignment__Group_1_1_0__0
+            // InternalPerspectiveDsl.g:9062:2: ( rule__XAssignment__Group_1_1_0__0 )
+            // InternalPerspectiveDsl.g:9062:3: rule__XAssignment__Group_1_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0__0();
@@ -29971,14 +30596,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__1"
-    // InternalPerspectiveDsl.g:8873:1: rule__XAssignment__Group_1_1__1 : rule__XAssignment__Group_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:9070: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:8877:1: ( rule__XAssignment__Group_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:8878:2: rule__XAssignment__Group_1_1__1__Impl
+            // InternalPerspectiveDsl.g:9074:1: ( rule__XAssignment__Group_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:9075:2: rule__XAssignment__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1__1__Impl();
@@ -30004,23 +30629,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:8884:1: rule__XAssignment__Group_1_1__1__Impl : ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:9081: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:8888:1: ( ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:8889:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            // InternalPerspectiveDsl.g:9085:1: ( ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:9086:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:8889:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
-            // InternalPerspectiveDsl.g:8890:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            // InternalPerspectiveDsl.g:9086:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            // InternalPerspectiveDsl.g:9087:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:8891:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
-            // InternalPerspectiveDsl.g:8891:3: rule__XAssignment__RightOperandAssignment_1_1_1
+            // InternalPerspectiveDsl.g:9088:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            // InternalPerspectiveDsl.g:9088:3: rule__XAssignment__RightOperandAssignment_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__RightOperandAssignment_1_1_1();
@@ -30055,14 +30680,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0__0"
-    // InternalPerspectiveDsl.g:8900:1: rule__XAssignment__Group_1_1_0__0 : rule__XAssignment__Group_1_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:9097: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:8904:1: ( rule__XAssignment__Group_1_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:8905:2: rule__XAssignment__Group_1_1_0__0__Impl
+            // InternalPerspectiveDsl.g:9101:1: ( rule__XAssignment__Group_1_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:9102:2: rule__XAssignment__Group_1_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0__0__Impl();
@@ -30088,23 +30713,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:8911:1: rule__XAssignment__Group_1_1_0__0__Impl : ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:9108: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:8915:1: ( ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:8916:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9112:1: ( ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9113:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:8916:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:8917:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9113:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9114:2: ( rule__XAssignment__Group_1_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:8918:2: ( rule__XAssignment__Group_1_1_0_0__0 )
-            // InternalPerspectiveDsl.g:8918:3: rule__XAssignment__Group_1_1_0_0__0
+            // InternalPerspectiveDsl.g:9115:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9115:3: rule__XAssignment__Group_1_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0_0__0();
@@ -30139,16 +30764,16 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__0"
-    // InternalPerspectiveDsl.g:8927: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:9124: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:8931:1: ( rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 )
-            // InternalPerspectiveDsl.g:8932:2: rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1
+            // InternalPerspectiveDsl.g:9128:1: ( rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 )
+            // InternalPerspectiveDsl.g:9129:2: rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1
             {
-            pushFollow(FOLLOW_58);
+            pushFollow(FOLLOW_60);
             rule__XAssignment__Group_1_1_0_0__0__Impl();
 
             state._fsp--;
@@ -30177,23 +30802,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:8939:1: rule__XAssignment__Group_1_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:9136: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:8943:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:8944:1: ( () )
+            // InternalPerspectiveDsl.g:9140:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:9141:1: ( () )
             {
-            // InternalPerspectiveDsl.g:8944:1: ( () )
-            // InternalPerspectiveDsl.g:8945:2: ()
+            // InternalPerspectiveDsl.g:9141:1: ( () )
+            // InternalPerspectiveDsl.g:9142:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:8946:2: ()
-            // InternalPerspectiveDsl.g:8946:3: 
+            // InternalPerspectiveDsl.g:9143:2: ()
+            // InternalPerspectiveDsl.g:9143:3: 
             {
             }
 
@@ -30218,14 +30843,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__1"
-    // InternalPerspectiveDsl.g:8954:1: rule__XAssignment__Group_1_1_0_0__1 : rule__XAssignment__Group_1_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:9151: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:8958:1: ( rule__XAssignment__Group_1_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:8959:2: rule__XAssignment__Group_1_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:9155:1: ( rule__XAssignment__Group_1_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:9156:2: rule__XAssignment__Group_1_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0_0__1__Impl();
@@ -30251,23 +30876,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:8965:1: rule__XAssignment__Group_1_1_0_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:9162: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:8969:1: ( ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:8970:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:9166:1: ( ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:9167:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:8970:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:8971:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            // InternalPerspectiveDsl.g:9167:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:9168:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:8972:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
-            // InternalPerspectiveDsl.g:8972:3: rule__XAssignment__FeatureAssignment_1_1_0_0_1
+            // InternalPerspectiveDsl.g:9169:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            // InternalPerspectiveDsl.g:9169:3: rule__XAssignment__FeatureAssignment_1_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__FeatureAssignment_1_1_0_0_1();
@@ -30302,16 +30927,16 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__0"
-    // InternalPerspectiveDsl.g:8981:1: rule__OpMultiAssign__Group_5__0 : rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 ;
+    // InternalPerspectiveDsl.g:9178: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:8985:1: ( rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 )
-            // InternalPerspectiveDsl.g:8986:2: rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1
+            // InternalPerspectiveDsl.g:9182:1: ( rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 )
+            // InternalPerspectiveDsl.g:9183:2: rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1
             {
-            pushFollow(FOLLOW_59);
+            pushFollow(FOLLOW_61);
             rule__OpMultiAssign__Group_5__0__Impl();
 
             state._fsp--;
@@ -30340,17 +30965,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__0__Impl"
-    // InternalPerspectiveDsl.g:8993:1: rule__OpMultiAssign__Group_5__0__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:9190:1: rule__OpMultiAssign__Group_5__0__Impl : ( '<' ) ;
     public final void rule__OpMultiAssign__Group_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8997:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:8998:1: ( '<' )
+            // InternalPerspectiveDsl.g:9194:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:9195:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:8998:1: ( '<' )
-            // InternalPerspectiveDsl.g:8999:2: '<'
+            // InternalPerspectiveDsl.g:9195:1: ( '<' )
+            // InternalPerspectiveDsl.g:9196:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
@@ -30381,16 +31006,16 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__1"
-    // InternalPerspectiveDsl.g:9008:1: rule__OpMultiAssign__Group_5__1 : rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 ;
+    // InternalPerspectiveDsl.g:9205: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:9012:1: ( rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 )
-            // InternalPerspectiveDsl.g:9013:2: rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2
+            // InternalPerspectiveDsl.g:9209:1: ( rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 )
+            // InternalPerspectiveDsl.g:9210:2: rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2
             {
-            pushFollow(FOLLOW_53);
+            pushFollow(FOLLOW_55);
             rule__OpMultiAssign__Group_5__1__Impl();
 
             state._fsp--;
@@ -30419,17 +31044,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__1__Impl"
-    // InternalPerspectiveDsl.g:9020:1: rule__OpMultiAssign__Group_5__1__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:9217:1: rule__OpMultiAssign__Group_5__1__Impl : ( '<' ) ;
     public final void rule__OpMultiAssign__Group_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9024:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:9025:1: ( '<' )
+            // InternalPerspectiveDsl.g:9221:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:9222:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:9025:1: ( '<' )
-            // InternalPerspectiveDsl.g:9026:2: '<'
+            // InternalPerspectiveDsl.g:9222:1: ( '<' )
+            // InternalPerspectiveDsl.g:9223:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
@@ -30460,14 +31085,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__2"
-    // InternalPerspectiveDsl.g:9035:1: rule__OpMultiAssign__Group_5__2 : rule__OpMultiAssign__Group_5__2__Impl ;
+    // InternalPerspectiveDsl.g:9232: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:9039:1: ( rule__OpMultiAssign__Group_5__2__Impl )
-            // InternalPerspectiveDsl.g:9040:2: rule__OpMultiAssign__Group_5__2__Impl
+            // InternalPerspectiveDsl.g:9236:1: ( rule__OpMultiAssign__Group_5__2__Impl )
+            // InternalPerspectiveDsl.g:9237:2: rule__OpMultiAssign__Group_5__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpMultiAssign__Group_5__2__Impl();
@@ -30493,17 +31118,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__2__Impl"
-    // InternalPerspectiveDsl.g:9046:1: rule__OpMultiAssign__Group_5__2__Impl : ( '=' ) ;
+    // InternalPerspectiveDsl.g:9243:1: rule__OpMultiAssign__Group_5__2__Impl : ( '=' ) ;
     public final void rule__OpMultiAssign__Group_5__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9050:1: ( ( '=' ) )
-            // InternalPerspectiveDsl.g:9051:1: ( '=' )
+            // InternalPerspectiveDsl.g:9247:1: ( ( '=' ) )
+            // InternalPerspectiveDsl.g:9248:1: ( '=' )
             {
-            // InternalPerspectiveDsl.g:9051:1: ( '=' )
-            // InternalPerspectiveDsl.g:9052:2: '='
+            // InternalPerspectiveDsl.g:9248:1: ( '=' )
+            // InternalPerspectiveDsl.g:9249:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
@@ -30534,16 +31159,16 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__0"
-    // InternalPerspectiveDsl.g:9062:1: rule__OpMultiAssign__Group_6__0 : rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 ;
+    // InternalPerspectiveDsl.g:9259: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:9066:1: ( rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 )
-            // InternalPerspectiveDsl.g:9067:2: rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1
+            // InternalPerspectiveDsl.g:9263:1: ( rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 )
+            // InternalPerspectiveDsl.g:9264:2: rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1
             {
-            pushFollow(FOLLOW_60);
+            pushFollow(FOLLOW_62);
             rule__OpMultiAssign__Group_6__0__Impl();
 
             state._fsp--;
@@ -30572,17 +31197,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__0__Impl"
-    // InternalPerspectiveDsl.g:9074:1: rule__OpMultiAssign__Group_6__0__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:9271:1: rule__OpMultiAssign__Group_6__0__Impl : ( '>' ) ;
     public final void rule__OpMultiAssign__Group_6__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9078:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:9079:1: ( '>' )
+            // InternalPerspectiveDsl.g:9275:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:9276:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:9079:1: ( '>' )
-            // InternalPerspectiveDsl.g:9080:2: '>'
+            // InternalPerspectiveDsl.g:9276:1: ( '>' )
+            // InternalPerspectiveDsl.g:9277:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
@@ -30613,16 +31238,16 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__1"
-    // InternalPerspectiveDsl.g:9089:1: rule__OpMultiAssign__Group_6__1 : rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 ;
+    // InternalPerspectiveDsl.g:9286: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:9093:1: ( rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 )
-            // InternalPerspectiveDsl.g:9094:2: rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2
+            // InternalPerspectiveDsl.g:9290:1: ( rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 )
+            // InternalPerspectiveDsl.g:9291:2: rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2
             {
-            pushFollow(FOLLOW_60);
+            pushFollow(FOLLOW_62);
             rule__OpMultiAssign__Group_6__1__Impl();
 
             state._fsp--;
@@ -30651,22 +31276,22 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__1__Impl"
-    // InternalPerspectiveDsl.g:9101:1: rule__OpMultiAssign__Group_6__1__Impl : ( ( '>' )? ) ;
+    // InternalPerspectiveDsl.g:9298:1: rule__OpMultiAssign__Group_6__1__Impl : ( ( '>' )? ) ;
     public final void rule__OpMultiAssign__Group_6__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9105:1: ( ( ( '>' )? ) )
-            // InternalPerspectiveDsl.g:9106:1: ( ( '>' )? )
+            // InternalPerspectiveDsl.g:9302:1: ( ( ( '>' )? ) )
+            // InternalPerspectiveDsl.g:9303:1: ( ( '>' )? )
             {
-            // InternalPerspectiveDsl.g:9106:1: ( ( '>' )? )
-            // InternalPerspectiveDsl.g:9107:2: ( '>' )?
+            // InternalPerspectiveDsl.g:9303:1: ( ( '>' )? )
+            // InternalPerspectiveDsl.g:9304:2: ( '>' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
             }
-            // InternalPerspectiveDsl.g:9108:2: ( '>' )?
+            // InternalPerspectiveDsl.g:9305:2: ( '>' )?
             int alt70=2;
             int LA70_0 = input.LA(1);
 
@@ -30675,7 +31300,7 @@
             }
             switch (alt70) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:9108:3: '>'
+                    // InternalPerspectiveDsl.g:9305:3: '>'
                     {
                     match(input,26,FOLLOW_2); if (state.failed) return ;
 
@@ -30709,14 +31334,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__2"
-    // InternalPerspectiveDsl.g:9116:1: rule__OpMultiAssign__Group_6__2 : rule__OpMultiAssign__Group_6__2__Impl ;
+    // InternalPerspectiveDsl.g:9313: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:9120:1: ( rule__OpMultiAssign__Group_6__2__Impl )
-            // InternalPerspectiveDsl.g:9121:2: rule__OpMultiAssign__Group_6__2__Impl
+            // InternalPerspectiveDsl.g:9317:1: ( rule__OpMultiAssign__Group_6__2__Impl )
+            // InternalPerspectiveDsl.g:9318:2: rule__OpMultiAssign__Group_6__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpMultiAssign__Group_6__2__Impl();
@@ -30742,17 +31367,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__2__Impl"
-    // InternalPerspectiveDsl.g:9127:1: rule__OpMultiAssign__Group_6__2__Impl : ( '>=' ) ;
+    // InternalPerspectiveDsl.g:9324:1: rule__OpMultiAssign__Group_6__2__Impl : ( '>=' ) ;
     public final void rule__OpMultiAssign__Group_6__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9131:1: ( ( '>=' ) )
-            // InternalPerspectiveDsl.g:9132:1: ( '>=' )
+            // InternalPerspectiveDsl.g:9328:1: ( ( '>=' ) )
+            // InternalPerspectiveDsl.g:9329:1: ( '>=' )
             {
-            // InternalPerspectiveDsl.g:9132:1: ( '>=' )
-            // InternalPerspectiveDsl.g:9133:2: '>='
+            // InternalPerspectiveDsl.g:9329:1: ( '>=' )
+            // InternalPerspectiveDsl.g:9330:2: '>='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
@@ -30783,16 +31408,16 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__0"
-    // InternalPerspectiveDsl.g:9143:1: rule__XOrExpression__Group__0 : rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:9340: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:9147:1: ( rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 )
-            // InternalPerspectiveDsl.g:9148:2: rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1
+            // InternalPerspectiveDsl.g:9344:1: ( rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 )
+            // InternalPerspectiveDsl.g:9345:2: rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1
             {
-            pushFollow(FOLLOW_61);
+            pushFollow(FOLLOW_63);
             rule__XOrExpression__Group__0__Impl();
 
             state._fsp--;
@@ -30821,17 +31446,17 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:9155:1: rule__XOrExpression__Group__0__Impl : ( ruleXAndExpression ) ;
+    // InternalPerspectiveDsl.g:9352:1: rule__XOrExpression__Group__0__Impl : ( ruleXAndExpression ) ;
     public final void rule__XOrExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9159:1: ( ( ruleXAndExpression ) )
-            // InternalPerspectiveDsl.g:9160:1: ( ruleXAndExpression )
+            // InternalPerspectiveDsl.g:9356:1: ( ( ruleXAndExpression ) )
+            // InternalPerspectiveDsl.g:9357:1: ( ruleXAndExpression )
             {
-            // InternalPerspectiveDsl.g:9160:1: ( ruleXAndExpression )
-            // InternalPerspectiveDsl.g:9161:2: ruleXAndExpression
+            // InternalPerspectiveDsl.g:9357:1: ( ruleXAndExpression )
+            // InternalPerspectiveDsl.g:9358:2: ruleXAndExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
@@ -30866,14 +31491,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__1"
-    // InternalPerspectiveDsl.g:9170:1: rule__XOrExpression__Group__1 : rule__XOrExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:9367: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:9174:1: ( rule__XOrExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:9175:2: rule__XOrExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:9371:1: ( rule__XOrExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:9372:2: rule__XOrExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group__1__Impl();
@@ -30899,22 +31524,22 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:9181:1: rule__XOrExpression__Group__1__Impl : ( ( rule__XOrExpression__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:9378: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:9185:1: ( ( ( rule__XOrExpression__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:9186:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:9382:1: ( ( ( rule__XOrExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:9383:1: ( ( rule__XOrExpression__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:9186:1: ( ( rule__XOrExpression__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:9187:2: ( rule__XOrExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:9383:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:9384:2: ( rule__XOrExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:9188:2: ( rule__XOrExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:9385:2: ( rule__XOrExpression__Group_1__0 )*
             loop71:
             do {
                 int alt71=2;
@@ -30923,7 +31548,7 @@
                 if ( (LA71_0==14) ) {
                     int LA71_2 = input.LA(2);
 
-                    if ( (synpred127_InternalPerspectiveDsl()) ) {
+                    if ( (synpred129_InternalPerspectiveDsl()) ) {
                         alt71=1;
                     }
 
@@ -30933,9 +31558,9 @@
 
                 switch (alt71) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:9188:3: rule__XOrExpression__Group_1__0
+            	    // InternalPerspectiveDsl.g:9385:3: rule__XOrExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_62);
+            	    pushFollow(FOLLOW_64);
             	    rule__XOrExpression__Group_1__0();
 
             	    state._fsp--;
@@ -30974,16 +31599,16 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__0"
-    // InternalPerspectiveDsl.g:9197:1: rule__XOrExpression__Group_1__0 : rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 ;
+    // InternalPerspectiveDsl.g:9394: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:9201:1: ( rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 )
-            // InternalPerspectiveDsl.g:9202:2: rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1
+            // InternalPerspectiveDsl.g:9398:1: ( rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:9399:2: rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XOrExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -31012,23 +31637,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:9209:1: rule__XOrExpression__Group_1__0__Impl : ( ( rule__XOrExpression__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:9406: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:9213:1: ( ( ( rule__XOrExpression__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:9214:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:9410:1: ( ( ( rule__XOrExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9411:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:9214:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:9215:2: ( rule__XOrExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:9411:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:9412:2: ( rule__XOrExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:9216:2: ( rule__XOrExpression__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:9216:3: rule__XOrExpression__Group_1_0__0
+            // InternalPerspectiveDsl.g:9413:2: ( rule__XOrExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:9413:3: rule__XOrExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0__0();
@@ -31063,14 +31688,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__1"
-    // InternalPerspectiveDsl.g:9224:1: rule__XOrExpression__Group_1__1 : rule__XOrExpression__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:9421: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:9228:1: ( rule__XOrExpression__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:9229:2: rule__XOrExpression__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:9425:1: ( rule__XOrExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:9426:2: rule__XOrExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1__1__Impl();
@@ -31096,23 +31721,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:9235:1: rule__XOrExpression__Group_1__1__Impl : ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:9432: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:9239:1: ( ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:9240:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:9436:1: ( ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:9437:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:9240:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:9241:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:9437:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:9438:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:9242:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
-            // InternalPerspectiveDsl.g:9242:3: rule__XOrExpression__RightOperandAssignment_1_1
+            // InternalPerspectiveDsl.g:9439:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:9439:3: rule__XOrExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__RightOperandAssignment_1_1();
@@ -31147,14 +31772,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:9251:1: rule__XOrExpression__Group_1_0__0 : rule__XOrExpression__Group_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:9448: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:9255:1: ( rule__XOrExpression__Group_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:9256:2: rule__XOrExpression__Group_1_0__0__Impl
+            // InternalPerspectiveDsl.g:9452:1: ( rule__XOrExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:9453:2: rule__XOrExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0__0__Impl();
@@ -31180,23 +31805,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:9262:1: rule__XOrExpression__Group_1_0__0__Impl : ( ( rule__XOrExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:9459: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:9266:1: ( ( ( rule__XOrExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:9267:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9463:1: ( ( ( rule__XOrExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9464:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:9267:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:9268:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9464:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9465:2: ( rule__XOrExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9269:2: ( rule__XOrExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:9269:3: rule__XOrExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:9466:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9466:3: rule__XOrExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0_0__0();
@@ -31231,16 +31856,16 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:9278: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:9475: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:9282:1: ( rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:9283:2: rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:9479:1: ( rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:9480:2: rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_61);
+            pushFollow(FOLLOW_63);
             rule__XOrExpression__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -31269,23 +31894,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:9290:1: rule__XOrExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:9487: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:9294:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:9295:1: ( () )
+            // InternalPerspectiveDsl.g:9491:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:9492:1: ( () )
             {
-            // InternalPerspectiveDsl.g:9295:1: ( () )
-            // InternalPerspectiveDsl.g:9296:2: ()
+            // InternalPerspectiveDsl.g:9492:1: ( () )
+            // InternalPerspectiveDsl.g:9493:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9297:2: ()
-            // InternalPerspectiveDsl.g:9297:3: 
+            // InternalPerspectiveDsl.g:9494:2: ()
+            // InternalPerspectiveDsl.g:9494:3: 
             {
             }
 
@@ -31310,14 +31935,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:9305:1: rule__XOrExpression__Group_1_0_0__1 : rule__XOrExpression__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:9502: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:9309:1: ( rule__XOrExpression__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:9310:2: rule__XOrExpression__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:9506:1: ( rule__XOrExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:9507:2: rule__XOrExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0_0__1__Impl();
@@ -31343,23 +31968,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:9316:1: rule__XOrExpression__Group_1_0_0__1__Impl : ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:9513: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:9320:1: ( ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:9321:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:9517:1: ( ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:9518:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:9321:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:9322:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:9518:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:9519:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:9323:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
-            // InternalPerspectiveDsl.g:9323:3: rule__XOrExpression__FeatureAssignment_1_0_0_1
+            // InternalPerspectiveDsl.g:9520:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:9520:3: rule__XOrExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__FeatureAssignment_1_0_0_1();
@@ -31394,16 +32019,16 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__0"
-    // InternalPerspectiveDsl.g:9332:1: rule__XAndExpression__Group__0 : rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:9529: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:9336:1: ( rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 )
-            // InternalPerspectiveDsl.g:9337:2: rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1
+            // InternalPerspectiveDsl.g:9533:1: ( rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 )
+            // InternalPerspectiveDsl.g:9534:2: rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1
             {
-            pushFollow(FOLLOW_63);
+            pushFollow(FOLLOW_65);
             rule__XAndExpression__Group__0__Impl();
 
             state._fsp--;
@@ -31432,17 +32057,17 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:9344:1: rule__XAndExpression__Group__0__Impl : ( ruleXEqualityExpression ) ;
+    // InternalPerspectiveDsl.g:9541:1: rule__XAndExpression__Group__0__Impl : ( ruleXEqualityExpression ) ;
     public final void rule__XAndExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9348:1: ( ( ruleXEqualityExpression ) )
-            // InternalPerspectiveDsl.g:9349:1: ( ruleXEqualityExpression )
+            // InternalPerspectiveDsl.g:9545:1: ( ( ruleXEqualityExpression ) )
+            // InternalPerspectiveDsl.g:9546:1: ( ruleXEqualityExpression )
             {
-            // InternalPerspectiveDsl.g:9349:1: ( ruleXEqualityExpression )
-            // InternalPerspectiveDsl.g:9350:2: ruleXEqualityExpression
+            // InternalPerspectiveDsl.g:9546:1: ( ruleXEqualityExpression )
+            // InternalPerspectiveDsl.g:9547:2: ruleXEqualityExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
@@ -31477,14 +32102,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__1"
-    // InternalPerspectiveDsl.g:9359:1: rule__XAndExpression__Group__1 : rule__XAndExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:9556: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:9363:1: ( rule__XAndExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:9364:2: rule__XAndExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:9560:1: ( rule__XAndExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:9561:2: rule__XAndExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group__1__Impl();
@@ -31510,22 +32135,22 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:9370:1: rule__XAndExpression__Group__1__Impl : ( ( rule__XAndExpression__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:9567: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:9374:1: ( ( ( rule__XAndExpression__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:9375:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:9571:1: ( ( ( rule__XAndExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:9572:1: ( ( rule__XAndExpression__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:9375:1: ( ( rule__XAndExpression__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:9376:2: ( rule__XAndExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:9572:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:9573:2: ( rule__XAndExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:9377:2: ( rule__XAndExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:9574:2: ( rule__XAndExpression__Group_1__0 )*
             loop72:
             do {
                 int alt72=2;
@@ -31534,7 +32159,7 @@
                 if ( (LA72_0==15) ) {
                     int LA72_2 = input.LA(2);
 
-                    if ( (synpred128_InternalPerspectiveDsl()) ) {
+                    if ( (synpred130_InternalPerspectiveDsl()) ) {
                         alt72=1;
                     }
 
@@ -31544,9 +32169,9 @@
 
                 switch (alt72) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:9377:3: rule__XAndExpression__Group_1__0
+            	    // InternalPerspectiveDsl.g:9574:3: rule__XAndExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_64);
+            	    pushFollow(FOLLOW_66);
             	    rule__XAndExpression__Group_1__0();
 
             	    state._fsp--;
@@ -31585,16 +32210,16 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__0"
-    // InternalPerspectiveDsl.g:9386:1: rule__XAndExpression__Group_1__0 : rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 ;
+    // InternalPerspectiveDsl.g:9583: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:9390:1: ( rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 )
-            // InternalPerspectiveDsl.g:9391:2: rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1
+            // InternalPerspectiveDsl.g:9587:1: ( rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:9588:2: rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XAndExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -31623,23 +32248,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:9398:1: rule__XAndExpression__Group_1__0__Impl : ( ( rule__XAndExpression__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:9595: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:9402:1: ( ( ( rule__XAndExpression__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:9403:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:9599:1: ( ( ( rule__XAndExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9600:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:9403:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:9404:2: ( rule__XAndExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:9600:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:9601:2: ( rule__XAndExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:9405:2: ( rule__XAndExpression__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:9405:3: rule__XAndExpression__Group_1_0__0
+            // InternalPerspectiveDsl.g:9602:2: ( rule__XAndExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:9602:3: rule__XAndExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0__0();
@@ -31674,14 +32299,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__1"
-    // InternalPerspectiveDsl.g:9413:1: rule__XAndExpression__Group_1__1 : rule__XAndExpression__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:9610: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:9417:1: ( rule__XAndExpression__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:9418:2: rule__XAndExpression__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:9614:1: ( rule__XAndExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:9615:2: rule__XAndExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1__1__Impl();
@@ -31707,23 +32332,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:9424:1: rule__XAndExpression__Group_1__1__Impl : ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:9621: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:9428:1: ( ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:9429:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:9625:1: ( ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:9626:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:9429:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:9430:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:9626:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:9627:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:9431:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
-            // InternalPerspectiveDsl.g:9431:3: rule__XAndExpression__RightOperandAssignment_1_1
+            // InternalPerspectiveDsl.g:9628:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:9628:3: rule__XAndExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__RightOperandAssignment_1_1();
@@ -31758,14 +32383,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:9440:1: rule__XAndExpression__Group_1_0__0 : rule__XAndExpression__Group_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:9637: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:9444:1: ( rule__XAndExpression__Group_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:9445:2: rule__XAndExpression__Group_1_0__0__Impl
+            // InternalPerspectiveDsl.g:9641:1: ( rule__XAndExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:9642:2: rule__XAndExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0__0__Impl();
@@ -31791,23 +32416,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:9451:1: rule__XAndExpression__Group_1_0__0__Impl : ( ( rule__XAndExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:9648: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:9455:1: ( ( ( rule__XAndExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:9456:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9652:1: ( ( ( rule__XAndExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9653:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:9456:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:9457:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9653:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9654:2: ( rule__XAndExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9458:2: ( rule__XAndExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:9458:3: rule__XAndExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:9655:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9655:3: rule__XAndExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0_0__0();
@@ -31842,16 +32467,16 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:9467: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:9664: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:9471:1: ( rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:9472:2: rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:9668:1: ( rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:9669:2: rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_63);
+            pushFollow(FOLLOW_65);
             rule__XAndExpression__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -31880,23 +32505,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:9479:1: rule__XAndExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:9676: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:9483:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:9484:1: ( () )
+            // InternalPerspectiveDsl.g:9680:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:9681:1: ( () )
             {
-            // InternalPerspectiveDsl.g:9484:1: ( () )
-            // InternalPerspectiveDsl.g:9485:2: ()
+            // InternalPerspectiveDsl.g:9681:1: ( () )
+            // InternalPerspectiveDsl.g:9682:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9486:2: ()
-            // InternalPerspectiveDsl.g:9486:3: 
+            // InternalPerspectiveDsl.g:9683:2: ()
+            // InternalPerspectiveDsl.g:9683:3: 
             {
             }
 
@@ -31921,14 +32546,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:9494:1: rule__XAndExpression__Group_1_0_0__1 : rule__XAndExpression__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:9691: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:9498:1: ( rule__XAndExpression__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:9499:2: rule__XAndExpression__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:9695:1: ( rule__XAndExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:9696:2: rule__XAndExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0_0__1__Impl();
@@ -31954,23 +32579,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:9505:1: rule__XAndExpression__Group_1_0_0__1__Impl : ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:9702: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:9509:1: ( ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:9510:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:9706:1: ( ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:9707:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:9510:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:9511:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:9707:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:9708:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:9512:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
-            // InternalPerspectiveDsl.g:9512:3: rule__XAndExpression__FeatureAssignment_1_0_0_1
+            // InternalPerspectiveDsl.g:9709:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:9709:3: rule__XAndExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__FeatureAssignment_1_0_0_1();
@@ -32005,16 +32630,16 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__0"
-    // InternalPerspectiveDsl.g:9521:1: rule__XEqualityExpression__Group__0 : rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:9718: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:9525:1: ( rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 )
-            // InternalPerspectiveDsl.g:9526:2: rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1
+            // InternalPerspectiveDsl.g:9722:1: ( rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 )
+            // InternalPerspectiveDsl.g:9723:2: rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1
             {
-            pushFollow(FOLLOW_65);
+            pushFollow(FOLLOW_67);
             rule__XEqualityExpression__Group__0__Impl();
 
             state._fsp--;
@@ -32043,17 +32668,17 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:9533:1: rule__XEqualityExpression__Group__0__Impl : ( ruleXRelationalExpression ) ;
+    // InternalPerspectiveDsl.g:9730:1: rule__XEqualityExpression__Group__0__Impl : ( ruleXRelationalExpression ) ;
     public final void rule__XEqualityExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9537:1: ( ( ruleXRelationalExpression ) )
-            // InternalPerspectiveDsl.g:9538:1: ( ruleXRelationalExpression )
+            // InternalPerspectiveDsl.g:9734:1: ( ( ruleXRelationalExpression ) )
+            // InternalPerspectiveDsl.g:9735:1: ( ruleXRelationalExpression )
             {
-            // InternalPerspectiveDsl.g:9538:1: ( ruleXRelationalExpression )
-            // InternalPerspectiveDsl.g:9539:2: ruleXRelationalExpression
+            // InternalPerspectiveDsl.g:9735:1: ( ruleXRelationalExpression )
+            // InternalPerspectiveDsl.g:9736:2: ruleXRelationalExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
@@ -32088,14 +32713,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__1"
-    // InternalPerspectiveDsl.g:9548:1: rule__XEqualityExpression__Group__1 : rule__XEqualityExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:9745: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:9552:1: ( rule__XEqualityExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:9553:2: rule__XEqualityExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:9749:1: ( rule__XEqualityExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:9750:2: rule__XEqualityExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group__1__Impl();
@@ -32121,22 +32746,22 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:9559:1: rule__XEqualityExpression__Group__1__Impl : ( ( rule__XEqualityExpression__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:9756: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:9563:1: ( ( ( rule__XEqualityExpression__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:9564:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:9760:1: ( ( ( rule__XEqualityExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:9761:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:9564:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:9565:2: ( rule__XEqualityExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:9761:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:9762:2: ( rule__XEqualityExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:9566:2: ( rule__XEqualityExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:9763:2: ( rule__XEqualityExpression__Group_1__0 )*
             loop73:
             do {
                 int alt73=2;
@@ -32145,7 +32770,7 @@
                     {
                     int LA73_2 = input.LA(2);
 
-                    if ( (synpred129_InternalPerspectiveDsl()) ) {
+                    if ( (synpred131_InternalPerspectiveDsl()) ) {
                         alt73=1;
                     }
 
@@ -32156,7 +32781,7 @@
                     {
                     int LA73_3 = input.LA(2);
 
-                    if ( (synpred129_InternalPerspectiveDsl()) ) {
+                    if ( (synpred131_InternalPerspectiveDsl()) ) {
                         alt73=1;
                     }
 
@@ -32167,7 +32792,7 @@
                     {
                     int LA73_4 = input.LA(2);
 
-                    if ( (synpred129_InternalPerspectiveDsl()) ) {
+                    if ( (synpred131_InternalPerspectiveDsl()) ) {
                         alt73=1;
                     }
 
@@ -32178,7 +32803,7 @@
                     {
                     int LA73_5 = input.LA(2);
 
-                    if ( (synpred129_InternalPerspectiveDsl()) ) {
+                    if ( (synpred131_InternalPerspectiveDsl()) ) {
                         alt73=1;
                     }
 
@@ -32190,9 +32815,9 @@
 
                 switch (alt73) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:9566:3: rule__XEqualityExpression__Group_1__0
+            	    // InternalPerspectiveDsl.g:9763:3: rule__XEqualityExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_66);
+            	    pushFollow(FOLLOW_68);
             	    rule__XEqualityExpression__Group_1__0();
 
             	    state._fsp--;
@@ -32231,16 +32856,16 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__0"
-    // InternalPerspectiveDsl.g:9575:1: rule__XEqualityExpression__Group_1__0 : rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 ;
+    // InternalPerspectiveDsl.g:9772: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:9579:1: ( rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 )
-            // InternalPerspectiveDsl.g:9580:2: rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1
+            // InternalPerspectiveDsl.g:9776:1: ( rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:9777:2: rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XEqualityExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -32269,23 +32894,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:9587:1: rule__XEqualityExpression__Group_1__0__Impl : ( ( rule__XEqualityExpression__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:9784: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:9591:1: ( ( ( rule__XEqualityExpression__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:9592:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:9788:1: ( ( ( rule__XEqualityExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9789:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:9592:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:9593:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:9789:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:9790:2: ( rule__XEqualityExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:9594:2: ( rule__XEqualityExpression__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:9594:3: rule__XEqualityExpression__Group_1_0__0
+            // InternalPerspectiveDsl.g:9791:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:9791:3: rule__XEqualityExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0__0();
@@ -32320,14 +32945,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__1"
-    // InternalPerspectiveDsl.g:9602:1: rule__XEqualityExpression__Group_1__1 : rule__XEqualityExpression__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:9799: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:9606:1: ( rule__XEqualityExpression__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:9607:2: rule__XEqualityExpression__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:9803:1: ( rule__XEqualityExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:9804:2: rule__XEqualityExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1__1__Impl();
@@ -32353,23 +32978,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:9613:1: rule__XEqualityExpression__Group_1__1__Impl : ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:9810: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:9617:1: ( ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:9618:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:9814:1: ( ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:9815:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:9618:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:9619:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:9815:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:9816:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:9620:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
-            // InternalPerspectiveDsl.g:9620:3: rule__XEqualityExpression__RightOperandAssignment_1_1
+            // InternalPerspectiveDsl.g:9817:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:9817:3: rule__XEqualityExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__RightOperandAssignment_1_1();
@@ -32404,14 +33029,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:9629:1: rule__XEqualityExpression__Group_1_0__0 : rule__XEqualityExpression__Group_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:9826: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:9633:1: ( rule__XEqualityExpression__Group_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:9634:2: rule__XEqualityExpression__Group_1_0__0__Impl
+            // InternalPerspectiveDsl.g:9830:1: ( rule__XEqualityExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:9831:2: rule__XEqualityExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0__0__Impl();
@@ -32437,23 +33062,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:9640:1: rule__XEqualityExpression__Group_1_0__0__Impl : ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:9837: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:9644:1: ( ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:9645:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9841:1: ( ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9842:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:9645:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:9646:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9842:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9843:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9647:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:9647:3: rule__XEqualityExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:9844:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9844:3: rule__XEqualityExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0_0__0();
@@ -32488,16 +33113,16 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:9656: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:9853: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:9660:1: ( rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:9661:2: rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:9857:1: ( rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:9858:2: rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_65);
+            pushFollow(FOLLOW_67);
             rule__XEqualityExpression__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -32526,23 +33151,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:9668:1: rule__XEqualityExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:9865: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:9672:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:9673:1: ( () )
+            // InternalPerspectiveDsl.g:9869:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:9870:1: ( () )
             {
-            // InternalPerspectiveDsl.g:9673:1: ( () )
-            // InternalPerspectiveDsl.g:9674:2: ()
+            // InternalPerspectiveDsl.g:9870:1: ( () )
+            // InternalPerspectiveDsl.g:9871:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9675:2: ()
-            // InternalPerspectiveDsl.g:9675:3: 
+            // InternalPerspectiveDsl.g:9872:2: ()
+            // InternalPerspectiveDsl.g:9872:3: 
             {
             }
 
@@ -32567,14 +33192,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:9683:1: rule__XEqualityExpression__Group_1_0_0__1 : rule__XEqualityExpression__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:9880: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:9687:1: ( rule__XEqualityExpression__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:9688:2: rule__XEqualityExpression__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:9884:1: ( rule__XEqualityExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:9885:2: rule__XEqualityExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0_0__1__Impl();
@@ -32600,23 +33225,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:9694:1: rule__XEqualityExpression__Group_1_0_0__1__Impl : ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:9891: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:9698:1: ( ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:9699:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:9895:1: ( ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:9896:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:9699:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:9700:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:9896:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:9897:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:9701:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
-            // InternalPerspectiveDsl.g:9701:3: rule__XEqualityExpression__FeatureAssignment_1_0_0_1
+            // InternalPerspectiveDsl.g:9898:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:9898:3: rule__XEqualityExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__FeatureAssignment_1_0_0_1();
@@ -32651,16 +33276,16 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__0"
-    // InternalPerspectiveDsl.g:9710:1: rule__XRelationalExpression__Group__0 : rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:9907: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:9714:1: ( rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 )
-            // InternalPerspectiveDsl.g:9715:2: rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1
+            // InternalPerspectiveDsl.g:9911:1: ( rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 )
+            // InternalPerspectiveDsl.g:9912:2: rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1
             {
-            pushFollow(FOLLOW_67);
+            pushFollow(FOLLOW_69);
             rule__XRelationalExpression__Group__0__Impl();
 
             state._fsp--;
@@ -32689,17 +33314,17 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:9722:1: rule__XRelationalExpression__Group__0__Impl : ( ruleXOtherOperatorExpression ) ;
+    // InternalPerspectiveDsl.g:9919:1: rule__XRelationalExpression__Group__0__Impl : ( ruleXOtherOperatorExpression ) ;
     public final void rule__XRelationalExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9726:1: ( ( ruleXOtherOperatorExpression ) )
-            // InternalPerspectiveDsl.g:9727:1: ( ruleXOtherOperatorExpression )
+            // InternalPerspectiveDsl.g:9923:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalPerspectiveDsl.g:9924:1: ( ruleXOtherOperatorExpression )
             {
-            // InternalPerspectiveDsl.g:9727:1: ( ruleXOtherOperatorExpression )
-            // InternalPerspectiveDsl.g:9728:2: ruleXOtherOperatorExpression
+            // InternalPerspectiveDsl.g:9924:1: ( ruleXOtherOperatorExpression )
+            // InternalPerspectiveDsl.g:9925:2: ruleXOtherOperatorExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
@@ -32734,14 +33359,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__1"
-    // InternalPerspectiveDsl.g:9737:1: rule__XRelationalExpression__Group__1 : rule__XRelationalExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:9934: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:9741:1: ( rule__XRelationalExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:9742:2: rule__XRelationalExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:9938:1: ( rule__XRelationalExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:9939:2: rule__XRelationalExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group__1__Impl();
@@ -32767,22 +33392,22 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:9748:1: rule__XRelationalExpression__Group__1__Impl : ( ( rule__XRelationalExpression__Alternatives_1 )* ) ;
+    // InternalPerspectiveDsl.g:9945: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:9752:1: ( ( ( rule__XRelationalExpression__Alternatives_1 )* ) )
-            // InternalPerspectiveDsl.g:9753:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            // InternalPerspectiveDsl.g:9949:1: ( ( ( rule__XRelationalExpression__Alternatives_1 )* ) )
+            // InternalPerspectiveDsl.g:9950:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
             {
-            // InternalPerspectiveDsl.g:9753:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
-            // InternalPerspectiveDsl.g:9754:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            // InternalPerspectiveDsl.g:9950:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            // InternalPerspectiveDsl.g:9951:2: ( rule__XRelationalExpression__Alternatives_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1()); 
             }
-            // InternalPerspectiveDsl.g:9755:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            // InternalPerspectiveDsl.g:9952:2: ( rule__XRelationalExpression__Alternatives_1 )*
             loop74:
             do {
                 int alt74=2;
@@ -32791,7 +33416,7 @@
                     {
                     int LA74_2 = input.LA(2);
 
-                    if ( (synpred130_InternalPerspectiveDsl()) ) {
+                    if ( (synpred132_InternalPerspectiveDsl()) ) {
                         alt74=1;
                     }
 
@@ -32802,18 +33427,18 @@
                     {
                     int LA74_3 = input.LA(2);
 
-                    if ( (synpred130_InternalPerspectiveDsl()) ) {
+                    if ( (synpred132_InternalPerspectiveDsl()) ) {
                         alt74=1;
                     }
 
 
                     }
                     break;
-                case 95:
+                case 97:
                     {
                     int LA74_4 = input.LA(2);
 
-                    if ( (synpred130_InternalPerspectiveDsl()) ) {
+                    if ( (synpred132_InternalPerspectiveDsl()) ) {
                         alt74=1;
                     }
 
@@ -32824,7 +33449,7 @@
                     {
                     int LA74_5 = input.LA(2);
 
-                    if ( (synpred130_InternalPerspectiveDsl()) ) {
+                    if ( (synpred132_InternalPerspectiveDsl()) ) {
                         alt74=1;
                     }
 
@@ -32836,9 +33461,9 @@
 
                 switch (alt74) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:9755:3: rule__XRelationalExpression__Alternatives_1
+            	    // InternalPerspectiveDsl.g:9952:3: rule__XRelationalExpression__Alternatives_1
             	    {
-            	    pushFollow(FOLLOW_68);
+            	    pushFollow(FOLLOW_70);
             	    rule__XRelationalExpression__Alternatives_1();
 
             	    state._fsp--;
@@ -32877,16 +33502,16 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:9764:1: rule__XRelationalExpression__Group_1_0__0 : rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 ;
+    // InternalPerspectiveDsl.g:9961: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:9768:1: ( rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 )
-            // InternalPerspectiveDsl.g:9769:2: rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1
+            // InternalPerspectiveDsl.g:9965:1: ( rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 )
+            // InternalPerspectiveDsl.g:9966:2: rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__XRelationalExpression__Group_1_0__0__Impl();
 
             state._fsp--;
@@ -32915,23 +33540,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:9776:1: rule__XRelationalExpression__Group_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:9973: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:9780:1: ( ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:9781:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9977:1: ( ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9978:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:9781:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:9782:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9978:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9979:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9783:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:9783:3: rule__XRelationalExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:9980:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9980:3: rule__XRelationalExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0__0();
@@ -32966,14 +33591,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__1"
-    // InternalPerspectiveDsl.g:9791:1: rule__XRelationalExpression__Group_1_0__1 : rule__XRelationalExpression__Group_1_0__1__Impl ;
+    // InternalPerspectiveDsl.g:9988: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:9795:1: ( rule__XRelationalExpression__Group_1_0__1__Impl )
-            // InternalPerspectiveDsl.g:9796:2: rule__XRelationalExpression__Group_1_0__1__Impl
+            // InternalPerspectiveDsl.g:9992:1: ( rule__XRelationalExpression__Group_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:9993:2: rule__XRelationalExpression__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0__1__Impl();
@@ -32999,23 +33624,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__1__Impl"
-    // InternalPerspectiveDsl.g:9802:1: rule__XRelationalExpression__Group_1_0__1__Impl : ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:9999: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:9806:1: ( ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) )
-            // InternalPerspectiveDsl.g:9807:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:10003:1: ( ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) )
+            // InternalPerspectiveDsl.g:10004:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:9807:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
-            // InternalPerspectiveDsl.g:9808:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:10004:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:10005:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1()); 
             }
-            // InternalPerspectiveDsl.g:9809:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
-            // InternalPerspectiveDsl.g:9809:3: rule__XRelationalExpression__TypeAssignment_1_0_1
+            // InternalPerspectiveDsl.g:10006:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:10006:3: rule__XRelationalExpression__TypeAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__TypeAssignment_1_0_1();
@@ -33050,14 +33675,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:9818:1: rule__XRelationalExpression__Group_1_0_0__0 : rule__XRelationalExpression__Group_1_0_0__0__Impl ;
+    // InternalPerspectiveDsl.g:10015: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:9822:1: ( rule__XRelationalExpression__Group_1_0_0__0__Impl )
-            // InternalPerspectiveDsl.g:9823:2: rule__XRelationalExpression__Group_1_0_0__0__Impl
+            // InternalPerspectiveDsl.g:10019:1: ( rule__XRelationalExpression__Group_1_0_0__0__Impl )
+            // InternalPerspectiveDsl.g:10020:2: rule__XRelationalExpression__Group_1_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0__0__Impl();
@@ -33083,23 +33708,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:9829:1: rule__XRelationalExpression__Group_1_0_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10026: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:9833:1: ( ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:9834:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10030:1: ( ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10031:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:9834:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
-            // InternalPerspectiveDsl.g:9835:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            // InternalPerspectiveDsl.g:10031:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10032:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9836:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
-            // InternalPerspectiveDsl.g:9836:3: rule__XRelationalExpression__Group_1_0_0_0__0
+            // InternalPerspectiveDsl.g:10033:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            // InternalPerspectiveDsl.g:10033:3: rule__XRelationalExpression__Group_1_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0_0__0();
@@ -33134,16 +33759,16 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__0"
-    // InternalPerspectiveDsl.g:9845: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:10042: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:9849:1: ( rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 )
-            // InternalPerspectiveDsl.g:9850:2: rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1
+            // InternalPerspectiveDsl.g:10046:1: ( rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 )
+            // InternalPerspectiveDsl.g:10047:2: rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1
             {
-            pushFollow(FOLLOW_70);
+            pushFollow(FOLLOW_72);
             rule__XRelationalExpression__Group_1_0_0_0__0__Impl();
 
             state._fsp--;
@@ -33172,23 +33797,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:9857:1: rule__XRelationalExpression__Group_1_0_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:10054: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:9861:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:9862:1: ( () )
+            // InternalPerspectiveDsl.g:10058:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:10059:1: ( () )
             {
-            // InternalPerspectiveDsl.g:9862:1: ( () )
-            // InternalPerspectiveDsl.g:9863:2: ()
+            // InternalPerspectiveDsl.g:10059:1: ( () )
+            // InternalPerspectiveDsl.g:10060:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9864:2: ()
-            // InternalPerspectiveDsl.g:9864:3: 
+            // InternalPerspectiveDsl.g:10061:2: ()
+            // InternalPerspectiveDsl.g:10061:3: 
             {
             }
 
@@ -33213,14 +33838,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__1"
-    // InternalPerspectiveDsl.g:9872:1: rule__XRelationalExpression__Group_1_0_0_0__1 : rule__XRelationalExpression__Group_1_0_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:10069: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:9876:1: ( rule__XRelationalExpression__Group_1_0_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:9877:2: rule__XRelationalExpression__Group_1_0_0_0__1__Impl
+            // InternalPerspectiveDsl.g:10073:1: ( rule__XRelationalExpression__Group_1_0_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10074:2: rule__XRelationalExpression__Group_1_0_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0_0__1__Impl();
@@ -33246,22 +33871,22 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:9883:1: rule__XRelationalExpression__Group_1_0_0_0__1__Impl : ( 'instanceof' ) ;
+    // InternalPerspectiveDsl.g:10080: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:9887:1: ( ( 'instanceof' ) )
-            // InternalPerspectiveDsl.g:9888:1: ( 'instanceof' )
+            // InternalPerspectiveDsl.g:10084:1: ( ( 'instanceof' ) )
+            // InternalPerspectiveDsl.g:10085:1: ( 'instanceof' )
             {
-            // InternalPerspectiveDsl.g:9888:1: ( 'instanceof' )
-            // InternalPerspectiveDsl.g:9889:2: 'instanceof'
+            // InternalPerspectiveDsl.g:10085:1: ( 'instanceof' )
+            // InternalPerspectiveDsl.g:10086:2: 'instanceof'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_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.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); 
             }
@@ -33287,16 +33912,16 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__0"
-    // InternalPerspectiveDsl.g:9899:1: rule__XRelationalExpression__Group_1_1__0 : rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 ;
+    // InternalPerspectiveDsl.g:10096: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:9903:1: ( rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 )
-            // InternalPerspectiveDsl.g:9904:2: rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1
+            // InternalPerspectiveDsl.g:10100:1: ( rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 )
+            // InternalPerspectiveDsl.g:10101:2: rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XRelationalExpression__Group_1_1__0__Impl();
 
             state._fsp--;
@@ -33325,23 +33950,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:9911:1: rule__XRelationalExpression__Group_1_1__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10108: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:9915:1: ( ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:9916:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10112:1: ( ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10113:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:9916:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
-            // InternalPerspectiveDsl.g:9917:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            // InternalPerspectiveDsl.g:10113:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10114:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:9918:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
-            // InternalPerspectiveDsl.g:9918:3: rule__XRelationalExpression__Group_1_1_0__0
+            // InternalPerspectiveDsl.g:10115:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            // InternalPerspectiveDsl.g:10115:3: rule__XRelationalExpression__Group_1_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0__0();
@@ -33376,14 +34001,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__1"
-    // InternalPerspectiveDsl.g:9926:1: rule__XRelationalExpression__Group_1_1__1 : rule__XRelationalExpression__Group_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:10123: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:9930:1: ( rule__XRelationalExpression__Group_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:9931:2: rule__XRelationalExpression__Group_1_1__1__Impl
+            // InternalPerspectiveDsl.g:10127:1: ( rule__XRelationalExpression__Group_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:10128:2: rule__XRelationalExpression__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1__1__Impl();
@@ -33409,23 +34034,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:9937:1: rule__XRelationalExpression__Group_1_1__1__Impl : ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:10134: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:9941:1: ( ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:9942:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            // InternalPerspectiveDsl.g:10138:1: ( ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:10139:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:9942:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
-            // InternalPerspectiveDsl.g:9943:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            // InternalPerspectiveDsl.g:10139:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            // InternalPerspectiveDsl.g:10140:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:9944:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
-            // InternalPerspectiveDsl.g:9944:3: rule__XRelationalExpression__RightOperandAssignment_1_1_1
+            // InternalPerspectiveDsl.g:10141:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            // InternalPerspectiveDsl.g:10141:3: rule__XRelationalExpression__RightOperandAssignment_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__RightOperandAssignment_1_1_1();
@@ -33460,14 +34085,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0__0"
-    // InternalPerspectiveDsl.g:9953:1: rule__XRelationalExpression__Group_1_1_0__0 : rule__XRelationalExpression__Group_1_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:10150: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:9957:1: ( rule__XRelationalExpression__Group_1_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:9958:2: rule__XRelationalExpression__Group_1_1_0__0__Impl
+            // InternalPerspectiveDsl.g:10154:1: ( rule__XRelationalExpression__Group_1_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:10155:2: rule__XRelationalExpression__Group_1_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0__0__Impl();
@@ -33493,23 +34118,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:9964:1: rule__XRelationalExpression__Group_1_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10161: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:9968:1: ( ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:9969:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10165:1: ( ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10166:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:9969:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:9970:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10166:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10167:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9971:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
-            // InternalPerspectiveDsl.g:9971:3: rule__XRelationalExpression__Group_1_1_0_0__0
+            // InternalPerspectiveDsl.g:10168:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10168:3: rule__XRelationalExpression__Group_1_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0_0__0();
@@ -33544,16 +34169,16 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__0"
-    // InternalPerspectiveDsl.g:9980: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:10177: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:9984:1: ( rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 )
-            // InternalPerspectiveDsl.g:9985:2: rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1
+            // InternalPerspectiveDsl.g:10181:1: ( rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 )
+            // InternalPerspectiveDsl.g:10182:2: rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1
             {
-            pushFollow(FOLLOW_67);
+            pushFollow(FOLLOW_69);
             rule__XRelationalExpression__Group_1_1_0_0__0__Impl();
 
             state._fsp--;
@@ -33582,23 +34207,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:9992:1: rule__XRelationalExpression__Group_1_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:10189: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:9996:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:9997:1: ( () )
+            // InternalPerspectiveDsl.g:10193:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:10194:1: ( () )
             {
-            // InternalPerspectiveDsl.g:9997:1: ( () )
-            // InternalPerspectiveDsl.g:9998:2: ()
+            // InternalPerspectiveDsl.g:10194:1: ( () )
+            // InternalPerspectiveDsl.g:10195:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9999:2: ()
-            // InternalPerspectiveDsl.g:9999:3: 
+            // InternalPerspectiveDsl.g:10196:2: ()
+            // InternalPerspectiveDsl.g:10196:3: 
             {
             }
 
@@ -33623,14 +34248,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__1"
-    // InternalPerspectiveDsl.g:10007:1: rule__XRelationalExpression__Group_1_1_0_0__1 : rule__XRelationalExpression__Group_1_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:10204: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:10011:1: ( rule__XRelationalExpression__Group_1_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:10012:2: rule__XRelationalExpression__Group_1_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:10208:1: ( rule__XRelationalExpression__Group_1_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10209:2: rule__XRelationalExpression__Group_1_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0_0__1__Impl();
@@ -33656,23 +34281,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:10018:1: rule__XRelationalExpression__Group_1_1_0_0__1__Impl : ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:10215: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:10022:1: ( ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:10023:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10219:1: ( ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:10220:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:10023:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:10024:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10220:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10221:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:10025:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
-            // InternalPerspectiveDsl.g:10025:3: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1
+            // InternalPerspectiveDsl.g:10222:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10222:3: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1();
@@ -33707,16 +34332,16 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__0"
-    // InternalPerspectiveDsl.g:10034:1: rule__OpCompare__Group_1__0 : rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 ;
+    // InternalPerspectiveDsl.g:10231: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:10038:1: ( rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 )
-            // InternalPerspectiveDsl.g:10039:2: rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1
+            // InternalPerspectiveDsl.g:10235:1: ( rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 )
+            // InternalPerspectiveDsl.g:10236:2: rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1
             {
-            pushFollow(FOLLOW_53);
+            pushFollow(FOLLOW_55);
             rule__OpCompare__Group_1__0__Impl();
 
             state._fsp--;
@@ -33745,17 +34370,17 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:10046:1: rule__OpCompare__Group_1__0__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:10243:1: rule__OpCompare__Group_1__0__Impl : ( '<' ) ;
     public final void rule__OpCompare__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10050:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:10051:1: ( '<' )
+            // InternalPerspectiveDsl.g:10247:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:10248:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:10051:1: ( '<' )
-            // InternalPerspectiveDsl.g:10052:2: '<'
+            // InternalPerspectiveDsl.g:10248:1: ( '<' )
+            // InternalPerspectiveDsl.g:10249:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
@@ -33786,14 +34411,14 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__1"
-    // InternalPerspectiveDsl.g:10061:1: rule__OpCompare__Group_1__1 : rule__OpCompare__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:10258: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:10065:1: ( rule__OpCompare__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:10066:2: rule__OpCompare__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:10262:1: ( rule__OpCompare__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:10263:2: rule__OpCompare__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpCompare__Group_1__1__Impl();
@@ -33819,17 +34444,17 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:10072:1: rule__OpCompare__Group_1__1__Impl : ( '=' ) ;
+    // InternalPerspectiveDsl.g:10269:1: rule__OpCompare__Group_1__1__Impl : ( '=' ) ;
     public final void rule__OpCompare__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10076:1: ( ( '=' ) )
-            // InternalPerspectiveDsl.g:10077:1: ( '=' )
+            // InternalPerspectiveDsl.g:10273:1: ( ( '=' ) )
+            // InternalPerspectiveDsl.g:10274:1: ( '=' )
             {
-            // InternalPerspectiveDsl.g:10077:1: ( '=' )
-            // InternalPerspectiveDsl.g:10078:2: '='
+            // InternalPerspectiveDsl.g:10274:1: ( '=' )
+            // InternalPerspectiveDsl.g:10275:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); 
@@ -33860,16 +34485,16 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__0"
-    // InternalPerspectiveDsl.g:10088:1: rule__XOtherOperatorExpression__Group__0 : rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:10285: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:10092:1: ( rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 )
-            // InternalPerspectiveDsl.g:10093:2: rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1
+            // InternalPerspectiveDsl.g:10289:1: ( rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 )
+            // InternalPerspectiveDsl.g:10290:2: rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1
             {
-            pushFollow(FOLLOW_71);
+            pushFollow(FOLLOW_73);
             rule__XOtherOperatorExpression__Group__0__Impl();
 
             state._fsp--;
@@ -33898,17 +34523,17 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:10100:1: rule__XOtherOperatorExpression__Group__0__Impl : ( ruleXAdditiveExpression ) ;
+    // InternalPerspectiveDsl.g:10297:1: rule__XOtherOperatorExpression__Group__0__Impl : ( ruleXAdditiveExpression ) ;
     public final void rule__XOtherOperatorExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10104:1: ( ( ruleXAdditiveExpression ) )
-            // InternalPerspectiveDsl.g:10105:1: ( ruleXAdditiveExpression )
+            // InternalPerspectiveDsl.g:10301:1: ( ( ruleXAdditiveExpression ) )
+            // InternalPerspectiveDsl.g:10302:1: ( ruleXAdditiveExpression )
             {
-            // InternalPerspectiveDsl.g:10105:1: ( ruleXAdditiveExpression )
-            // InternalPerspectiveDsl.g:10106:2: ruleXAdditiveExpression
+            // InternalPerspectiveDsl.g:10302:1: ( ruleXAdditiveExpression )
+            // InternalPerspectiveDsl.g:10303:2: ruleXAdditiveExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
@@ -33943,14 +34568,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__1"
-    // InternalPerspectiveDsl.g:10115:1: rule__XOtherOperatorExpression__Group__1 : rule__XOtherOperatorExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:10312: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:10119:1: ( rule__XOtherOperatorExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:10120:2: rule__XOtherOperatorExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:10316:1: ( rule__XOtherOperatorExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:10317:2: rule__XOtherOperatorExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group__1__Impl();
@@ -33976,31 +34601,31 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:10126:1: rule__XOtherOperatorExpression__Group__1__Impl : ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:10323: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:10130:1: ( ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:10131:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:10327:1: ( ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:10328:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:10131:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:10132:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:10328:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:10329:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:10133:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:10330:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
             loop75:
             do {
                 int alt75=2;
                 alt75 = dfa75.predict(input);
                 switch (alt75) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:10133:3: rule__XOtherOperatorExpression__Group_1__0
+            	    // InternalPerspectiveDsl.g:10330:3: rule__XOtherOperatorExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_72);
+            	    pushFollow(FOLLOW_74);
             	    rule__XOtherOperatorExpression__Group_1__0();
 
             	    state._fsp--;
@@ -34039,16 +34664,16 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__0"
-    // InternalPerspectiveDsl.g:10142:1: rule__XOtherOperatorExpression__Group_1__0 : rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 ;
+    // InternalPerspectiveDsl.g:10339: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:10146:1: ( rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 )
-            // InternalPerspectiveDsl.g:10147:2: rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1
+            // InternalPerspectiveDsl.g:10343:1: ( rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:10344:2: rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XOtherOperatorExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -34077,23 +34702,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:10154:1: rule__XOtherOperatorExpression__Group_1__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10351: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:10158:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10159:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10355:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10356:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10159:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:10160:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:10356:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10357:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:10161:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:10161:3: rule__XOtherOperatorExpression__Group_1_0__0
+            // InternalPerspectiveDsl.g:10358:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:10358:3: rule__XOtherOperatorExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0__0();
@@ -34128,14 +34753,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__1"
-    // InternalPerspectiveDsl.g:10169:1: rule__XOtherOperatorExpression__Group_1__1 : rule__XOtherOperatorExpression__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:10366: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:10173:1: ( rule__XOtherOperatorExpression__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:10174:2: rule__XOtherOperatorExpression__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:10370:1: ( rule__XOtherOperatorExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:10371:2: rule__XOtherOperatorExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1__1__Impl();
@@ -34161,23 +34786,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:10180:1: rule__XOtherOperatorExpression__Group_1__1__Impl : ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:10377: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:10184:1: ( ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:10185:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:10381:1: ( ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:10382:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:10185:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:10186:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:10382:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:10383:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:10187:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
-            // InternalPerspectiveDsl.g:10187:3: rule__XOtherOperatorExpression__RightOperandAssignment_1_1
+            // InternalPerspectiveDsl.g:10384:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:10384:3: rule__XOtherOperatorExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__RightOperandAssignment_1_1();
@@ -34212,14 +34837,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:10196:1: rule__XOtherOperatorExpression__Group_1_0__0 : rule__XOtherOperatorExpression__Group_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:10393: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:10200:1: ( rule__XOtherOperatorExpression__Group_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:10201:2: rule__XOtherOperatorExpression__Group_1_0__0__Impl
+            // InternalPerspectiveDsl.g:10397:1: ( rule__XOtherOperatorExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:10398:2: rule__XOtherOperatorExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0__0__Impl();
@@ -34245,23 +34870,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:10207:1: rule__XOtherOperatorExpression__Group_1_0__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10404: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:10211:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10212:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10408:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10409:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10212:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:10213:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10409:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10410:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10214:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:10214:3: rule__XOtherOperatorExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:10411:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10411:3: rule__XOtherOperatorExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0_0__0();
@@ -34296,16 +34921,16 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:10223: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:10420: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:10227:1: ( rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:10228:2: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:10424:1: ( rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:10425:2: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_71);
+            pushFollow(FOLLOW_73);
             rule__XOtherOperatorExpression__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -34334,23 +34959,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:10235:1: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:10432: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:10239:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:10240:1: ( () )
+            // InternalPerspectiveDsl.g:10436:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:10437:1: ( () )
             {
-            // InternalPerspectiveDsl.g:10240:1: ( () )
-            // InternalPerspectiveDsl.g:10241:2: ()
+            // InternalPerspectiveDsl.g:10437:1: ( () )
+            // InternalPerspectiveDsl.g:10438:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10242:2: ()
-            // InternalPerspectiveDsl.g:10242:3: 
+            // InternalPerspectiveDsl.g:10439:2: ()
+            // InternalPerspectiveDsl.g:10439:3: 
             {
             }
 
@@ -34375,14 +35000,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:10250:1: rule__XOtherOperatorExpression__Group_1_0_0__1 : rule__XOtherOperatorExpression__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:10447: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:10254:1: ( rule__XOtherOperatorExpression__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:10255:2: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:10451:1: ( rule__XOtherOperatorExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10452:2: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0_0__1__Impl();
@@ -34408,23 +35033,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:10261:1: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl : ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:10458: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:10265:1: ( ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:10266:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10462:1: ( ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:10463:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:10266:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:10267:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10463:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10464:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:10268:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
-            // InternalPerspectiveDsl.g:10268:3: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1
+            // InternalPerspectiveDsl.g:10465:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10465:3: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1();
@@ -34459,16 +35084,16 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__0"
-    // InternalPerspectiveDsl.g:10277:1: rule__OpOther__Group_2__0 : rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 ;
+    // InternalPerspectiveDsl.g:10474: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:10281:1: ( rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 )
-            // InternalPerspectiveDsl.g:10282:2: rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1
+            // InternalPerspectiveDsl.g:10478:1: ( rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 )
+            // InternalPerspectiveDsl.g:10479:2: rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1
             {
-            pushFollow(FOLLOW_73);
+            pushFollow(FOLLOW_75);
             rule__OpOther__Group_2__0__Impl();
 
             state._fsp--;
@@ -34497,17 +35122,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__0__Impl"
-    // InternalPerspectiveDsl.g:10289:1: rule__OpOther__Group_2__0__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:10486:1: rule__OpOther__Group_2__0__Impl : ( '>' ) ;
     public final void rule__OpOther__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10293:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:10294:1: ( '>' )
+            // InternalPerspectiveDsl.g:10490:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:10491:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:10294:1: ( '>' )
-            // InternalPerspectiveDsl.g:10295:2: '>'
+            // InternalPerspectiveDsl.g:10491:1: ( '>' )
+            // InternalPerspectiveDsl.g:10492:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
@@ -34538,14 +35163,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__1"
-    // InternalPerspectiveDsl.g:10304:1: rule__OpOther__Group_2__1 : rule__OpOther__Group_2__1__Impl ;
+    // InternalPerspectiveDsl.g:10501: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:10308:1: ( rule__OpOther__Group_2__1__Impl )
-            // InternalPerspectiveDsl.g:10309:2: rule__OpOther__Group_2__1__Impl
+            // InternalPerspectiveDsl.g:10505:1: ( rule__OpOther__Group_2__1__Impl )
+            // InternalPerspectiveDsl.g:10506:2: rule__OpOther__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_2__1__Impl();
@@ -34571,17 +35196,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__1__Impl"
-    // InternalPerspectiveDsl.g:10315:1: rule__OpOther__Group_2__1__Impl : ( '..' ) ;
+    // InternalPerspectiveDsl.g:10512:1: rule__OpOther__Group_2__1__Impl : ( '..' ) ;
     public final void rule__OpOther__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10319:1: ( ( '..' ) )
-            // InternalPerspectiveDsl.g:10320:1: ( '..' )
+            // InternalPerspectiveDsl.g:10516:1: ( ( '..' ) )
+            // InternalPerspectiveDsl.g:10517:1: ( '..' )
             {
-            // InternalPerspectiveDsl.g:10320:1: ( '..' )
-            // InternalPerspectiveDsl.g:10321:2: '..'
+            // InternalPerspectiveDsl.g:10517:1: ( '..' )
+            // InternalPerspectiveDsl.g:10518:2: '..'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
@@ -34612,16 +35237,16 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__0"
-    // InternalPerspectiveDsl.g:10331:1: rule__OpOther__Group_5__0 : rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 ;
+    // InternalPerspectiveDsl.g:10528: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:10335:1: ( rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 )
-            // InternalPerspectiveDsl.g:10336:2: rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1
+            // InternalPerspectiveDsl.g:10532:1: ( rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 )
+            // InternalPerspectiveDsl.g:10533:2: rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1
             {
-            pushFollow(FOLLOW_74);
+            pushFollow(FOLLOW_76);
             rule__OpOther__Group_5__0__Impl();
 
             state._fsp--;
@@ -34650,17 +35275,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__0__Impl"
-    // InternalPerspectiveDsl.g:10343:1: rule__OpOther__Group_5__0__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:10540:1: rule__OpOther__Group_5__0__Impl : ( '>' ) ;
     public final void rule__OpOther__Group_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10347:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:10348:1: ( '>' )
+            // InternalPerspectiveDsl.g:10544:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:10545:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:10348:1: ( '>' )
-            // InternalPerspectiveDsl.g:10349:2: '>'
+            // InternalPerspectiveDsl.g:10545:1: ( '>' )
+            // InternalPerspectiveDsl.g:10546:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
@@ -34691,14 +35316,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__1"
-    // InternalPerspectiveDsl.g:10358:1: rule__OpOther__Group_5__1 : rule__OpOther__Group_5__1__Impl ;
+    // InternalPerspectiveDsl.g:10555: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:10362:1: ( rule__OpOther__Group_5__1__Impl )
-            // InternalPerspectiveDsl.g:10363:2: rule__OpOther__Group_5__1__Impl
+            // InternalPerspectiveDsl.g:10559:1: ( rule__OpOther__Group_5__1__Impl )
+            // InternalPerspectiveDsl.g:10560:2: rule__OpOther__Group_5__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5__1__Impl();
@@ -34724,23 +35349,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__1__Impl"
-    // InternalPerspectiveDsl.g:10369:1: rule__OpOther__Group_5__1__Impl : ( ( rule__OpOther__Alternatives_5_1 ) ) ;
+    // InternalPerspectiveDsl.g:10566: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:10373:1: ( ( ( rule__OpOther__Alternatives_5_1 ) ) )
-            // InternalPerspectiveDsl.g:10374:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            // InternalPerspectiveDsl.g:10570:1: ( ( ( rule__OpOther__Alternatives_5_1 ) ) )
+            // InternalPerspectiveDsl.g:10571:1: ( ( rule__OpOther__Alternatives_5_1 ) )
             {
-            // InternalPerspectiveDsl.g:10374:1: ( ( rule__OpOther__Alternatives_5_1 ) )
-            // InternalPerspectiveDsl.g:10375:2: ( rule__OpOther__Alternatives_5_1 )
+            // InternalPerspectiveDsl.g:10571:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            // InternalPerspectiveDsl.g:10572:2: ( rule__OpOther__Alternatives_5_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getAlternatives_5_1()); 
             }
-            // InternalPerspectiveDsl.g:10376:2: ( rule__OpOther__Alternatives_5_1 )
-            // InternalPerspectiveDsl.g:10376:3: rule__OpOther__Alternatives_5_1
+            // InternalPerspectiveDsl.g:10573:2: ( rule__OpOther__Alternatives_5_1 )
+            // InternalPerspectiveDsl.g:10573:3: rule__OpOther__Alternatives_5_1
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Alternatives_5_1();
@@ -34775,14 +35400,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0__0"
-    // InternalPerspectiveDsl.g:10385:1: rule__OpOther__Group_5_1_0__0 : rule__OpOther__Group_5_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:10582: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:10389:1: ( rule__OpOther__Group_5_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:10390:2: rule__OpOther__Group_5_1_0__0__Impl
+            // InternalPerspectiveDsl.g:10586:1: ( rule__OpOther__Group_5_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:10587:2: rule__OpOther__Group_5_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5_1_0__0__Impl();
@@ -34808,23 +35433,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:10396:1: rule__OpOther__Group_5_1_0__0__Impl : ( ( rule__OpOther__Group_5_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10593: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:10400:1: ( ( ( rule__OpOther__Group_5_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10401:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10597:1: ( ( ( rule__OpOther__Group_5_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10598:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10401:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:10402:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10598:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10599:2: ( rule__OpOther__Group_5_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10403:2: ( rule__OpOther__Group_5_1_0_0__0 )
-            // InternalPerspectiveDsl.g:10403:3: rule__OpOther__Group_5_1_0_0__0
+            // InternalPerspectiveDsl.g:10600:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10600:3: rule__OpOther__Group_5_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5_1_0_0__0();
@@ -34859,16 +35484,16 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__0"
-    // InternalPerspectiveDsl.g:10412: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:10609: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:10416:1: ( rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 )
-            // InternalPerspectiveDsl.g:10417:2: rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1
+            // InternalPerspectiveDsl.g:10613:1: ( rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 )
+            // InternalPerspectiveDsl.g:10614:2: rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1
             {
-            pushFollow(FOLLOW_74);
+            pushFollow(FOLLOW_76);
             rule__OpOther__Group_5_1_0_0__0__Impl();
 
             state._fsp--;
@@ -34897,17 +35522,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:10424:1: rule__OpOther__Group_5_1_0_0__0__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:10621: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:10428:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:10429:1: ( '>' )
+            // InternalPerspectiveDsl.g:10625:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:10626:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:10429:1: ( '>' )
-            // InternalPerspectiveDsl.g:10430:2: '>'
+            // InternalPerspectiveDsl.g:10626:1: ( '>' )
+            // InternalPerspectiveDsl.g:10627:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
@@ -34938,14 +35563,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__1"
-    // InternalPerspectiveDsl.g:10439:1: rule__OpOther__Group_5_1_0_0__1 : rule__OpOther__Group_5_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:10636: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:10443:1: ( rule__OpOther__Group_5_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:10444:2: rule__OpOther__Group_5_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:10640:1: ( rule__OpOther__Group_5_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10641:2: rule__OpOther__Group_5_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5_1_0_0__1__Impl();
@@ -34971,17 +35596,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:10450:1: rule__OpOther__Group_5_1_0_0__1__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:10647: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:10454:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:10455:1: ( '>' )
+            // InternalPerspectiveDsl.g:10651:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:10652:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:10455:1: ( '>' )
-            // InternalPerspectiveDsl.g:10456:2: '>'
+            // InternalPerspectiveDsl.g:10652:1: ( '>' )
+            // InternalPerspectiveDsl.g:10653:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
@@ -35012,16 +35637,16 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__0"
-    // InternalPerspectiveDsl.g:10466:1: rule__OpOther__Group_6__0 : rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 ;
+    // InternalPerspectiveDsl.g:10663: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:10470:1: ( rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 )
-            // InternalPerspectiveDsl.g:10471:2: rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1
+            // InternalPerspectiveDsl.g:10667:1: ( rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 )
+            // InternalPerspectiveDsl.g:10668:2: rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1
             {
-            pushFollow(FOLLOW_75);
+            pushFollow(FOLLOW_77);
             rule__OpOther__Group_6__0__Impl();
 
             state._fsp--;
@@ -35050,17 +35675,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__0__Impl"
-    // InternalPerspectiveDsl.g:10478:1: rule__OpOther__Group_6__0__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:10675:1: rule__OpOther__Group_6__0__Impl : ( '<' ) ;
     public final void rule__OpOther__Group_6__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10482:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:10483:1: ( '<' )
+            // InternalPerspectiveDsl.g:10679:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:10680:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:10483:1: ( '<' )
-            // InternalPerspectiveDsl.g:10484:2: '<'
+            // InternalPerspectiveDsl.g:10680:1: ( '<' )
+            // InternalPerspectiveDsl.g:10681:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
@@ -35091,14 +35716,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__1"
-    // InternalPerspectiveDsl.g:10493:1: rule__OpOther__Group_6__1 : rule__OpOther__Group_6__1__Impl ;
+    // InternalPerspectiveDsl.g:10690: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:10497:1: ( rule__OpOther__Group_6__1__Impl )
-            // InternalPerspectiveDsl.g:10498:2: rule__OpOther__Group_6__1__Impl
+            // InternalPerspectiveDsl.g:10694:1: ( rule__OpOther__Group_6__1__Impl )
+            // InternalPerspectiveDsl.g:10695:2: rule__OpOther__Group_6__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6__1__Impl();
@@ -35124,23 +35749,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__1__Impl"
-    // InternalPerspectiveDsl.g:10504:1: rule__OpOther__Group_6__1__Impl : ( ( rule__OpOther__Alternatives_6_1 ) ) ;
+    // InternalPerspectiveDsl.g:10701: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:10508:1: ( ( ( rule__OpOther__Alternatives_6_1 ) ) )
-            // InternalPerspectiveDsl.g:10509:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            // InternalPerspectiveDsl.g:10705:1: ( ( ( rule__OpOther__Alternatives_6_1 ) ) )
+            // InternalPerspectiveDsl.g:10706:1: ( ( rule__OpOther__Alternatives_6_1 ) )
             {
-            // InternalPerspectiveDsl.g:10509:1: ( ( rule__OpOther__Alternatives_6_1 ) )
-            // InternalPerspectiveDsl.g:10510:2: ( rule__OpOther__Alternatives_6_1 )
+            // InternalPerspectiveDsl.g:10706:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            // InternalPerspectiveDsl.g:10707:2: ( rule__OpOther__Alternatives_6_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getAlternatives_6_1()); 
             }
-            // InternalPerspectiveDsl.g:10511:2: ( rule__OpOther__Alternatives_6_1 )
-            // InternalPerspectiveDsl.g:10511:3: rule__OpOther__Alternatives_6_1
+            // InternalPerspectiveDsl.g:10708:2: ( rule__OpOther__Alternatives_6_1 )
+            // InternalPerspectiveDsl.g:10708:3: rule__OpOther__Alternatives_6_1
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Alternatives_6_1();
@@ -35175,14 +35800,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0__0"
-    // InternalPerspectiveDsl.g:10520:1: rule__OpOther__Group_6_1_0__0 : rule__OpOther__Group_6_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:10717: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:10524:1: ( rule__OpOther__Group_6_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:10525:2: rule__OpOther__Group_6_1_0__0__Impl
+            // InternalPerspectiveDsl.g:10721:1: ( rule__OpOther__Group_6_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:10722:2: rule__OpOther__Group_6_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6_1_0__0__Impl();
@@ -35208,23 +35833,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:10531:1: rule__OpOther__Group_6_1_0__0__Impl : ( ( rule__OpOther__Group_6_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10728: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:10535:1: ( ( ( rule__OpOther__Group_6_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10536:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10732:1: ( ( ( rule__OpOther__Group_6_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10733:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10536:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:10537:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10733:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10734:2: ( rule__OpOther__Group_6_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10538:2: ( rule__OpOther__Group_6_1_0_0__0 )
-            // InternalPerspectiveDsl.g:10538:3: rule__OpOther__Group_6_1_0_0__0
+            // InternalPerspectiveDsl.g:10735:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10735:3: rule__OpOther__Group_6_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6_1_0_0__0();
@@ -35259,16 +35884,16 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__0"
-    // InternalPerspectiveDsl.g:10547: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:10744: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:10551:1: ( rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 )
-            // InternalPerspectiveDsl.g:10552:2: rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1
+            // InternalPerspectiveDsl.g:10748:1: ( rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 )
+            // InternalPerspectiveDsl.g:10749:2: rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1
             {
-            pushFollow(FOLLOW_59);
+            pushFollow(FOLLOW_61);
             rule__OpOther__Group_6_1_0_0__0__Impl();
 
             state._fsp--;
@@ -35297,17 +35922,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:10559:1: rule__OpOther__Group_6_1_0_0__0__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:10756: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:10563:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:10564:1: ( '<' )
+            // InternalPerspectiveDsl.g:10760:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:10761:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:10564:1: ( '<' )
-            // InternalPerspectiveDsl.g:10565:2: '<'
+            // InternalPerspectiveDsl.g:10761:1: ( '<' )
+            // InternalPerspectiveDsl.g:10762:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
@@ -35338,14 +35963,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__1"
-    // InternalPerspectiveDsl.g:10574:1: rule__OpOther__Group_6_1_0_0__1 : rule__OpOther__Group_6_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:10771: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:10578:1: ( rule__OpOther__Group_6_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:10579:2: rule__OpOther__Group_6_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:10775:1: ( rule__OpOther__Group_6_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10776:2: rule__OpOther__Group_6_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6_1_0_0__1__Impl();
@@ -35371,17 +35996,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:10585:1: rule__OpOther__Group_6_1_0_0__1__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:10782: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:10589:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:10590:1: ( '<' )
+            // InternalPerspectiveDsl.g:10786:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:10787:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:10590:1: ( '<' )
-            // InternalPerspectiveDsl.g:10591:2: '<'
+            // InternalPerspectiveDsl.g:10787:1: ( '<' )
+            // InternalPerspectiveDsl.g:10788:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
@@ -35412,16 +36037,16 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__0"
-    // InternalPerspectiveDsl.g:10601:1: rule__XAdditiveExpression__Group__0 : rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:10798: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:10605:1: ( rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 )
-            // InternalPerspectiveDsl.g:10606:2: rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1
+            // InternalPerspectiveDsl.g:10802:1: ( rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 )
+            // InternalPerspectiveDsl.g:10803:2: rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1
             {
-            pushFollow(FOLLOW_76);
+            pushFollow(FOLLOW_78);
             rule__XAdditiveExpression__Group__0__Impl();
 
             state._fsp--;
@@ -35450,17 +36075,17 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:10613:1: rule__XAdditiveExpression__Group__0__Impl : ( ruleXMultiplicativeExpression ) ;
+    // InternalPerspectiveDsl.g:10810:1: rule__XAdditiveExpression__Group__0__Impl : ( ruleXMultiplicativeExpression ) ;
     public final void rule__XAdditiveExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10617:1: ( ( ruleXMultiplicativeExpression ) )
-            // InternalPerspectiveDsl.g:10618:1: ( ruleXMultiplicativeExpression )
+            // InternalPerspectiveDsl.g:10814:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalPerspectiveDsl.g:10815:1: ( ruleXMultiplicativeExpression )
             {
-            // InternalPerspectiveDsl.g:10618:1: ( ruleXMultiplicativeExpression )
-            // InternalPerspectiveDsl.g:10619:2: ruleXMultiplicativeExpression
+            // InternalPerspectiveDsl.g:10815:1: ( ruleXMultiplicativeExpression )
+            // InternalPerspectiveDsl.g:10816:2: ruleXMultiplicativeExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
@@ -35495,14 +36120,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__1"
-    // InternalPerspectiveDsl.g:10628:1: rule__XAdditiveExpression__Group__1 : rule__XAdditiveExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:10825: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:10632:1: ( rule__XAdditiveExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:10633:2: rule__XAdditiveExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:10829:1: ( rule__XAdditiveExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:10830:2: rule__XAdditiveExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group__1__Impl();
@@ -35528,22 +36153,22 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:10639:1: rule__XAdditiveExpression__Group__1__Impl : ( ( rule__XAdditiveExpression__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:10836: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:10643:1: ( ( ( rule__XAdditiveExpression__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:10644:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:10840:1: ( ( ( rule__XAdditiveExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:10841:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:10644:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:10645:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:10841:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:10842:2: ( rule__XAdditiveExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:10646:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:10843:2: ( rule__XAdditiveExpression__Group_1__0 )*
             loop76:
             do {
                 int alt76=2;
@@ -35552,7 +36177,7 @@
                 if ( (LA76_0==35) ) {
                     int LA76_2 = input.LA(2);
 
-                    if ( (synpred132_InternalPerspectiveDsl()) ) {
+                    if ( (synpred134_InternalPerspectiveDsl()) ) {
                         alt76=1;
                     }
 
@@ -35561,7 +36186,7 @@
                 else if ( (LA76_0==34) ) {
                     int LA76_3 = input.LA(2);
 
-                    if ( (synpred132_InternalPerspectiveDsl()) ) {
+                    if ( (synpred134_InternalPerspectiveDsl()) ) {
                         alt76=1;
                     }
 
@@ -35571,9 +36196,9 @@
 
                 switch (alt76) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:10646:3: rule__XAdditiveExpression__Group_1__0
+            	    // InternalPerspectiveDsl.g:10843:3: rule__XAdditiveExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_77);
+            	    pushFollow(FOLLOW_79);
             	    rule__XAdditiveExpression__Group_1__0();
 
             	    state._fsp--;
@@ -35612,16 +36237,16 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__0"
-    // InternalPerspectiveDsl.g:10655:1: rule__XAdditiveExpression__Group_1__0 : rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 ;
+    // InternalPerspectiveDsl.g:10852: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:10659:1: ( rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 )
-            // InternalPerspectiveDsl.g:10660:2: rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1
+            // InternalPerspectiveDsl.g:10856:1: ( rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:10857:2: rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XAdditiveExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -35650,23 +36275,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:10667:1: rule__XAdditiveExpression__Group_1__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10864: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:10671:1: ( ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10672:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10868:1: ( ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10869:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10672:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:10673:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:10869:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10870:2: ( rule__XAdditiveExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:10674:2: ( rule__XAdditiveExpression__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:10674:3: rule__XAdditiveExpression__Group_1_0__0
+            // InternalPerspectiveDsl.g:10871:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:10871:3: rule__XAdditiveExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0__0();
@@ -35701,14 +36326,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__1"
-    // InternalPerspectiveDsl.g:10682:1: rule__XAdditiveExpression__Group_1__1 : rule__XAdditiveExpression__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:10879: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:10686:1: ( rule__XAdditiveExpression__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:10687:2: rule__XAdditiveExpression__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:10883:1: ( rule__XAdditiveExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:10884:2: rule__XAdditiveExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1__1__Impl();
@@ -35734,23 +36359,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:10693:1: rule__XAdditiveExpression__Group_1__1__Impl : ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:10890: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:10697:1: ( ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:10698:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:10894:1: ( ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:10895:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:10698:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:10699:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:10895:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:10896:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:10700:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
-            // InternalPerspectiveDsl.g:10700:3: rule__XAdditiveExpression__RightOperandAssignment_1_1
+            // InternalPerspectiveDsl.g:10897:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:10897:3: rule__XAdditiveExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__RightOperandAssignment_1_1();
@@ -35785,14 +36410,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:10709:1: rule__XAdditiveExpression__Group_1_0__0 : rule__XAdditiveExpression__Group_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:10906: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:10713:1: ( rule__XAdditiveExpression__Group_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:10714:2: rule__XAdditiveExpression__Group_1_0__0__Impl
+            // InternalPerspectiveDsl.g:10910:1: ( rule__XAdditiveExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:10911:2: rule__XAdditiveExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0__0__Impl();
@@ -35818,23 +36443,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:10720:1: rule__XAdditiveExpression__Group_1_0__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10917: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:10724:1: ( ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10725:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10921:1: ( ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10922:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10725:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:10726:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10922:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10923:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10727:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:10727:3: rule__XAdditiveExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:10924:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10924:3: rule__XAdditiveExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0_0__0();
@@ -35869,16 +36494,16 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:10736: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:10933: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:10740:1: ( rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:10741:2: rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:10937:1: ( rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:10938:2: rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_76);
+            pushFollow(FOLLOW_78);
             rule__XAdditiveExpression__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -35907,23 +36532,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:10748:1: rule__XAdditiveExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:10945: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:10752:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:10753:1: ( () )
+            // InternalPerspectiveDsl.g:10949:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:10950:1: ( () )
             {
-            // InternalPerspectiveDsl.g:10753:1: ( () )
-            // InternalPerspectiveDsl.g:10754:2: ()
+            // InternalPerspectiveDsl.g:10950:1: ( () )
+            // InternalPerspectiveDsl.g:10951:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10755:2: ()
-            // InternalPerspectiveDsl.g:10755:3: 
+            // InternalPerspectiveDsl.g:10952:2: ()
+            // InternalPerspectiveDsl.g:10952:3: 
             {
             }
 
@@ -35948,14 +36573,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:10763:1: rule__XAdditiveExpression__Group_1_0_0__1 : rule__XAdditiveExpression__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:10960: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:10767:1: ( rule__XAdditiveExpression__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:10768:2: rule__XAdditiveExpression__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:10964:1: ( rule__XAdditiveExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10965:2: rule__XAdditiveExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0_0__1__Impl();
@@ -35981,23 +36606,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:10774:1: rule__XAdditiveExpression__Group_1_0_0__1__Impl : ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:10971: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:10778:1: ( ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:10779:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10975:1: ( ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:10976:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:10779:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:10780:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10976:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10977:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:10781:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
-            // InternalPerspectiveDsl.g:10781:3: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1
+            // InternalPerspectiveDsl.g:10978:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10978:3: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__FeatureAssignment_1_0_0_1();
@@ -36032,16 +36657,16 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__0"
-    // InternalPerspectiveDsl.g:10790:1: rule__XMultiplicativeExpression__Group__0 : rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:10987: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:10794:1: ( rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 )
-            // InternalPerspectiveDsl.g:10795:2: rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1
+            // InternalPerspectiveDsl.g:10991:1: ( rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 )
+            // InternalPerspectiveDsl.g:10992:2: rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1
             {
-            pushFollow(FOLLOW_78);
+            pushFollow(FOLLOW_80);
             rule__XMultiplicativeExpression__Group__0__Impl();
 
             state._fsp--;
@@ -36070,17 +36695,17 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:10802:1: rule__XMultiplicativeExpression__Group__0__Impl : ( ruleXUnaryOperation ) ;
+    // InternalPerspectiveDsl.g:10999:1: rule__XMultiplicativeExpression__Group__0__Impl : ( ruleXUnaryOperation ) ;
     public final void rule__XMultiplicativeExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10806:1: ( ( ruleXUnaryOperation ) )
-            // InternalPerspectiveDsl.g:10807:1: ( ruleXUnaryOperation )
+            // InternalPerspectiveDsl.g:11003:1: ( ( ruleXUnaryOperation ) )
+            // InternalPerspectiveDsl.g:11004:1: ( ruleXUnaryOperation )
             {
-            // InternalPerspectiveDsl.g:10807:1: ( ruleXUnaryOperation )
-            // InternalPerspectiveDsl.g:10808:2: ruleXUnaryOperation
+            // InternalPerspectiveDsl.g:11004:1: ( ruleXUnaryOperation )
+            // InternalPerspectiveDsl.g:11005:2: ruleXUnaryOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
@@ -36115,14 +36740,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__1"
-    // InternalPerspectiveDsl.g:10817:1: rule__XMultiplicativeExpression__Group__1 : rule__XMultiplicativeExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:11014: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:10821:1: ( rule__XMultiplicativeExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:10822:2: rule__XMultiplicativeExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:11018:1: ( rule__XMultiplicativeExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:11019:2: rule__XMultiplicativeExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group__1__Impl();
@@ -36148,22 +36773,22 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:10828:1: rule__XMultiplicativeExpression__Group__1__Impl : ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:11025: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:10832:1: ( ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:10833:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:11029:1: ( ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:11030:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:10833:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:10834:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:11030:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:11031:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:10835:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:11032:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
             loop77:
             do {
                 int alt77=2;
@@ -36172,7 +36797,7 @@
                     {
                     int LA77_2 = input.LA(2);
 
-                    if ( (synpred133_InternalPerspectiveDsl()) ) {
+                    if ( (synpred135_InternalPerspectiveDsl()) ) {
                         alt77=1;
                     }
 
@@ -36183,7 +36808,7 @@
                     {
                     int LA77_3 = input.LA(2);
 
-                    if ( (synpred133_InternalPerspectiveDsl()) ) {
+                    if ( (synpred135_InternalPerspectiveDsl()) ) {
                         alt77=1;
                     }
 
@@ -36194,7 +36819,7 @@
                     {
                     int LA77_4 = input.LA(2);
 
-                    if ( (synpred133_InternalPerspectiveDsl()) ) {
+                    if ( (synpred135_InternalPerspectiveDsl()) ) {
                         alt77=1;
                     }
 
@@ -36205,7 +36830,7 @@
                     {
                     int LA77_5 = input.LA(2);
 
-                    if ( (synpred133_InternalPerspectiveDsl()) ) {
+                    if ( (synpred135_InternalPerspectiveDsl()) ) {
                         alt77=1;
                     }
 
@@ -36217,9 +36842,9 @@
 
                 switch (alt77) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:10835:3: rule__XMultiplicativeExpression__Group_1__0
+            	    // InternalPerspectiveDsl.g:11032:3: rule__XMultiplicativeExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_79);
+            	    pushFollow(FOLLOW_81);
             	    rule__XMultiplicativeExpression__Group_1__0();
 
             	    state._fsp--;
@@ -36258,16 +36883,16 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__0"
-    // InternalPerspectiveDsl.g:10844:1: rule__XMultiplicativeExpression__Group_1__0 : rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 ;
+    // InternalPerspectiveDsl.g:11041: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:10848:1: ( rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 )
-            // InternalPerspectiveDsl.g:10849:2: rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1
+            // InternalPerspectiveDsl.g:11045:1: ( rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:11046:2: rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XMultiplicativeExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -36296,23 +36921,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:10856:1: rule__XMultiplicativeExpression__Group_1__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11053: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:10860:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10861:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11057:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11058:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10861:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:10862:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11058:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11059:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:10863:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:10863:3: rule__XMultiplicativeExpression__Group_1_0__0
+            // InternalPerspectiveDsl.g:11060:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11060:3: rule__XMultiplicativeExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0__0();
@@ -36347,14 +36972,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__1"
-    // InternalPerspectiveDsl.g:10871:1: rule__XMultiplicativeExpression__Group_1__1 : rule__XMultiplicativeExpression__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:11068: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:10875:1: ( rule__XMultiplicativeExpression__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:10876:2: rule__XMultiplicativeExpression__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:11072:1: ( rule__XMultiplicativeExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:11073:2: rule__XMultiplicativeExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1__1__Impl();
@@ -36380,23 +37005,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:10882:1: rule__XMultiplicativeExpression__Group_1__1__Impl : ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:11079: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:10886:1: ( ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:10887:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:11083:1: ( ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:11084:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:10887:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:10888:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:11084:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:11085:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:10889:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
-            // InternalPerspectiveDsl.g:10889:3: rule__XMultiplicativeExpression__RightOperandAssignment_1_1
+            // InternalPerspectiveDsl.g:11086:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:11086:3: rule__XMultiplicativeExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__RightOperandAssignment_1_1();
@@ -36431,14 +37056,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:10898:1: rule__XMultiplicativeExpression__Group_1_0__0 : rule__XMultiplicativeExpression__Group_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:11095: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:10902:1: ( rule__XMultiplicativeExpression__Group_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:10903:2: rule__XMultiplicativeExpression__Group_1_0__0__Impl
+            // InternalPerspectiveDsl.g:11099:1: ( rule__XMultiplicativeExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:11100:2: rule__XMultiplicativeExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0__0__Impl();
@@ -36464,23 +37089,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:10909:1: rule__XMultiplicativeExpression__Group_1_0__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11106: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:10913:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10914:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11110:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11111:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10914:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:10915:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11111:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11112:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10916:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:10916:3: rule__XMultiplicativeExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:11113:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11113:3: rule__XMultiplicativeExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0_0__0();
@@ -36515,16 +37140,16 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:10925: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:11122: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:10929:1: ( rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:10930:2: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:11126:1: ( rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:11127:2: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_78);
+            pushFollow(FOLLOW_80);
             rule__XMultiplicativeExpression__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -36553,23 +37178,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:10937:1: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:11134: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:10941:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:10942:1: ( () )
+            // InternalPerspectiveDsl.g:11138:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:11139:1: ( () )
             {
-            // InternalPerspectiveDsl.g:10942:1: ( () )
-            // InternalPerspectiveDsl.g:10943:2: ()
+            // InternalPerspectiveDsl.g:11139:1: ( () )
+            // InternalPerspectiveDsl.g:11140:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10944:2: ()
-            // InternalPerspectiveDsl.g:10944:3: 
+            // InternalPerspectiveDsl.g:11141:2: ()
+            // InternalPerspectiveDsl.g:11141:3: 
             {
             }
 
@@ -36594,14 +37219,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:10952:1: rule__XMultiplicativeExpression__Group_1_0_0__1 : rule__XMultiplicativeExpression__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:11149: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:10956:1: ( rule__XMultiplicativeExpression__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:10957:2: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:11153:1: ( rule__XMultiplicativeExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:11154:2: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0_0__1__Impl();
@@ -36627,23 +37252,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:10963:1: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl : ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:11160: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:10967:1: ( ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:10968:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:11164:1: ( ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:11165:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:10968:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:10969:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:11165:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:11166:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:10970:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
-            // InternalPerspectiveDsl.g:10970:3: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1
+            // InternalPerspectiveDsl.g:11167:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:11167:3: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1();
@@ -36678,16 +37303,16 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__0"
-    // InternalPerspectiveDsl.g:10979:1: rule__XUnaryOperation__Group_0__0 : rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 ;
+    // InternalPerspectiveDsl.g:11176: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:10983:1: ( rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 )
-            // InternalPerspectiveDsl.g:10984:2: rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1
+            // InternalPerspectiveDsl.g:11180:1: ( rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 )
+            // InternalPerspectiveDsl.g:11181:2: rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1
             {
-            pushFollow(FOLLOW_80);
+            pushFollow(FOLLOW_82);
             rule__XUnaryOperation__Group_0__0__Impl();
 
             state._fsp--;
@@ -36716,23 +37341,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:10991:1: rule__XUnaryOperation__Group_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:11188:1: rule__XUnaryOperation__Group_0__0__Impl : ( () ) ;
     public final void rule__XUnaryOperation__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10995:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:10996:1: ( () )
+            // InternalPerspectiveDsl.g:11192:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:11193:1: ( () )
             {
-            // InternalPerspectiveDsl.g:10996:1: ( () )
-            // InternalPerspectiveDsl.g:10997:2: ()
+            // InternalPerspectiveDsl.g:11193:1: ( () )
+            // InternalPerspectiveDsl.g:11194:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10998:2: ()
-            // InternalPerspectiveDsl.g:10998:3: 
+            // InternalPerspectiveDsl.g:11195:2: ()
+            // InternalPerspectiveDsl.g:11195:3: 
             {
             }
 
@@ -36757,16 +37382,16 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__1"
-    // InternalPerspectiveDsl.g:11006:1: rule__XUnaryOperation__Group_0__1 : rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 ;
+    // InternalPerspectiveDsl.g:11203: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:11010:1: ( rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 )
-            // InternalPerspectiveDsl.g:11011:2: rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2
+            // InternalPerspectiveDsl.g:11207:1: ( rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 )
+            // InternalPerspectiveDsl.g:11208:2: rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XUnaryOperation__Group_0__1__Impl();
 
             state._fsp--;
@@ -36795,23 +37420,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__1__Impl"
-    // InternalPerspectiveDsl.g:11018:1: rule__XUnaryOperation__Group_0__1__Impl : ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:11215: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:11022:1: ( ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) )
-            // InternalPerspectiveDsl.g:11023:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            // InternalPerspectiveDsl.g:11219:1: ( ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) )
+            // InternalPerspectiveDsl.g:11220:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:11023:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
-            // InternalPerspectiveDsl.g:11024:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            // InternalPerspectiveDsl.g:11220:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            // InternalPerspectiveDsl.g:11221:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1()); 
             }
-            // InternalPerspectiveDsl.g:11025:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
-            // InternalPerspectiveDsl.g:11025:3: rule__XUnaryOperation__FeatureAssignment_0_1
+            // InternalPerspectiveDsl.g:11222:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            // InternalPerspectiveDsl.g:11222:3: rule__XUnaryOperation__FeatureAssignment_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__FeatureAssignment_0_1();
@@ -36846,14 +37471,14 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__2"
-    // InternalPerspectiveDsl.g:11033:1: rule__XUnaryOperation__Group_0__2 : rule__XUnaryOperation__Group_0__2__Impl ;
+    // InternalPerspectiveDsl.g:11230: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:11037:1: ( rule__XUnaryOperation__Group_0__2__Impl )
-            // InternalPerspectiveDsl.g:11038:2: rule__XUnaryOperation__Group_0__2__Impl
+            // InternalPerspectiveDsl.g:11234:1: ( rule__XUnaryOperation__Group_0__2__Impl )
+            // InternalPerspectiveDsl.g:11235:2: rule__XUnaryOperation__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__Group_0__2__Impl();
@@ -36879,23 +37504,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__2__Impl"
-    // InternalPerspectiveDsl.g:11044:1: rule__XUnaryOperation__Group_0__2__Impl : ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) ;
+    // InternalPerspectiveDsl.g:11241: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:11048:1: ( ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) )
-            // InternalPerspectiveDsl.g:11049:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            // InternalPerspectiveDsl.g:11245:1: ( ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) )
+            // InternalPerspectiveDsl.g:11246:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
             {
-            // InternalPerspectiveDsl.g:11049:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
-            // InternalPerspectiveDsl.g:11050:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            // InternalPerspectiveDsl.g:11246:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            // InternalPerspectiveDsl.g:11247:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2()); 
             }
-            // InternalPerspectiveDsl.g:11051:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
-            // InternalPerspectiveDsl.g:11051:3: rule__XUnaryOperation__OperandAssignment_0_2
+            // InternalPerspectiveDsl.g:11248:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            // InternalPerspectiveDsl.g:11248:3: rule__XUnaryOperation__OperandAssignment_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__OperandAssignment_0_2();
@@ -36930,16 +37555,16 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__0"
-    // InternalPerspectiveDsl.g:11060:1: rule__XCastedExpression__Group__0 : rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:11257: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:11064:1: ( rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 )
-            // InternalPerspectiveDsl.g:11065:2: rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1
+            // InternalPerspectiveDsl.g:11261:1: ( rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 )
+            // InternalPerspectiveDsl.g:11262:2: rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1
             {
-            pushFollow(FOLLOW_81);
+            pushFollow(FOLLOW_83);
             rule__XCastedExpression__Group__0__Impl();
 
             state._fsp--;
@@ -36968,17 +37593,17 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:11072:1: rule__XCastedExpression__Group__0__Impl : ( ruleXPostfixOperation ) ;
+    // InternalPerspectiveDsl.g:11269:1: rule__XCastedExpression__Group__0__Impl : ( ruleXPostfixOperation ) ;
     public final void rule__XCastedExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11076:1: ( ( ruleXPostfixOperation ) )
-            // InternalPerspectiveDsl.g:11077:1: ( ruleXPostfixOperation )
+            // InternalPerspectiveDsl.g:11273:1: ( ( ruleXPostfixOperation ) )
+            // InternalPerspectiveDsl.g:11274:1: ( ruleXPostfixOperation )
             {
-            // InternalPerspectiveDsl.g:11077:1: ( ruleXPostfixOperation )
-            // InternalPerspectiveDsl.g:11078:2: ruleXPostfixOperation
+            // InternalPerspectiveDsl.g:11274:1: ( ruleXPostfixOperation )
+            // InternalPerspectiveDsl.g:11275:2: ruleXPostfixOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); 
@@ -37013,14 +37638,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__1"
-    // InternalPerspectiveDsl.g:11087:1: rule__XCastedExpression__Group__1 : rule__XCastedExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:11284: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:11091:1: ( rule__XCastedExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:11092:2: rule__XCastedExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:11288:1: ( rule__XCastedExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:11289:2: rule__XCastedExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group__1__Impl();
@@ -37046,31 +37671,31 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:11098:1: rule__XCastedExpression__Group__1__Impl : ( ( rule__XCastedExpression__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:11295: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:11102:1: ( ( ( rule__XCastedExpression__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:11103:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:11299:1: ( ( ( rule__XCastedExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:11300:1: ( ( rule__XCastedExpression__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:11103:1: ( ( rule__XCastedExpression__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:11104:2: ( rule__XCastedExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:11300:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:11301:2: ( rule__XCastedExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:11105:2: ( rule__XCastedExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:11302:2: ( rule__XCastedExpression__Group_1__0 )*
             loop78:
             do {
                 int alt78=2;
                 int LA78_0 = input.LA(1);
 
-                if ( (LA78_0==96) ) {
+                if ( (LA78_0==98) ) {
                     int LA78_2 = input.LA(2);
 
-                    if ( (synpred134_InternalPerspectiveDsl()) ) {
+                    if ( (synpred136_InternalPerspectiveDsl()) ) {
                         alt78=1;
                     }
 
@@ -37080,9 +37705,9 @@
 
                 switch (alt78) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:11105:3: rule__XCastedExpression__Group_1__0
+            	    // InternalPerspectiveDsl.g:11302:3: rule__XCastedExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_82);
+            	    pushFollow(FOLLOW_84);
             	    rule__XCastedExpression__Group_1__0();
 
             	    state._fsp--;
@@ -37121,16 +37746,16 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__0"
-    // InternalPerspectiveDsl.g:11114:1: rule__XCastedExpression__Group_1__0 : rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 ;
+    // InternalPerspectiveDsl.g:11311: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:11118:1: ( rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 )
-            // InternalPerspectiveDsl.g:11119:2: rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1
+            // InternalPerspectiveDsl.g:11315:1: ( rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:11316:2: rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__XCastedExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -37159,23 +37784,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:11126:1: rule__XCastedExpression__Group_1__0__Impl : ( ( rule__XCastedExpression__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11323: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:11130:1: ( ( ( rule__XCastedExpression__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11131:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11327:1: ( ( ( rule__XCastedExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11328:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11131:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:11132:2: ( rule__XCastedExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11328:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11329:2: ( rule__XCastedExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:11133:2: ( rule__XCastedExpression__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:11133:3: rule__XCastedExpression__Group_1_0__0
+            // InternalPerspectiveDsl.g:11330:2: ( rule__XCastedExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11330:3: rule__XCastedExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0__0();
@@ -37210,14 +37835,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__1"
-    // InternalPerspectiveDsl.g:11141:1: rule__XCastedExpression__Group_1__1 : rule__XCastedExpression__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:11338: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:11145:1: ( rule__XCastedExpression__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:11146:2: rule__XCastedExpression__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:11342:1: ( rule__XCastedExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:11343:2: rule__XCastedExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1__1__Impl();
@@ -37243,23 +37868,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:11152:1: rule__XCastedExpression__Group_1__1__Impl : ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:11349: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:11156:1: ( ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:11157:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:11353:1: ( ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:11354:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:11157:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:11158:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            // InternalPerspectiveDsl.g:11354:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:11355:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:11159:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
-            // InternalPerspectiveDsl.g:11159:3: rule__XCastedExpression__TypeAssignment_1_1
+            // InternalPerspectiveDsl.g:11356:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            // InternalPerspectiveDsl.g:11356:3: rule__XCastedExpression__TypeAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__TypeAssignment_1_1();
@@ -37294,14 +37919,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:11168:1: rule__XCastedExpression__Group_1_0__0 : rule__XCastedExpression__Group_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:11365: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:11172:1: ( rule__XCastedExpression__Group_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:11173:2: rule__XCastedExpression__Group_1_0__0__Impl
+            // InternalPerspectiveDsl.g:11369:1: ( rule__XCastedExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:11370:2: rule__XCastedExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0__0__Impl();
@@ -37327,23 +37952,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:11179:1: rule__XCastedExpression__Group_1_0__0__Impl : ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11376: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:11183:1: ( ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11184:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11380:1: ( ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11381:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11184:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:11185:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11381:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11382:2: ( rule__XCastedExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11186:2: ( rule__XCastedExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:11186:3: rule__XCastedExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:11383:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11383:3: rule__XCastedExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0_0__0();
@@ -37378,16 +38003,16 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:11195: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:11392: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:11199:1: ( rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:11200:2: rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:11396:1: ( rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:11397:2: rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_81);
+            pushFollow(FOLLOW_83);
             rule__XCastedExpression__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -37416,23 +38041,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:11207:1: rule__XCastedExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:11404: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:11211:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:11212:1: ( () )
+            // InternalPerspectiveDsl.g:11408:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:11409:1: ( () )
             {
-            // InternalPerspectiveDsl.g:11212:1: ( () )
-            // InternalPerspectiveDsl.g:11213:2: ()
+            // InternalPerspectiveDsl.g:11409:1: ( () )
+            // InternalPerspectiveDsl.g:11410:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11214:2: ()
-            // InternalPerspectiveDsl.g:11214:3: 
+            // InternalPerspectiveDsl.g:11411:2: ()
+            // InternalPerspectiveDsl.g:11411:3: 
             {
             }
 
@@ -37457,14 +38082,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:11222:1: rule__XCastedExpression__Group_1_0_0__1 : rule__XCastedExpression__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:11419: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:11226:1: ( rule__XCastedExpression__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:11227:2: rule__XCastedExpression__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:11423:1: ( rule__XCastedExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:11424:2: rule__XCastedExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0_0__1__Impl();
@@ -37490,22 +38115,22 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:11233:1: rule__XCastedExpression__Group_1_0_0__1__Impl : ( 'as' ) ;
+    // InternalPerspectiveDsl.g:11430: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:11237:1: ( ( 'as' ) )
-            // InternalPerspectiveDsl.g:11238:1: ( 'as' )
+            // InternalPerspectiveDsl.g:11434:1: ( ( 'as' ) )
+            // InternalPerspectiveDsl.g:11435:1: ( 'as' )
             {
-            // InternalPerspectiveDsl.g:11238:1: ( 'as' )
-            // InternalPerspectiveDsl.g:11239:2: 'as'
+            // InternalPerspectiveDsl.g:11435:1: ( 'as' )
+            // InternalPerspectiveDsl.g:11436:2: 'as'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_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.getXCastedExpressionAccess().getAsKeyword_1_0_0_1()); 
             }
@@ -37531,16 +38156,16 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__0"
-    // InternalPerspectiveDsl.g:11249:1: rule__XPostfixOperation__Group__0 : rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 ;
+    // InternalPerspectiveDsl.g:11446: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:11253:1: ( rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 )
-            // InternalPerspectiveDsl.g:11254:2: rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1
+            // InternalPerspectiveDsl.g:11450:1: ( rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 )
+            // InternalPerspectiveDsl.g:11451:2: rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1
             {
-            pushFollow(FOLLOW_83);
+            pushFollow(FOLLOW_85);
             rule__XPostfixOperation__Group__0__Impl();
 
             state._fsp--;
@@ -37569,17 +38194,17 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__0__Impl"
-    // InternalPerspectiveDsl.g:11261:1: rule__XPostfixOperation__Group__0__Impl : ( ruleXMemberFeatureCall ) ;
+    // InternalPerspectiveDsl.g:11458:1: rule__XPostfixOperation__Group__0__Impl : ( ruleXMemberFeatureCall ) ;
     public final void rule__XPostfixOperation__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11265:1: ( ( ruleXMemberFeatureCall ) )
-            // InternalPerspectiveDsl.g:11266:1: ( ruleXMemberFeatureCall )
+            // InternalPerspectiveDsl.g:11462:1: ( ( ruleXMemberFeatureCall ) )
+            // InternalPerspectiveDsl.g:11463:1: ( ruleXMemberFeatureCall )
             {
-            // InternalPerspectiveDsl.g:11266:1: ( ruleXMemberFeatureCall )
-            // InternalPerspectiveDsl.g:11267:2: ruleXMemberFeatureCall
+            // InternalPerspectiveDsl.g:11463:1: ( ruleXMemberFeatureCall )
+            // InternalPerspectiveDsl.g:11464:2: ruleXMemberFeatureCall
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0()); 
@@ -37614,14 +38239,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__1"
-    // InternalPerspectiveDsl.g:11276:1: rule__XPostfixOperation__Group__1 : rule__XPostfixOperation__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:11473: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:11280:1: ( rule__XPostfixOperation__Group__1__Impl )
-            // InternalPerspectiveDsl.g:11281:2: rule__XPostfixOperation__Group__1__Impl
+            // InternalPerspectiveDsl.g:11477:1: ( rule__XPostfixOperation__Group__1__Impl )
+            // InternalPerspectiveDsl.g:11478:2: rule__XPostfixOperation__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group__1__Impl();
@@ -37647,42 +38272,42 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__1__Impl"
-    // InternalPerspectiveDsl.g:11287:1: rule__XPostfixOperation__Group__1__Impl : ( ( rule__XPostfixOperation__Group_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:11484: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:11291:1: ( ( ( rule__XPostfixOperation__Group_1__0 )? ) )
-            // InternalPerspectiveDsl.g:11292:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:11488:1: ( ( ( rule__XPostfixOperation__Group_1__0 )? ) )
+            // InternalPerspectiveDsl.g:11489:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:11292:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
-            // InternalPerspectiveDsl.g:11293:2: ( rule__XPostfixOperation__Group_1__0 )?
+            // InternalPerspectiveDsl.g:11489:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:11490:2: ( rule__XPostfixOperation__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:11294:2: ( rule__XPostfixOperation__Group_1__0 )?
+            // InternalPerspectiveDsl.g:11491:2: ( rule__XPostfixOperation__Group_1__0 )?
             int alt79=2;
             int LA79_0 = input.LA(1);
 
             if ( (LA79_0==41) ) {
                 int LA79_1 = input.LA(2);
 
-                if ( (synpred135_InternalPerspectiveDsl()) ) {
+                if ( (synpred137_InternalPerspectiveDsl()) ) {
                     alt79=1;
                 }
             }
             else if ( (LA79_0==42) ) {
                 int LA79_2 = input.LA(2);
 
-                if ( (synpred135_InternalPerspectiveDsl()) ) {
+                if ( (synpred137_InternalPerspectiveDsl()) ) {
                     alt79=1;
                 }
             }
             switch (alt79) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:11294:3: rule__XPostfixOperation__Group_1__0
+                    // InternalPerspectiveDsl.g:11491:3: rule__XPostfixOperation__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XPostfixOperation__Group_1__0();
@@ -37720,14 +38345,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1__0"
-    // InternalPerspectiveDsl.g:11303:1: rule__XPostfixOperation__Group_1__0 : rule__XPostfixOperation__Group_1__0__Impl ;
+    // InternalPerspectiveDsl.g:11500: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:11307:1: ( rule__XPostfixOperation__Group_1__0__Impl )
-            // InternalPerspectiveDsl.g:11308:2: rule__XPostfixOperation__Group_1__0__Impl
+            // InternalPerspectiveDsl.g:11504:1: ( rule__XPostfixOperation__Group_1__0__Impl )
+            // InternalPerspectiveDsl.g:11505:2: rule__XPostfixOperation__Group_1__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group_1__0__Impl();
@@ -37753,23 +38378,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:11314:1: rule__XPostfixOperation__Group_1__0__Impl : ( ( rule__XPostfixOperation__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11511: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:11318:1: ( ( ( rule__XPostfixOperation__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11319:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11515:1: ( ( ( rule__XPostfixOperation__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11516:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11319:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:11320:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11516:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11517:2: ( rule__XPostfixOperation__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:11321:2: ( rule__XPostfixOperation__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:11321:3: rule__XPostfixOperation__Group_1_0__0
+            // InternalPerspectiveDsl.g:11518:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11518:3: rule__XPostfixOperation__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group_1_0__0();
@@ -37804,16 +38429,16 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__0"
-    // InternalPerspectiveDsl.g:11330:1: rule__XPostfixOperation__Group_1_0__0 : rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 ;
+    // InternalPerspectiveDsl.g:11527: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:11334:1: ( rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 )
-            // InternalPerspectiveDsl.g:11335:2: rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1
+            // InternalPerspectiveDsl.g:11531:1: ( rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 )
+            // InternalPerspectiveDsl.g:11532:2: rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1
             {
-            pushFollow(FOLLOW_83);
+            pushFollow(FOLLOW_85);
             rule__XPostfixOperation__Group_1_0__0__Impl();
 
             state._fsp--;
@@ -37842,23 +38467,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:11342:1: rule__XPostfixOperation__Group_1_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:11539: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:11346:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:11347:1: ( () )
+            // InternalPerspectiveDsl.g:11543:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:11544:1: ( () )
             {
-            // InternalPerspectiveDsl.g:11347:1: ( () )
-            // InternalPerspectiveDsl.g:11348:2: ()
+            // InternalPerspectiveDsl.g:11544:1: ( () )
+            // InternalPerspectiveDsl.g:11545:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11349:2: ()
-            // InternalPerspectiveDsl.g:11349:3: 
+            // InternalPerspectiveDsl.g:11546:2: ()
+            // InternalPerspectiveDsl.g:11546:3: 
             {
             }
 
@@ -37883,14 +38508,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__1"
-    // InternalPerspectiveDsl.g:11357:1: rule__XPostfixOperation__Group_1_0__1 : rule__XPostfixOperation__Group_1_0__1__Impl ;
+    // InternalPerspectiveDsl.g:11554: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:11361:1: ( rule__XPostfixOperation__Group_1_0__1__Impl )
-            // InternalPerspectiveDsl.g:11362:2: rule__XPostfixOperation__Group_1_0__1__Impl
+            // InternalPerspectiveDsl.g:11558:1: ( rule__XPostfixOperation__Group_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:11559:2: rule__XPostfixOperation__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group_1_0__1__Impl();
@@ -37916,23 +38541,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__1__Impl"
-    // InternalPerspectiveDsl.g:11368:1: rule__XPostfixOperation__Group_1_0__1__Impl : ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:11565: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:11372:1: ( ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) )
-            // InternalPerspectiveDsl.g:11373:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:11569:1: ( ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) )
+            // InternalPerspectiveDsl.g:11570:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:11373:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
-            // InternalPerspectiveDsl.g:11374:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:11570:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:11571:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1()); 
             }
-            // InternalPerspectiveDsl.g:11375:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
-            // InternalPerspectiveDsl.g:11375:3: rule__XPostfixOperation__FeatureAssignment_1_0_1
+            // InternalPerspectiveDsl.g:11572:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:11572:3: rule__XPostfixOperation__FeatureAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__FeatureAssignment_1_0_1();
@@ -37967,16 +38592,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__0"
-    // InternalPerspectiveDsl.g:11384:1: rule__XMemberFeatureCall__Group__0 : rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 ;
+    // InternalPerspectiveDsl.g:11581: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:11388:1: ( rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 )
-            // InternalPerspectiveDsl.g:11389:2: rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1
+            // InternalPerspectiveDsl.g:11585:1: ( rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 )
+            // InternalPerspectiveDsl.g:11586:2: rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1
             {
-            pushFollow(FOLLOW_84);
+            pushFollow(FOLLOW_86);
             rule__XMemberFeatureCall__Group__0__Impl();
 
             state._fsp--;
@@ -38005,17 +38630,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__0__Impl"
-    // InternalPerspectiveDsl.g:11396:1: rule__XMemberFeatureCall__Group__0__Impl : ( ruleXPrimaryExpression ) ;
+    // InternalPerspectiveDsl.g:11593:1: rule__XMemberFeatureCall__Group__0__Impl : ( ruleXPrimaryExpression ) ;
     public final void rule__XMemberFeatureCall__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11400:1: ( ( ruleXPrimaryExpression ) )
-            // InternalPerspectiveDsl.g:11401:1: ( ruleXPrimaryExpression )
+            // InternalPerspectiveDsl.g:11597:1: ( ( ruleXPrimaryExpression ) )
+            // InternalPerspectiveDsl.g:11598:1: ( ruleXPrimaryExpression )
             {
-            // InternalPerspectiveDsl.g:11401:1: ( ruleXPrimaryExpression )
-            // InternalPerspectiveDsl.g:11402:2: ruleXPrimaryExpression
+            // InternalPerspectiveDsl.g:11598:1: ( ruleXPrimaryExpression )
+            // InternalPerspectiveDsl.g:11599:2: ruleXPrimaryExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); 
@@ -38050,14 +38675,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__1"
-    // InternalPerspectiveDsl.g:11411:1: rule__XMemberFeatureCall__Group__1 : rule__XMemberFeatureCall__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:11608: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:11415:1: ( rule__XMemberFeatureCall__Group__1__Impl )
-            // InternalPerspectiveDsl.g:11416:2: rule__XMemberFeatureCall__Group__1__Impl
+            // InternalPerspectiveDsl.g:11612:1: ( rule__XMemberFeatureCall__Group__1__Impl )
+            // InternalPerspectiveDsl.g:11613:2: rule__XMemberFeatureCall__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group__1__Impl();
@@ -38083,22 +38708,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__1__Impl"
-    // InternalPerspectiveDsl.g:11422:1: rule__XMemberFeatureCall__Group__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) ;
+    // InternalPerspectiveDsl.g:11619: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:11426:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) )
-            // InternalPerspectiveDsl.g:11427:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            // InternalPerspectiveDsl.g:11623:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) )
+            // InternalPerspectiveDsl.g:11624:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
             {
-            // InternalPerspectiveDsl.g:11427:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
-            // InternalPerspectiveDsl.g:11428:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            // InternalPerspectiveDsl.g:11624:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            // InternalPerspectiveDsl.g:11625:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1()); 
             }
-            // InternalPerspectiveDsl.g:11429:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            // InternalPerspectiveDsl.g:11626:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
             loop80:
             do {
                 int alt80=2;
@@ -38107,29 +38732,29 @@
                     {
                     int LA80_2 = input.LA(2);
 
-                    if ( (synpred136_InternalPerspectiveDsl()) ) {
+                    if ( (synpred138_InternalPerspectiveDsl()) ) {
                         alt80=1;
                     }
 
 
                     }
                     break;
-                case 120:
+                case 122:
                     {
                     int LA80_3 = input.LA(2);
 
-                    if ( (synpred136_InternalPerspectiveDsl()) ) {
+                    if ( (synpred138_InternalPerspectiveDsl()) ) {
                         alt80=1;
                     }
 
 
                     }
                     break;
-                case 121:
+                case 123:
                     {
                     int LA80_4 = input.LA(2);
 
-                    if ( (synpred136_InternalPerspectiveDsl()) ) {
+                    if ( (synpred138_InternalPerspectiveDsl()) ) {
                         alt80=1;
                     }
 
@@ -38141,9 +38766,9 @@
 
                 switch (alt80) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:11429:3: rule__XMemberFeatureCall__Alternatives_1
+            	    // InternalPerspectiveDsl.g:11626:3: rule__XMemberFeatureCall__Alternatives_1
             	    {
-            	    pushFollow(FOLLOW_85);
+            	    pushFollow(FOLLOW_87);
             	    rule__XMemberFeatureCall__Alternatives_1();
 
             	    state._fsp--;
@@ -38182,16 +38807,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__0"
-    // InternalPerspectiveDsl.g:11438:1: rule__XMemberFeatureCall__Group_1_0__0 : rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 ;
+    // InternalPerspectiveDsl.g:11635: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:11442:1: ( rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 )
-            // InternalPerspectiveDsl.g:11443:2: rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1
+            // InternalPerspectiveDsl.g:11639:1: ( rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 )
+            // InternalPerspectiveDsl.g:11640:2: rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XMemberFeatureCall__Group_1_0__0__Impl();
 
             state._fsp--;
@@ -38220,23 +38845,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:11450:1: rule__XMemberFeatureCall__Group_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11647: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:11454:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11455:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11651:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11652:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11455:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:11456:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11652:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11653:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11457:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:11457:3: rule__XMemberFeatureCall__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:11654:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11654:3: rule__XMemberFeatureCall__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0__0();
@@ -38271,14 +38896,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__1"
-    // InternalPerspectiveDsl.g:11465:1: rule__XMemberFeatureCall__Group_1_0__1 : rule__XMemberFeatureCall__Group_1_0__1__Impl ;
+    // InternalPerspectiveDsl.g:11662: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:11469:1: ( rule__XMemberFeatureCall__Group_1_0__1__Impl )
-            // InternalPerspectiveDsl.g:11470:2: rule__XMemberFeatureCall__Group_1_0__1__Impl
+            // InternalPerspectiveDsl.g:11666:1: ( rule__XMemberFeatureCall__Group_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:11667:2: rule__XMemberFeatureCall__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0__1__Impl();
@@ -38304,23 +38929,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__1__Impl"
-    // InternalPerspectiveDsl.g:11476:1: rule__XMemberFeatureCall__Group_1_0__1__Impl : ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:11673: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:11480:1: ( ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) )
-            // InternalPerspectiveDsl.g:11481:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:11677:1: ( ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) )
+            // InternalPerspectiveDsl.g:11678:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:11481:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
-            // InternalPerspectiveDsl.g:11482:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:11678:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:11679:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1()); 
             }
-            // InternalPerspectiveDsl.g:11483:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
-            // InternalPerspectiveDsl.g:11483:3: rule__XMemberFeatureCall__ValueAssignment_1_0_1
+            // InternalPerspectiveDsl.g:11680:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:11680:3: rule__XMemberFeatureCall__ValueAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__ValueAssignment_1_0_1();
@@ -38355,14 +38980,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:11492:1: rule__XMemberFeatureCall__Group_1_0_0__0 : rule__XMemberFeatureCall__Group_1_0_0__0__Impl ;
+    // InternalPerspectiveDsl.g:11689: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:11496:1: ( rule__XMemberFeatureCall__Group_1_0_0__0__Impl )
-            // InternalPerspectiveDsl.g:11497:2: rule__XMemberFeatureCall__Group_1_0_0__0__Impl
+            // InternalPerspectiveDsl.g:11693:1: ( rule__XMemberFeatureCall__Group_1_0_0__0__Impl )
+            // InternalPerspectiveDsl.g:11694:2: rule__XMemberFeatureCall__Group_1_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0__0__Impl();
@@ -38388,23 +39013,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:11503:1: rule__XMemberFeatureCall__Group_1_0_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11700: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:11507:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11508:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11704:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11705:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11508:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
-            // InternalPerspectiveDsl.g:11509:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            // InternalPerspectiveDsl.g:11705:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11706:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11510:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
-            // InternalPerspectiveDsl.g:11510:3: rule__XMemberFeatureCall__Group_1_0_0_0__0
+            // InternalPerspectiveDsl.g:11707:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            // InternalPerspectiveDsl.g:11707:3: rule__XMemberFeatureCall__Group_1_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0_0__0();
@@ -38439,16 +39064,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__0"
-    // InternalPerspectiveDsl.g:11519: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:11716: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:11523:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 )
-            // InternalPerspectiveDsl.g:11524:2: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1
+            // InternalPerspectiveDsl.g:11720:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 )
+            // InternalPerspectiveDsl.g:11721:2: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1
             {
-            pushFollow(FOLLOW_86);
+            pushFollow(FOLLOW_88);
             rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl();
 
             state._fsp--;
@@ -38477,23 +39102,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:11531:1: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:11728: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:11535:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:11536:1: ( () )
+            // InternalPerspectiveDsl.g:11732:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:11733:1: ( () )
             {
-            // InternalPerspectiveDsl.g:11536:1: ( () )
-            // InternalPerspectiveDsl.g:11537:2: ()
+            // InternalPerspectiveDsl.g:11733:1: ( () )
+            // InternalPerspectiveDsl.g:11734:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11538:2: ()
-            // InternalPerspectiveDsl.g:11538:3: 
+            // InternalPerspectiveDsl.g:11735:2: ()
+            // InternalPerspectiveDsl.g:11735:3: 
             {
             }
 
@@ -38518,16 +39143,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__1"
-    // InternalPerspectiveDsl.g:11546: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:11743: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:11550:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 )
-            // InternalPerspectiveDsl.g:11551:2: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2
+            // InternalPerspectiveDsl.g:11747:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 )
+            // InternalPerspectiveDsl.g:11748:2: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2
             {
-            pushFollow(FOLLOW_57);
+            pushFollow(FOLLOW_59);
             rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl();
 
             state._fsp--;
@@ -38556,23 +39181,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:11558:1: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:11755: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:11562:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:11563:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            // InternalPerspectiveDsl.g:11759:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:11760:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:11563:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
-            // InternalPerspectiveDsl.g:11564:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            // InternalPerspectiveDsl.g:11760:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            // InternalPerspectiveDsl.g:11761:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_0_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:11565:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
-            // InternalPerspectiveDsl.g:11565:3: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1
+            // InternalPerspectiveDsl.g:11762:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            // InternalPerspectiveDsl.g:11762:3: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Alternatives_1_0_0_0_1();
@@ -38607,16 +39232,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__2"
-    // InternalPerspectiveDsl.g:11573: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:11770: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:11577:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 )
-            // InternalPerspectiveDsl.g:11578:2: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3
+            // InternalPerspectiveDsl.g:11774:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 )
+            // InternalPerspectiveDsl.g:11775:2: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3
             {
-            pushFollow(FOLLOW_53);
+            pushFollow(FOLLOW_55);
             rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl();
 
             state._fsp--;
@@ -38645,23 +39270,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl"
-    // InternalPerspectiveDsl.g:11585:1: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) ;
+    // InternalPerspectiveDsl.g:11782: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:11589:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) )
-            // InternalPerspectiveDsl.g:11590:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            // InternalPerspectiveDsl.g:11786:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) )
+            // InternalPerspectiveDsl.g:11787:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
             {
-            // InternalPerspectiveDsl.g:11590:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
-            // InternalPerspectiveDsl.g:11591:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            // InternalPerspectiveDsl.g:11787:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            // InternalPerspectiveDsl.g:11788:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2()); 
             }
-            // InternalPerspectiveDsl.g:11592:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
-            // InternalPerspectiveDsl.g:11592:3: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2
+            // InternalPerspectiveDsl.g:11789:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            // InternalPerspectiveDsl.g:11789:3: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2();
@@ -38696,14 +39321,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__3"
-    // InternalPerspectiveDsl.g:11600:1: rule__XMemberFeatureCall__Group_1_0_0_0__3 : rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl ;
+    // InternalPerspectiveDsl.g:11797: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:11604:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl )
-            // InternalPerspectiveDsl.g:11605:2: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl
+            // InternalPerspectiveDsl.g:11801:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl )
+            // InternalPerspectiveDsl.g:11802:2: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl();
@@ -38729,17 +39354,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl"
-    // InternalPerspectiveDsl.g:11611:1: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl : ( ruleOpSingleAssign ) ;
+    // InternalPerspectiveDsl.g:11808: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:11615:1: ( ( ruleOpSingleAssign ) )
-            // InternalPerspectiveDsl.g:11616:1: ( ruleOpSingleAssign )
+            // InternalPerspectiveDsl.g:11812:1: ( ( ruleOpSingleAssign ) )
+            // InternalPerspectiveDsl.g:11813:1: ( ruleOpSingleAssign )
             {
-            // InternalPerspectiveDsl.g:11616:1: ( ruleOpSingleAssign )
-            // InternalPerspectiveDsl.g:11617:2: ruleOpSingleAssign
+            // InternalPerspectiveDsl.g:11813:1: ( ruleOpSingleAssign )
+            // InternalPerspectiveDsl.g:11814:2: ruleOpSingleAssign
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); 
@@ -38774,16 +39399,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__0"
-    // InternalPerspectiveDsl.g:11627:1: rule__XMemberFeatureCall__Group_1_1__0 : rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 ;
+    // InternalPerspectiveDsl.g:11824: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:11631:1: ( rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 )
-            // InternalPerspectiveDsl.g:11632:2: rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1
+            // InternalPerspectiveDsl.g:11828:1: ( rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 )
+            // InternalPerspectiveDsl.g:11829:2: rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1
             {
-            pushFollow(FOLLOW_87);
+            pushFollow(FOLLOW_89);
             rule__XMemberFeatureCall__Group_1_1__0__Impl();
 
             state._fsp--;
@@ -38812,23 +39437,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:11639:1: rule__XMemberFeatureCall__Group_1_1__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11836: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:11643:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11644:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11840:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11841:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11644:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
-            // InternalPerspectiveDsl.g:11645:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            // InternalPerspectiveDsl.g:11841:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11842:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:11646:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
-            // InternalPerspectiveDsl.g:11646:3: rule__XMemberFeatureCall__Group_1_1_0__0
+            // InternalPerspectiveDsl.g:11843:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            // InternalPerspectiveDsl.g:11843:3: rule__XMemberFeatureCall__Group_1_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0__0();
@@ -38863,16 +39488,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__1"
-    // InternalPerspectiveDsl.g:11654:1: rule__XMemberFeatureCall__Group_1_1__1 : rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 ;
+    // InternalPerspectiveDsl.g:11851: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:11658:1: ( rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 )
-            // InternalPerspectiveDsl.g:11659:2: rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2
+            // InternalPerspectiveDsl.g:11855:1: ( rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 )
+            // InternalPerspectiveDsl.g:11856:2: rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2
             {
-            pushFollow(FOLLOW_87);
+            pushFollow(FOLLOW_89);
             rule__XMemberFeatureCall__Group_1_1__1__Impl();
 
             state._fsp--;
@@ -38901,22 +39526,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:11666:1: rule__XMemberFeatureCall__Group_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:11863: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:11670:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) )
-            // InternalPerspectiveDsl.g:11671:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            // InternalPerspectiveDsl.g:11867:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) )
+            // InternalPerspectiveDsl.g:11868:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:11671:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
-            // InternalPerspectiveDsl.g:11672:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            // InternalPerspectiveDsl.g:11868:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            // InternalPerspectiveDsl.g:11869:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:11673:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            // InternalPerspectiveDsl.g:11870:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
             int alt81=2;
             int LA81_0 = input.LA(1);
 
@@ -38925,7 +39550,7 @@
             }
             switch (alt81) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:11673:3: rule__XMemberFeatureCall__Group_1_1_1__0
+                    // InternalPerspectiveDsl.g:11870:3: rule__XMemberFeatureCall__Group_1_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1_1__0();
@@ -38963,16 +39588,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__2"
-    // InternalPerspectiveDsl.g:11681:1: rule__XMemberFeatureCall__Group_1_1__2 : rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 ;
+    // InternalPerspectiveDsl.g:11878: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:11685:1: ( rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 )
-            // InternalPerspectiveDsl.g:11686:2: rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3
+            // InternalPerspectiveDsl.g:11882:1: ( rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 )
+            // InternalPerspectiveDsl.g:11883:2: rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3
             {
-            pushFollow(FOLLOW_88);
+            pushFollow(FOLLOW_90);
             rule__XMemberFeatureCall__Group_1_1__2__Impl();
 
             state._fsp--;
@@ -39001,23 +39626,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__2__Impl"
-    // InternalPerspectiveDsl.g:11693:1: rule__XMemberFeatureCall__Group_1_1__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) ;
+    // InternalPerspectiveDsl.g:11890: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:11697:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) )
-            // InternalPerspectiveDsl.g:11698:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            // InternalPerspectiveDsl.g:11894:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) )
+            // InternalPerspectiveDsl.g:11895:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
             {
-            // InternalPerspectiveDsl.g:11698:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
-            // InternalPerspectiveDsl.g:11699:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            // InternalPerspectiveDsl.g:11895:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            // InternalPerspectiveDsl.g:11896:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2()); 
             }
-            // InternalPerspectiveDsl.g:11700:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
-            // InternalPerspectiveDsl.g:11700:3: rule__XMemberFeatureCall__FeatureAssignment_1_1_2
+            // InternalPerspectiveDsl.g:11897:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            // InternalPerspectiveDsl.g:11897:3: rule__XMemberFeatureCall__FeatureAssignment_1_1_2
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__FeatureAssignment_1_1_2();
@@ -39052,16 +39677,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__3"
-    // InternalPerspectiveDsl.g:11708:1: rule__XMemberFeatureCall__Group_1_1__3 : rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 ;
+    // InternalPerspectiveDsl.g:11905: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:11712:1: ( rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 )
-            // InternalPerspectiveDsl.g:11713:2: rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4
+            // InternalPerspectiveDsl.g:11909:1: ( rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 )
+            // InternalPerspectiveDsl.g:11910:2: rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4
             {
-            pushFollow(FOLLOW_88);
+            pushFollow(FOLLOW_90);
             rule__XMemberFeatureCall__Group_1_1__3__Impl();
 
             state._fsp--;
@@ -39090,27 +39715,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__3__Impl"
-    // InternalPerspectiveDsl.g:11720:1: rule__XMemberFeatureCall__Group_1_1__3__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:11917: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:11724:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) )
-            // InternalPerspectiveDsl.g:11725:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            // InternalPerspectiveDsl.g:11921:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) )
+            // InternalPerspectiveDsl.g:11922:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:11725:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
-            // InternalPerspectiveDsl.g:11726:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            // InternalPerspectiveDsl.g:11922:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            // InternalPerspectiveDsl.g:11923:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3()); 
             }
-            // InternalPerspectiveDsl.g:11727:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            // InternalPerspectiveDsl.g:11924:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
             int alt82=2;
             alt82 = dfa82.predict(input);
             switch (alt82) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:11727:3: rule__XMemberFeatureCall__Group_1_1_3__0
+                    // InternalPerspectiveDsl.g:11924:3: rule__XMemberFeatureCall__Group_1_1_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1_3__0();
@@ -39148,14 +39773,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__4"
-    // InternalPerspectiveDsl.g:11735:1: rule__XMemberFeatureCall__Group_1_1__4 : rule__XMemberFeatureCall__Group_1_1__4__Impl ;
+    // InternalPerspectiveDsl.g:11932: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:11739:1: ( rule__XMemberFeatureCall__Group_1_1__4__Impl )
-            // InternalPerspectiveDsl.g:11740:2: rule__XMemberFeatureCall__Group_1_1__4__Impl
+            // InternalPerspectiveDsl.g:11936:1: ( rule__XMemberFeatureCall__Group_1_1__4__Impl )
+            // InternalPerspectiveDsl.g:11937:2: rule__XMemberFeatureCall__Group_1_1__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1__4__Impl();
@@ -39181,27 +39806,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__4__Impl"
-    // InternalPerspectiveDsl.g:11746:1: rule__XMemberFeatureCall__Group_1_1__4__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) ;
+    // InternalPerspectiveDsl.g:11943: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:11750:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) )
-            // InternalPerspectiveDsl.g:11751:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            // InternalPerspectiveDsl.g:11947:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) )
+            // InternalPerspectiveDsl.g:11948:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
             {
-            // InternalPerspectiveDsl.g:11751:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
-            // InternalPerspectiveDsl.g:11752:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            // InternalPerspectiveDsl.g:11948:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            // InternalPerspectiveDsl.g:11949:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4()); 
             }
-            // InternalPerspectiveDsl.g:11753:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            // InternalPerspectiveDsl.g:11950:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
             int alt83=2;
             alt83 = dfa83.predict(input);
             switch (alt83) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:11753:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
+                    // InternalPerspectiveDsl.g:11950:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4();
@@ -39239,14 +39864,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0__0"
-    // InternalPerspectiveDsl.g:11762:1: rule__XMemberFeatureCall__Group_1_1_0__0 : rule__XMemberFeatureCall__Group_1_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:11959: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:11766:1: ( rule__XMemberFeatureCall__Group_1_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:11767:2: rule__XMemberFeatureCall__Group_1_1_0__0__Impl
+            // InternalPerspectiveDsl.g:11963:1: ( rule__XMemberFeatureCall__Group_1_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:11964:2: rule__XMemberFeatureCall__Group_1_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0__0__Impl();
@@ -39272,23 +39897,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:11773:1: rule__XMemberFeatureCall__Group_1_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11970: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:11777:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11778:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11974:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11975:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11778:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:11779:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11975:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11976:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11780:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
-            // InternalPerspectiveDsl.g:11780:3: rule__XMemberFeatureCall__Group_1_1_0_0__0
+            // InternalPerspectiveDsl.g:11977:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11977:3: rule__XMemberFeatureCall__Group_1_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0_0__0();
@@ -39323,16 +39948,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__0"
-    // InternalPerspectiveDsl.g:11789: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:11986: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:11793:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 )
-            // InternalPerspectiveDsl.g:11794:2: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1
+            // InternalPerspectiveDsl.g:11990:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 )
+            // InternalPerspectiveDsl.g:11991:2: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1
             {
-            pushFollow(FOLLOW_84);
+            pushFollow(FOLLOW_86);
             rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl();
 
             state._fsp--;
@@ -39361,23 +39986,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:11801:1: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:11998: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:11805:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:11806:1: ( () )
+            // InternalPerspectiveDsl.g:12002:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:12003:1: ( () )
             {
-            // InternalPerspectiveDsl.g:11806:1: ( () )
-            // InternalPerspectiveDsl.g:11807:2: ()
+            // InternalPerspectiveDsl.g:12003:1: ( () )
+            // InternalPerspectiveDsl.g:12004:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11808:2: ()
-            // InternalPerspectiveDsl.g:11808:3: 
+            // InternalPerspectiveDsl.g:12005:2: ()
+            // InternalPerspectiveDsl.g:12005:3: 
             {
             }
 
@@ -39402,14 +40027,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__1"
-    // InternalPerspectiveDsl.g:11816:1: rule__XMemberFeatureCall__Group_1_1_0_0__1 : rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:12013: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:11820:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:11821:2: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:12017:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:12018:2: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl();
@@ -39435,23 +40060,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:11827:1: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:12024: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:11831:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:11832:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:12028:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:12029:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:11832:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:11833:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            // InternalPerspectiveDsl.g:12029:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:12030:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:11834:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
-            // InternalPerspectiveDsl.g:11834:3: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1
+            // InternalPerspectiveDsl.g:12031:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            // InternalPerspectiveDsl.g:12031:3: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Alternatives_1_1_0_0_1();
@@ -39486,16 +40111,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__0"
-    // InternalPerspectiveDsl.g:11843: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:12040: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:11847:1: ( rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 )
-            // InternalPerspectiveDsl.g:11848:2: rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1
+            // InternalPerspectiveDsl.g:12044:1: ( rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 )
+            // InternalPerspectiveDsl.g:12045:2: rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1
             {
-            pushFollow(FOLLOW_89);
+            pushFollow(FOLLOW_91);
             rule__XMemberFeatureCall__Group_1_1_1__0__Impl();
 
             state._fsp--;
@@ -39524,17 +40149,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:11855:1: rule__XMemberFeatureCall__Group_1_1_1__0__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:12052: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:11859:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:11860:1: ( '<' )
+            // InternalPerspectiveDsl.g:12056:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:12057:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:11860:1: ( '<' )
-            // InternalPerspectiveDsl.g:11861:2: '<'
+            // InternalPerspectiveDsl.g:12057:1: ( '<' )
+            // InternalPerspectiveDsl.g:12058:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0()); 
@@ -39565,16 +40190,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__1"
-    // InternalPerspectiveDsl.g:11870: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:12067: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:11874:1: ( rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 )
-            // InternalPerspectiveDsl.g:11875:2: rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2
+            // InternalPerspectiveDsl.g:12071:1: ( rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 )
+            // InternalPerspectiveDsl.g:12072:2: rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2
             {
-            pushFollow(FOLLOW_90);
+            pushFollow(FOLLOW_92);
             rule__XMemberFeatureCall__Group_1_1_1__1__Impl();
 
             state._fsp--;
@@ -39603,23 +40228,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:11882:1: rule__XMemberFeatureCall__Group_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:12079: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:11886:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:11887:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:12083:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:12084:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:11887:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
-            // InternalPerspectiveDsl.g:11888:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            // InternalPerspectiveDsl.g:12084:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:12085:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:11889:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
-            // InternalPerspectiveDsl.g:11889:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1
+            // InternalPerspectiveDsl.g:12086:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            // InternalPerspectiveDsl.g:12086:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1();
@@ -39654,16 +40279,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__2"
-    // InternalPerspectiveDsl.g:11897: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:12094: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:11901:1: ( rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 )
-            // InternalPerspectiveDsl.g:11902:2: rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3
+            // InternalPerspectiveDsl.g:12098:1: ( rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 )
+            // InternalPerspectiveDsl.g:12099:2: rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3
             {
-            pushFollow(FOLLOW_90);
+            pushFollow(FOLLOW_92);
             rule__XMemberFeatureCall__Group_1_1_1__2__Impl();
 
             state._fsp--;
@@ -39692,37 +40317,37 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__2__Impl"
-    // InternalPerspectiveDsl.g:11909:1: rule__XMemberFeatureCall__Group_1_1_1__2__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) ;
+    // InternalPerspectiveDsl.g:12106: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:11913:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) )
-            // InternalPerspectiveDsl.g:11914:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            // InternalPerspectiveDsl.g:12110:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) )
+            // InternalPerspectiveDsl.g:12111:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
             {
-            // InternalPerspectiveDsl.g:11914:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
-            // InternalPerspectiveDsl.g:11915:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            // InternalPerspectiveDsl.g:12111:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            // InternalPerspectiveDsl.g:12112:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2()); 
             }
-            // InternalPerspectiveDsl.g:11916:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            // InternalPerspectiveDsl.g:12113:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
             loop84:
             do {
                 int alt84=2;
                 int LA84_0 = input.LA(1);
 
-                if ( (LA84_0==91) ) {
+                if ( (LA84_0==93) ) {
                     alt84=1;
                 }
 
 
                 switch (alt84) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:11916:3: rule__XMemberFeatureCall__Group_1_1_1_2__0
+            	    // InternalPerspectiveDsl.g:12113:3: rule__XMemberFeatureCall__Group_1_1_1_2__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XMemberFeatureCall__Group_1_1_1_2__0();
 
             	    state._fsp--;
@@ -39761,14 +40386,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__3"
-    // InternalPerspectiveDsl.g:11924:1: rule__XMemberFeatureCall__Group_1_1_1__3 : rule__XMemberFeatureCall__Group_1_1_1__3__Impl ;
+    // InternalPerspectiveDsl.g:12121: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:11928:1: ( rule__XMemberFeatureCall__Group_1_1_1__3__Impl )
-            // InternalPerspectiveDsl.g:11929:2: rule__XMemberFeatureCall__Group_1_1_1__3__Impl
+            // InternalPerspectiveDsl.g:12125:1: ( rule__XMemberFeatureCall__Group_1_1_1__3__Impl )
+            // InternalPerspectiveDsl.g:12126:2: rule__XMemberFeatureCall__Group_1_1_1__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_1__3__Impl();
@@ -39794,17 +40419,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__3__Impl"
-    // InternalPerspectiveDsl.g:11935:1: rule__XMemberFeatureCall__Group_1_1_1__3__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:12132: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:11939:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:11940:1: ( '>' )
+            // InternalPerspectiveDsl.g:12136:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:12137:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:11940:1: ( '>' )
-            // InternalPerspectiveDsl.g:11941:2: '>'
+            // InternalPerspectiveDsl.g:12137:1: ( '>' )
+            // InternalPerspectiveDsl.g:12138:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3()); 
@@ -39835,16 +40460,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__0"
-    // InternalPerspectiveDsl.g:11951: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:12148: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:11955:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 )
-            // InternalPerspectiveDsl.g:11956:2: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1
+            // InternalPerspectiveDsl.g:12152:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 )
+            // InternalPerspectiveDsl.g:12153:2: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1
             {
-            pushFollow(FOLLOW_89);
+            pushFollow(FOLLOW_91);
             rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl();
 
             state._fsp--;
@@ -39873,22 +40498,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl"
-    // InternalPerspectiveDsl.g:11963:1: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:12160: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:11967:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:11968:1: ( ',' )
+            // InternalPerspectiveDsl.g:12164:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:12165:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:11968:1: ( ',' )
-            // InternalPerspectiveDsl.g:11969:2: ','
+            // InternalPerspectiveDsl.g:12165:1: ( ',' )
+            // InternalPerspectiveDsl.g:12166:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0()); 
             }
@@ -39914,14 +40539,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__1"
-    // InternalPerspectiveDsl.g:11978:1: rule__XMemberFeatureCall__Group_1_1_1_2__1 : rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl ;
+    // InternalPerspectiveDsl.g:12175: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:11982:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl )
-            // InternalPerspectiveDsl.g:11983:2: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl
+            // InternalPerspectiveDsl.g:12179:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl )
+            // InternalPerspectiveDsl.g:12180:2: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl();
@@ -39947,23 +40572,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl"
-    // InternalPerspectiveDsl.g:11989:1: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:12186: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:11993:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) )
-            // InternalPerspectiveDsl.g:11994:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            // InternalPerspectiveDsl.g:12190:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) )
+            // InternalPerspectiveDsl.g:12191:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:11994:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
-            // InternalPerspectiveDsl.g:11995:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            // InternalPerspectiveDsl.g:12191:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            // InternalPerspectiveDsl.g:12192:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1()); 
             }
-            // InternalPerspectiveDsl.g:11996:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
-            // InternalPerspectiveDsl.g:11996:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1
+            // InternalPerspectiveDsl.g:12193:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            // InternalPerspectiveDsl.g:12193:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1();
@@ -39998,16 +40623,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__0"
-    // InternalPerspectiveDsl.g:12005: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:12202: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:12009:1: ( rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 )
-            // InternalPerspectiveDsl.g:12010:2: rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1
+            // InternalPerspectiveDsl.g:12206:1: ( rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 )
+            // InternalPerspectiveDsl.g:12207:2: rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1
             {
-            pushFollow(FOLLOW_91);
+            pushFollow(FOLLOW_93);
             rule__XMemberFeatureCall__Group_1_1_3__0__Impl();
 
             state._fsp--;
@@ -40036,23 +40661,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__0__Impl"
-    // InternalPerspectiveDsl.g:12017:1: rule__XMemberFeatureCall__Group_1_1_3__0__Impl : ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) ;
+    // InternalPerspectiveDsl.g:12214: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:12021:1: ( ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) )
-            // InternalPerspectiveDsl.g:12022:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            // InternalPerspectiveDsl.g:12218:1: ( ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) )
+            // InternalPerspectiveDsl.g:12219:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
             {
-            // InternalPerspectiveDsl.g:12022:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
-            // InternalPerspectiveDsl.g:12023:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            // InternalPerspectiveDsl.g:12219:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            // InternalPerspectiveDsl.g:12220:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0()); 
             }
-            // InternalPerspectiveDsl.g:12024:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
-            // InternalPerspectiveDsl.g:12024:3: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0
+            // InternalPerspectiveDsl.g:12221:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            // InternalPerspectiveDsl.g:12221:3: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0();
@@ -40087,16 +40712,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__1"
-    // InternalPerspectiveDsl.g:12032: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:12229: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:12036:1: ( rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 )
-            // InternalPerspectiveDsl.g:12037:2: rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2
+            // InternalPerspectiveDsl.g:12233:1: ( rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 )
+            // InternalPerspectiveDsl.g:12234:2: rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2
             {
-            pushFollow(FOLLOW_91);
+            pushFollow(FOLLOW_93);
             rule__XMemberFeatureCall__Group_1_1_3__1__Impl();
 
             state._fsp--;
@@ -40125,31 +40750,31 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__1__Impl"
-    // InternalPerspectiveDsl.g:12044:1: rule__XMemberFeatureCall__Group_1_1_3__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) ;
+    // InternalPerspectiveDsl.g:12241: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:12048:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) )
-            // InternalPerspectiveDsl.g:12049:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            // InternalPerspectiveDsl.g:12245:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) )
+            // InternalPerspectiveDsl.g:12246:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
             {
-            // InternalPerspectiveDsl.g:12049:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
-            // InternalPerspectiveDsl.g:12050:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            // InternalPerspectiveDsl.g:12246:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            // InternalPerspectiveDsl.g:12247:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1()); 
             }
-            // InternalPerspectiveDsl.g:12051:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            // InternalPerspectiveDsl.g:12248:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
             int alt85=2;
             int LA85_0 = input.LA(1);
 
-            if ( ((LA85_0>=RULE_ID && LA85_0<=RULE_DECIMAL)||LA85_0==27||LA85_0==31||(LA85_0>=34 && LA85_0<=35)||LA85_0==40||(LA85_0>=45 && LA85_0<=50)||LA85_0==54||LA85_0==89||(LA85_0>=93 && LA85_0<=94)||LA85_0==97||LA85_0==99||(LA85_0>=103 && LA85_0<=111)||LA85_0==113||LA85_0==122||LA85_0==124) ) {
+            if ( ((LA85_0>=RULE_ID && LA85_0<=RULE_DECIMAL)||LA85_0==27||LA85_0==31||(LA85_0>=34 && LA85_0<=35)||LA85_0==40||(LA85_0>=45 && LA85_0<=50)||LA85_0==54||LA85_0==91||(LA85_0>=95 && LA85_0<=96)||LA85_0==99||LA85_0==101||(LA85_0>=105 && LA85_0<=113)||LA85_0==115||LA85_0==124||LA85_0==126) ) {
                 alt85=1;
             }
             switch (alt85) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:12051:3: rule__XMemberFeatureCall__Alternatives_1_1_3_1
+                    // InternalPerspectiveDsl.g:12248:3: rule__XMemberFeatureCall__Alternatives_1_1_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Alternatives_1_1_3_1();
@@ -40187,14 +40812,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__2"
-    // InternalPerspectiveDsl.g:12059:1: rule__XMemberFeatureCall__Group_1_1_3__2 : rule__XMemberFeatureCall__Group_1_1_3__2__Impl ;
+    // InternalPerspectiveDsl.g:12256: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:12063:1: ( rule__XMemberFeatureCall__Group_1_1_3__2__Impl )
-            // InternalPerspectiveDsl.g:12064:2: rule__XMemberFeatureCall__Group_1_1_3__2__Impl
+            // InternalPerspectiveDsl.g:12260:1: ( rule__XMemberFeatureCall__Group_1_1_3__2__Impl )
+            // InternalPerspectiveDsl.g:12261:2: rule__XMemberFeatureCall__Group_1_1_3__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_3__2__Impl();
@@ -40220,22 +40845,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__2__Impl"
-    // InternalPerspectiveDsl.g:12070:1: rule__XMemberFeatureCall__Group_1_1_3__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:12267: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:12074:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:12075:1: ( ')' )
+            // InternalPerspectiveDsl.g:12271:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:12272:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:12075:1: ( ')' )
-            // InternalPerspectiveDsl.g:12076:2: ')'
+            // InternalPerspectiveDsl.g:12272:1: ( ')' )
+            // InternalPerspectiveDsl.g:12273:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2()); 
             }
@@ -40261,16 +40886,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__0"
-    // InternalPerspectiveDsl.g:12086: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:12283: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:12090:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 )
-            // InternalPerspectiveDsl.g:12091:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1
+            // InternalPerspectiveDsl.g:12287:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 )
+            // InternalPerspectiveDsl.g:12288:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl();
 
             state._fsp--;
@@ -40299,23 +40924,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:12098:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:12295: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:12102:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) )
-            // InternalPerspectiveDsl.g:12103:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            // InternalPerspectiveDsl.g:12299:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) )
+            // InternalPerspectiveDsl.g:12300:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:12103:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
-            // InternalPerspectiveDsl.g:12104:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            // InternalPerspectiveDsl.g:12300:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            // InternalPerspectiveDsl.g:12301: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:12105:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
-            // InternalPerspectiveDsl.g:12105:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0
+            // InternalPerspectiveDsl.g:12302:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            // InternalPerspectiveDsl.g:12302:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0();
@@ -40350,14 +40975,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__1"
-    // InternalPerspectiveDsl.g:12113:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:12310: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:12117:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:12118:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl
+            // InternalPerspectiveDsl.g:12314:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:12315:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl();
@@ -40383,37 +41008,37 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:12124:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:12321: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:12128:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:12129:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:12325:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:12326:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:12129:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
-            // InternalPerspectiveDsl.g:12130:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:12326:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:12327: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:12131:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:12328:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
             loop86:
             do {
                 int alt86=2;
                 int LA86_0 = input.LA(1);
 
-                if ( (LA86_0==91) ) {
+                if ( (LA86_0==93) ) {
                     alt86=1;
                 }
 
 
                 switch (alt86) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:12131:3: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0
+            	    // InternalPerspectiveDsl.g:12328:3: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0();
 
             	    state._fsp--;
@@ -40452,16 +41077,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0"
-    // InternalPerspectiveDsl.g:12140: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:12337: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:12144:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 )
-            // InternalPerspectiveDsl.g:12145:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1
+            // InternalPerspectiveDsl.g:12341:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 )
+            // InternalPerspectiveDsl.g:12342:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl();
 
             state._fsp--;
@@ -40490,22 +41115,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:12152:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:12349: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:12156:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:12157:1: ( ',' )
+            // InternalPerspectiveDsl.g:12353:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:12354:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:12157:1: ( ',' )
-            // InternalPerspectiveDsl.g:12158:2: ','
+            // InternalPerspectiveDsl.g:12354:1: ( ',' )
+            // InternalPerspectiveDsl.g:12355:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0()); 
             }
@@ -40531,14 +41156,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1"
-    // InternalPerspectiveDsl.g:12167:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:12364: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:12171:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:12172:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl
+            // InternalPerspectiveDsl.g:12368:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:12369: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();
@@ -40564,23 +41189,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:12178:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:12375: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:12182:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:12183:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:12379:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:12380:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:12183:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
-            // InternalPerspectiveDsl.g:12184:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
+            // InternalPerspectiveDsl.g:12380:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:12381: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:12185:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
-            // InternalPerspectiveDsl.g:12185:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1
+            // InternalPerspectiveDsl.g:12382:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
+            // InternalPerspectiveDsl.g:12382:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1();
@@ -40615,16 +41240,16 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__0"
-    // InternalPerspectiveDsl.g:12194:1: rule__XSetLiteral__Group__0 : rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 ;
+    // InternalPerspectiveDsl.g:12391: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:12198:1: ( rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 )
-            // InternalPerspectiveDsl.g:12199:2: rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1
+            // InternalPerspectiveDsl.g:12395:1: ( rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:12396:2: rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1
             {
-            pushFollow(FOLLOW_55);
+            pushFollow(FOLLOW_57);
             rule__XSetLiteral__Group__0__Impl();
 
             state._fsp--;
@@ -40653,23 +41278,23 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__0__Impl"
-    // InternalPerspectiveDsl.g:12206:1: rule__XSetLiteral__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:12403:1: rule__XSetLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XSetLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12210:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:12211:1: ( () )
+            // InternalPerspectiveDsl.g:12407:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:12408:1: ( () )
             {
-            // InternalPerspectiveDsl.g:12211:1: ( () )
-            // InternalPerspectiveDsl.g:12212:2: ()
+            // InternalPerspectiveDsl.g:12408:1: ( () )
+            // InternalPerspectiveDsl.g:12409:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0()); 
             }
-            // InternalPerspectiveDsl.g:12213:2: ()
-            // InternalPerspectiveDsl.g:12213:3: 
+            // InternalPerspectiveDsl.g:12410:2: ()
+            // InternalPerspectiveDsl.g:12410:3: 
             {
             }
 
@@ -40694,14 +41319,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__1"
-    // InternalPerspectiveDsl.g:12221:1: rule__XSetLiteral__Group__1 : rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 ;
+    // InternalPerspectiveDsl.g:12418: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:12225:1: ( rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 )
-            // InternalPerspectiveDsl.g:12226:2: rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2
+            // InternalPerspectiveDsl.g:12422:1: ( rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 )
+            // InternalPerspectiveDsl.g:12423:2: rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2
             {
             pushFollow(FOLLOW_8);
             rule__XSetLiteral__Group__1__Impl();
@@ -40732,22 +41357,22 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__1__Impl"
-    // InternalPerspectiveDsl.g:12233:1: rule__XSetLiteral__Group__1__Impl : ( '#' ) ;
+    // InternalPerspectiveDsl.g:12430:1: rule__XSetLiteral__Group__1__Impl : ( '#' ) ;
     public final void rule__XSetLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12237:1: ( ( '#' ) )
-            // InternalPerspectiveDsl.g:12238:1: ( '#' )
+            // InternalPerspectiveDsl.g:12434:1: ( ( '#' ) )
+            // InternalPerspectiveDsl.g:12435:1: ( '#' )
             {
-            // InternalPerspectiveDsl.g:12238:1: ( '#' )
-            // InternalPerspectiveDsl.g:12239:2: '#'
+            // InternalPerspectiveDsl.g:12435:1: ( '#' )
+            // InternalPerspectiveDsl.g:12436:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1()); 
             }
-            match(input,93,FOLLOW_2); if (state.failed) return ;
+            match(input,95,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1()); 
             }
@@ -40773,16 +41398,16 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__2"
-    // InternalPerspectiveDsl.g:12248:1: rule__XSetLiteral__Group__2 : rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 ;
+    // InternalPerspectiveDsl.g:12445: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:12252:1: ( rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 )
-            // InternalPerspectiveDsl.g:12253:2: rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3
+            // InternalPerspectiveDsl.g:12449:1: ( rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 )
+            // InternalPerspectiveDsl.g:12450:2: rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3
             {
-            pushFollow(FOLLOW_92);
+            pushFollow(FOLLOW_94);
             rule__XSetLiteral__Group__2__Impl();
 
             state._fsp--;
@@ -40811,17 +41436,17 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__2__Impl"
-    // InternalPerspectiveDsl.g:12260:1: rule__XSetLiteral__Group__2__Impl : ( '{' ) ;
+    // InternalPerspectiveDsl.g:12457:1: rule__XSetLiteral__Group__2__Impl : ( '{' ) ;
     public final void rule__XSetLiteral__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12264:1: ( ( '{' ) )
-            // InternalPerspectiveDsl.g:12265:1: ( '{' )
+            // InternalPerspectiveDsl.g:12461:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:12462:1: ( '{' )
             {
-            // InternalPerspectiveDsl.g:12265:1: ( '{' )
-            // InternalPerspectiveDsl.g:12266:2: '{'
+            // InternalPerspectiveDsl.g:12462:1: ( '{' )
+            // InternalPerspectiveDsl.g:12463:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2()); 
@@ -40852,16 +41477,16 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__3"
-    // InternalPerspectiveDsl.g:12275:1: rule__XSetLiteral__Group__3 : rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 ;
+    // InternalPerspectiveDsl.g:12472: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:12279:1: ( rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 )
-            // InternalPerspectiveDsl.g:12280:2: rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4
+            // InternalPerspectiveDsl.g:12476:1: ( rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 )
+            // InternalPerspectiveDsl.g:12477:2: rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4
             {
-            pushFollow(FOLLOW_92);
+            pushFollow(FOLLOW_94);
             rule__XSetLiteral__Group__3__Impl();
 
             state._fsp--;
@@ -40890,31 +41515,31 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__3__Impl"
-    // InternalPerspectiveDsl.g:12287:1: rule__XSetLiteral__Group__3__Impl : ( ( rule__XSetLiteral__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:12484: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:12291:1: ( ( ( rule__XSetLiteral__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:12292:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:12488:1: ( ( ( rule__XSetLiteral__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:12489:1: ( ( rule__XSetLiteral__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:12292:1: ( ( rule__XSetLiteral__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:12293:2: ( rule__XSetLiteral__Group_3__0 )?
+            // InternalPerspectiveDsl.g:12489:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:12490:2: ( rule__XSetLiteral__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:12294:2: ( rule__XSetLiteral__Group_3__0 )?
+            // InternalPerspectiveDsl.g:12491:2: ( rule__XSetLiteral__Group_3__0 )?
             int alt87=2;
             int LA87_0 = input.LA(1);
 
-            if ( ((LA87_0>=RULE_ID && LA87_0<=RULE_DECIMAL)||LA87_0==27||(LA87_0>=34 && LA87_0<=35)||LA87_0==40||(LA87_0>=45 && LA87_0<=50)||LA87_0==54||LA87_0==89||(LA87_0>=93 && LA87_0<=94)||LA87_0==97||LA87_0==99||(LA87_0>=103 && LA87_0<=111)||LA87_0==113||LA87_0==124) ) {
+            if ( ((LA87_0>=RULE_ID && LA87_0<=RULE_DECIMAL)||LA87_0==27||(LA87_0>=34 && LA87_0<=35)||LA87_0==40||(LA87_0>=45 && LA87_0<=50)||LA87_0==54||LA87_0==91||(LA87_0>=95 && LA87_0<=96)||LA87_0==99||LA87_0==101||(LA87_0>=105 && LA87_0<=113)||LA87_0==115||LA87_0==126) ) {
                 alt87=1;
             }
             switch (alt87) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:12294:3: rule__XSetLiteral__Group_3__0
+                    // InternalPerspectiveDsl.g:12491:3: rule__XSetLiteral__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSetLiteral__Group_3__0();
@@ -40952,14 +41577,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__4"
-    // InternalPerspectiveDsl.g:12302:1: rule__XSetLiteral__Group__4 : rule__XSetLiteral__Group__4__Impl ;
+    // InternalPerspectiveDsl.g:12499: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:12306:1: ( rule__XSetLiteral__Group__4__Impl )
-            // InternalPerspectiveDsl.g:12307:2: rule__XSetLiteral__Group__4__Impl
+            // InternalPerspectiveDsl.g:12503:1: ( rule__XSetLiteral__Group__4__Impl )
+            // InternalPerspectiveDsl.g:12504:2: rule__XSetLiteral__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group__4__Impl();
@@ -40985,17 +41610,17 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__4__Impl"
-    // InternalPerspectiveDsl.g:12313:1: rule__XSetLiteral__Group__4__Impl : ( '}' ) ;
+    // InternalPerspectiveDsl.g:12510:1: rule__XSetLiteral__Group__4__Impl : ( '}' ) ;
     public final void rule__XSetLiteral__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12317:1: ( ( '}' ) )
-            // InternalPerspectiveDsl.g:12318:1: ( '}' )
+            // InternalPerspectiveDsl.g:12514:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:12515:1: ( '}' )
             {
-            // InternalPerspectiveDsl.g:12318:1: ( '}' )
-            // InternalPerspectiveDsl.g:12319:2: '}'
+            // InternalPerspectiveDsl.g:12515:1: ( '}' )
+            // InternalPerspectiveDsl.g:12516:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4()); 
@@ -41026,16 +41651,16 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__0"
-    // InternalPerspectiveDsl.g:12329:1: rule__XSetLiteral__Group_3__0 : rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 ;
+    // InternalPerspectiveDsl.g:12526: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:12333:1: ( rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 )
-            // InternalPerspectiveDsl.g:12334:2: rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1
+            // InternalPerspectiveDsl.g:12530:1: ( rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 )
+            // InternalPerspectiveDsl.g:12531:2: rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__XSetLiteral__Group_3__0__Impl();
 
             state._fsp--;
@@ -41064,23 +41689,23 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:12341:1: rule__XSetLiteral__Group_3__0__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) ;
+    // InternalPerspectiveDsl.g:12538: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:12345:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) )
-            // InternalPerspectiveDsl.g:12346:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:12542:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalPerspectiveDsl.g:12543:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
             {
-            // InternalPerspectiveDsl.g:12346:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
-            // InternalPerspectiveDsl.g:12347:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            // InternalPerspectiveDsl.g:12543:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:12544:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0()); 
             }
-            // InternalPerspectiveDsl.g:12348:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
-            // InternalPerspectiveDsl.g:12348:3: rule__XSetLiteral__ElementsAssignment_3_0
+            // InternalPerspectiveDsl.g:12545:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            // InternalPerspectiveDsl.g:12545:3: rule__XSetLiteral__ElementsAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__ElementsAssignment_3_0();
@@ -41115,14 +41740,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__1"
-    // InternalPerspectiveDsl.g:12356:1: rule__XSetLiteral__Group_3__1 : rule__XSetLiteral__Group_3__1__Impl ;
+    // InternalPerspectiveDsl.g:12553: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:12360:1: ( rule__XSetLiteral__Group_3__1__Impl )
-            // InternalPerspectiveDsl.g:12361:2: rule__XSetLiteral__Group_3__1__Impl
+            // InternalPerspectiveDsl.g:12557:1: ( rule__XSetLiteral__Group_3__1__Impl )
+            // InternalPerspectiveDsl.g:12558:2: rule__XSetLiteral__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group_3__1__Impl();
@@ -41148,37 +41773,37 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:12367:1: rule__XSetLiteral__Group_3__1__Impl : ( ( rule__XSetLiteral__Group_3_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:12564: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:12371:1: ( ( ( rule__XSetLiteral__Group_3_1__0 )* ) )
-            // InternalPerspectiveDsl.g:12372:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            // InternalPerspectiveDsl.g:12568:1: ( ( ( rule__XSetLiteral__Group_3_1__0 )* ) )
+            // InternalPerspectiveDsl.g:12569:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:12372:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
-            // InternalPerspectiveDsl.g:12373:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            // InternalPerspectiveDsl.g:12569:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            // InternalPerspectiveDsl.g:12570:2: ( rule__XSetLiteral__Group_3_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getGroup_3_1()); 
             }
-            // InternalPerspectiveDsl.g:12374:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            // InternalPerspectiveDsl.g:12571:2: ( rule__XSetLiteral__Group_3_1__0 )*
             loop88:
             do {
                 int alt88=2;
                 int LA88_0 = input.LA(1);
 
-                if ( (LA88_0==91) ) {
+                if ( (LA88_0==93) ) {
                     alt88=1;
                 }
 
 
                 switch (alt88) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:12374:3: rule__XSetLiteral__Group_3_1__0
+            	    // InternalPerspectiveDsl.g:12571:3: rule__XSetLiteral__Group_3_1__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XSetLiteral__Group_3_1__0();
 
             	    state._fsp--;
@@ -41217,16 +41842,16 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__0"
-    // InternalPerspectiveDsl.g:12383:1: rule__XSetLiteral__Group_3_1__0 : rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 ;
+    // InternalPerspectiveDsl.g:12580: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:12387:1: ( rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 )
-            // InternalPerspectiveDsl.g:12388:2: rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1
+            // InternalPerspectiveDsl.g:12584:1: ( rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:12585:2: rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XSetLiteral__Group_3_1__0__Impl();
 
             state._fsp--;
@@ -41255,22 +41880,22 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__0__Impl"
-    // InternalPerspectiveDsl.g:12395:1: rule__XSetLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:12592: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:12399:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:12400:1: ( ',' )
+            // InternalPerspectiveDsl.g:12596:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:12597:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:12400:1: ( ',' )
-            // InternalPerspectiveDsl.g:12401:2: ','
+            // InternalPerspectiveDsl.g:12597:1: ( ',' )
+            // InternalPerspectiveDsl.g:12598:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0()); 
             }
@@ -41296,14 +41921,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__1"
-    // InternalPerspectiveDsl.g:12410:1: rule__XSetLiteral__Group_3_1__1 : rule__XSetLiteral__Group_3_1__1__Impl ;
+    // InternalPerspectiveDsl.g:12607: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:12414:1: ( rule__XSetLiteral__Group_3_1__1__Impl )
-            // InternalPerspectiveDsl.g:12415:2: rule__XSetLiteral__Group_3_1__1__Impl
+            // InternalPerspectiveDsl.g:12611:1: ( rule__XSetLiteral__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:12612:2: rule__XSetLiteral__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group_3_1__1__Impl();
@@ -41329,23 +41954,23 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__1__Impl"
-    // InternalPerspectiveDsl.g:12421:1: rule__XSetLiteral__Group_3_1__1__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:12618: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:12425:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) )
-            // InternalPerspectiveDsl.g:12426:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:12622:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:12623:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:12426:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
-            // InternalPerspectiveDsl.g:12427:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:12623:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:12624:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1()); 
             }
-            // InternalPerspectiveDsl.g:12428:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
-            // InternalPerspectiveDsl.g:12428:3: rule__XSetLiteral__ElementsAssignment_3_1_1
+            // InternalPerspectiveDsl.g:12625:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:12625:3: rule__XSetLiteral__ElementsAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__ElementsAssignment_3_1_1();
@@ -41380,16 +42005,16 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__0"
-    // InternalPerspectiveDsl.g:12437:1: rule__XListLiteral__Group__0 : rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 ;
+    // InternalPerspectiveDsl.g:12634: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:12441:1: ( rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 )
-            // InternalPerspectiveDsl.g:12442:2: rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1
+            // InternalPerspectiveDsl.g:12638:1: ( rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:12639:2: rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1
             {
-            pushFollow(FOLLOW_55);
+            pushFollow(FOLLOW_57);
             rule__XListLiteral__Group__0__Impl();
 
             state._fsp--;
@@ -41418,23 +42043,23 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__0__Impl"
-    // InternalPerspectiveDsl.g:12449:1: rule__XListLiteral__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:12646:1: rule__XListLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XListLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12453:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:12454:1: ( () )
+            // InternalPerspectiveDsl.g:12650:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:12651:1: ( () )
             {
-            // InternalPerspectiveDsl.g:12454:1: ( () )
-            // InternalPerspectiveDsl.g:12455:2: ()
+            // InternalPerspectiveDsl.g:12651:1: ( () )
+            // InternalPerspectiveDsl.g:12652:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getXListLiteralAction_0()); 
             }
-            // InternalPerspectiveDsl.g:12456:2: ()
-            // InternalPerspectiveDsl.g:12456:3: 
+            // InternalPerspectiveDsl.g:12653:2: ()
+            // InternalPerspectiveDsl.g:12653:3: 
             {
             }
 
@@ -41459,16 +42084,16 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__1"
-    // InternalPerspectiveDsl.g:12464:1: rule__XListLiteral__Group__1 : rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 ;
+    // InternalPerspectiveDsl.g:12661: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:12468:1: ( rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 )
-            // InternalPerspectiveDsl.g:12469:2: rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2
+            // InternalPerspectiveDsl.g:12665:1: ( rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 )
+            // InternalPerspectiveDsl.g:12666:2: rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2
             {
-            pushFollow(FOLLOW_56);
+            pushFollow(FOLLOW_58);
             rule__XListLiteral__Group__1__Impl();
 
             state._fsp--;
@@ -41497,22 +42122,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__1__Impl"
-    // InternalPerspectiveDsl.g:12476:1: rule__XListLiteral__Group__1__Impl : ( '#' ) ;
+    // InternalPerspectiveDsl.g:12673:1: rule__XListLiteral__Group__1__Impl : ( '#' ) ;
     public final void rule__XListLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12480:1: ( ( '#' ) )
-            // InternalPerspectiveDsl.g:12481:1: ( '#' )
+            // InternalPerspectiveDsl.g:12677:1: ( ( '#' ) )
+            // InternalPerspectiveDsl.g:12678:1: ( '#' )
             {
-            // InternalPerspectiveDsl.g:12481:1: ( '#' )
-            // InternalPerspectiveDsl.g:12482:2: '#'
+            // InternalPerspectiveDsl.g:12678:1: ( '#' )
+            // InternalPerspectiveDsl.g:12679:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1()); 
             }
-            match(input,93,FOLLOW_2); if (state.failed) return ;
+            match(input,95,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1()); 
             }
@@ -41538,16 +42163,16 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__2"
-    // InternalPerspectiveDsl.g:12491:1: rule__XListLiteral__Group__2 : rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 ;
+    // InternalPerspectiveDsl.g:12688: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:12495:1: ( rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 )
-            // InternalPerspectiveDsl.g:12496:2: rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3
+            // InternalPerspectiveDsl.g:12692:1: ( rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 )
+            // InternalPerspectiveDsl.g:12693:2: rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3
             {
-            pushFollow(FOLLOW_54);
+            pushFollow(FOLLOW_56);
             rule__XListLiteral__Group__2__Impl();
 
             state._fsp--;
@@ -41576,22 +42201,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__2__Impl"
-    // InternalPerspectiveDsl.g:12503:1: rule__XListLiteral__Group__2__Impl : ( '[' ) ;
+    // InternalPerspectiveDsl.g:12700:1: rule__XListLiteral__Group__2__Impl : ( '[' ) ;
     public final void rule__XListLiteral__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12507:1: ( ( '[' ) )
-            // InternalPerspectiveDsl.g:12508:1: ( '[' )
+            // InternalPerspectiveDsl.g:12704:1: ( ( '[' ) )
+            // InternalPerspectiveDsl.g:12705:1: ( '[' )
             {
-            // InternalPerspectiveDsl.g:12508:1: ( '[' )
-            // InternalPerspectiveDsl.g:12509:2: '['
+            // InternalPerspectiveDsl.g:12705:1: ( '[' )
+            // InternalPerspectiveDsl.g:12706:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2()); 
             }
-            match(input,94,FOLLOW_2); if (state.failed) return ;
+            match(input,96,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2()); 
             }
@@ -41617,16 +42242,16 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__3"
-    // InternalPerspectiveDsl.g:12518:1: rule__XListLiteral__Group__3 : rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 ;
+    // InternalPerspectiveDsl.g:12715: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:12522:1: ( rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 )
-            // InternalPerspectiveDsl.g:12523:2: rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4
+            // InternalPerspectiveDsl.g:12719:1: ( rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 )
+            // InternalPerspectiveDsl.g:12720:2: rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4
             {
-            pushFollow(FOLLOW_54);
+            pushFollow(FOLLOW_56);
             rule__XListLiteral__Group__3__Impl();
 
             state._fsp--;
@@ -41655,31 +42280,31 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__3__Impl"
-    // InternalPerspectiveDsl.g:12530:1: rule__XListLiteral__Group__3__Impl : ( ( rule__XListLiteral__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:12727: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:12534:1: ( ( ( rule__XListLiteral__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:12535:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:12731:1: ( ( ( rule__XListLiteral__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:12732:1: ( ( rule__XListLiteral__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:12535:1: ( ( rule__XListLiteral__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:12536:2: ( rule__XListLiteral__Group_3__0 )?
+            // InternalPerspectiveDsl.g:12732:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:12733:2: ( rule__XListLiteral__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:12537:2: ( rule__XListLiteral__Group_3__0 )?
+            // InternalPerspectiveDsl.g:12734:2: ( rule__XListLiteral__Group_3__0 )?
             int alt89=2;
             int LA89_0 = input.LA(1);
 
-            if ( ((LA89_0>=RULE_ID && LA89_0<=RULE_DECIMAL)||LA89_0==27||(LA89_0>=34 && LA89_0<=35)||LA89_0==40||(LA89_0>=45 && LA89_0<=50)||LA89_0==54||LA89_0==89||(LA89_0>=93 && LA89_0<=94)||LA89_0==97||LA89_0==99||(LA89_0>=103 && LA89_0<=111)||LA89_0==113||LA89_0==124) ) {
+            if ( ((LA89_0>=RULE_ID && LA89_0<=RULE_DECIMAL)||LA89_0==27||(LA89_0>=34 && LA89_0<=35)||LA89_0==40||(LA89_0>=45 && LA89_0<=50)||LA89_0==54||LA89_0==91||(LA89_0>=95 && LA89_0<=96)||LA89_0==99||LA89_0==101||(LA89_0>=105 && LA89_0<=113)||LA89_0==115||LA89_0==126) ) {
                 alt89=1;
             }
             switch (alt89) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:12537:3: rule__XListLiteral__Group_3__0
+                    // InternalPerspectiveDsl.g:12734:3: rule__XListLiteral__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XListLiteral__Group_3__0();
@@ -41717,14 +42342,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__4"
-    // InternalPerspectiveDsl.g:12545:1: rule__XListLiteral__Group__4 : rule__XListLiteral__Group__4__Impl ;
+    // InternalPerspectiveDsl.g:12742: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:12549:1: ( rule__XListLiteral__Group__4__Impl )
-            // InternalPerspectiveDsl.g:12550:2: rule__XListLiteral__Group__4__Impl
+            // InternalPerspectiveDsl.g:12746:1: ( rule__XListLiteral__Group__4__Impl )
+            // InternalPerspectiveDsl.g:12747:2: rule__XListLiteral__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group__4__Impl();
@@ -41750,22 +42375,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__4__Impl"
-    // InternalPerspectiveDsl.g:12556:1: rule__XListLiteral__Group__4__Impl : ( ']' ) ;
+    // InternalPerspectiveDsl.g:12753:1: rule__XListLiteral__Group__4__Impl : ( ']' ) ;
     public final void rule__XListLiteral__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12560:1: ( ( ']' ) )
-            // InternalPerspectiveDsl.g:12561:1: ( ']' )
+            // InternalPerspectiveDsl.g:12757:1: ( ( ']' ) )
+            // InternalPerspectiveDsl.g:12758:1: ( ']' )
             {
-            // InternalPerspectiveDsl.g:12561:1: ( ']' )
-            // InternalPerspectiveDsl.g:12562:2: ']'
+            // InternalPerspectiveDsl.g:12758:1: ( ']' )
+            // InternalPerspectiveDsl.g:12759:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4()); 
             }
-            match(input,92,FOLLOW_2); if (state.failed) return ;
+            match(input,94,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4()); 
             }
@@ -41791,16 +42416,16 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__0"
-    // InternalPerspectiveDsl.g:12572:1: rule__XListLiteral__Group_3__0 : rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 ;
+    // InternalPerspectiveDsl.g:12769: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:12576:1: ( rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 )
-            // InternalPerspectiveDsl.g:12577:2: rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1
+            // InternalPerspectiveDsl.g:12773:1: ( rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 )
+            // InternalPerspectiveDsl.g:12774:2: rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__XListLiteral__Group_3__0__Impl();
 
             state._fsp--;
@@ -41829,23 +42454,23 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:12584:1: rule__XListLiteral__Group_3__0__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) ;
+    // InternalPerspectiveDsl.g:12781: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:12588:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) )
-            // InternalPerspectiveDsl.g:12589:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:12785:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalPerspectiveDsl.g:12786:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
             {
-            // InternalPerspectiveDsl.g:12589:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
-            // InternalPerspectiveDsl.g:12590:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            // InternalPerspectiveDsl.g:12786:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:12787:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0()); 
             }
-            // InternalPerspectiveDsl.g:12591:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
-            // InternalPerspectiveDsl.g:12591:3: rule__XListLiteral__ElementsAssignment_3_0
+            // InternalPerspectiveDsl.g:12788:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            // InternalPerspectiveDsl.g:12788:3: rule__XListLiteral__ElementsAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__ElementsAssignment_3_0();
@@ -41880,14 +42505,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__1"
-    // InternalPerspectiveDsl.g:12599:1: rule__XListLiteral__Group_3__1 : rule__XListLiteral__Group_3__1__Impl ;
+    // InternalPerspectiveDsl.g:12796: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:12603:1: ( rule__XListLiteral__Group_3__1__Impl )
-            // InternalPerspectiveDsl.g:12604:2: rule__XListLiteral__Group_3__1__Impl
+            // InternalPerspectiveDsl.g:12800:1: ( rule__XListLiteral__Group_3__1__Impl )
+            // InternalPerspectiveDsl.g:12801:2: rule__XListLiteral__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group_3__1__Impl();
@@ -41913,37 +42538,37 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:12610:1: rule__XListLiteral__Group_3__1__Impl : ( ( rule__XListLiteral__Group_3_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:12807: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:12614:1: ( ( ( rule__XListLiteral__Group_3_1__0 )* ) )
-            // InternalPerspectiveDsl.g:12615:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            // InternalPerspectiveDsl.g:12811:1: ( ( ( rule__XListLiteral__Group_3_1__0 )* ) )
+            // InternalPerspectiveDsl.g:12812:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:12615:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
-            // InternalPerspectiveDsl.g:12616:2: ( rule__XListLiteral__Group_3_1__0 )*
+            // InternalPerspectiveDsl.g:12812:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            // InternalPerspectiveDsl.g:12813:2: ( rule__XListLiteral__Group_3_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getGroup_3_1()); 
             }
-            // InternalPerspectiveDsl.g:12617:2: ( rule__XListLiteral__Group_3_1__0 )*
+            // InternalPerspectiveDsl.g:12814:2: ( rule__XListLiteral__Group_3_1__0 )*
             loop90:
             do {
                 int alt90=2;
                 int LA90_0 = input.LA(1);
 
-                if ( (LA90_0==91) ) {
+                if ( (LA90_0==93) ) {
                     alt90=1;
                 }
 
 
                 switch (alt90) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:12617:3: rule__XListLiteral__Group_3_1__0
+            	    // InternalPerspectiveDsl.g:12814:3: rule__XListLiteral__Group_3_1__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XListLiteral__Group_3_1__0();
 
             	    state._fsp--;
@@ -41982,16 +42607,16 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__0"
-    // InternalPerspectiveDsl.g:12626:1: rule__XListLiteral__Group_3_1__0 : rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 ;
+    // InternalPerspectiveDsl.g:12823: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:12630:1: ( rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 )
-            // InternalPerspectiveDsl.g:12631:2: rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1
+            // InternalPerspectiveDsl.g:12827:1: ( rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:12828:2: rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XListLiteral__Group_3_1__0__Impl();
 
             state._fsp--;
@@ -42020,22 +42645,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__0__Impl"
-    // InternalPerspectiveDsl.g:12638:1: rule__XListLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:12835: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:12642:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:12643:1: ( ',' )
+            // InternalPerspectiveDsl.g:12839:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:12840:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:12643:1: ( ',' )
-            // InternalPerspectiveDsl.g:12644:2: ','
+            // InternalPerspectiveDsl.g:12840:1: ( ',' )
+            // InternalPerspectiveDsl.g:12841:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0()); 
             }
@@ -42061,14 +42686,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__1"
-    // InternalPerspectiveDsl.g:12653:1: rule__XListLiteral__Group_3_1__1 : rule__XListLiteral__Group_3_1__1__Impl ;
+    // InternalPerspectiveDsl.g:12850: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:12657:1: ( rule__XListLiteral__Group_3_1__1__Impl )
-            // InternalPerspectiveDsl.g:12658:2: rule__XListLiteral__Group_3_1__1__Impl
+            // InternalPerspectiveDsl.g:12854:1: ( rule__XListLiteral__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:12855:2: rule__XListLiteral__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group_3_1__1__Impl();
@@ -42094,23 +42719,23 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__1__Impl"
-    // InternalPerspectiveDsl.g:12664:1: rule__XListLiteral__Group_3_1__1__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:12861: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:12668:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) )
-            // InternalPerspectiveDsl.g:12669:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:12865:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:12866:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:12669:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
-            // InternalPerspectiveDsl.g:12670:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:12866:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:12867:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1()); 
             }
-            // InternalPerspectiveDsl.g:12671:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
-            // InternalPerspectiveDsl.g:12671:3: rule__XListLiteral__ElementsAssignment_3_1_1
+            // InternalPerspectiveDsl.g:12868:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:12868:3: rule__XListLiteral__ElementsAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__ElementsAssignment_3_1_1();
@@ -42145,16 +42770,16 @@
 
 
     // $ANTLR start "rule__XClosure__Group__0"
-    // InternalPerspectiveDsl.g:12680:1: rule__XClosure__Group__0 : rule__XClosure__Group__0__Impl rule__XClosure__Group__1 ;
+    // InternalPerspectiveDsl.g:12877: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:12684:1: ( rule__XClosure__Group__0__Impl rule__XClosure__Group__1 )
-            // InternalPerspectiveDsl.g:12685:2: rule__XClosure__Group__0__Impl rule__XClosure__Group__1
+            // InternalPerspectiveDsl.g:12881:1: ( rule__XClosure__Group__0__Impl rule__XClosure__Group__1 )
+            // InternalPerspectiveDsl.g:12882:2: rule__XClosure__Group__0__Impl rule__XClosure__Group__1
             {
-            pushFollow(FOLLOW_93);
+            pushFollow(FOLLOW_95);
             rule__XClosure__Group__0__Impl();
 
             state._fsp--;
@@ -42183,23 +42808,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group__0__Impl"
-    // InternalPerspectiveDsl.g:12692:1: rule__XClosure__Group__0__Impl : ( ( rule__XClosure__Group_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:12889: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:12696:1: ( ( ( rule__XClosure__Group_0__0 ) ) )
-            // InternalPerspectiveDsl.g:12697:1: ( ( rule__XClosure__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:12893:1: ( ( ( rule__XClosure__Group_0__0 ) ) )
+            // InternalPerspectiveDsl.g:12894:1: ( ( rule__XClosure__Group_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:12697:1: ( ( rule__XClosure__Group_0__0 ) )
-            // InternalPerspectiveDsl.g:12698:2: ( rule__XClosure__Group_0__0 )
+            // InternalPerspectiveDsl.g:12894:1: ( ( rule__XClosure__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:12895:2: ( rule__XClosure__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_0()); 
             }
-            // InternalPerspectiveDsl.g:12699:2: ( rule__XClosure__Group_0__0 )
-            // InternalPerspectiveDsl.g:12699:3: rule__XClosure__Group_0__0
+            // InternalPerspectiveDsl.g:12896:2: ( rule__XClosure__Group_0__0 )
+            // InternalPerspectiveDsl.g:12896:3: rule__XClosure__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0__0();
@@ -42234,16 +42859,16 @@
 
 
     // $ANTLR start "rule__XClosure__Group__1"
-    // InternalPerspectiveDsl.g:12707:1: rule__XClosure__Group__1 : rule__XClosure__Group__1__Impl rule__XClosure__Group__2 ;
+    // InternalPerspectiveDsl.g:12904: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:12711:1: ( rule__XClosure__Group__1__Impl rule__XClosure__Group__2 )
-            // InternalPerspectiveDsl.g:12712:2: rule__XClosure__Group__1__Impl rule__XClosure__Group__2
+            // InternalPerspectiveDsl.g:12908:1: ( rule__XClosure__Group__1__Impl rule__XClosure__Group__2 )
+            // InternalPerspectiveDsl.g:12909:2: rule__XClosure__Group__1__Impl rule__XClosure__Group__2
             {
-            pushFollow(FOLLOW_93);
+            pushFollow(FOLLOW_95);
             rule__XClosure__Group__1__Impl();
 
             state._fsp--;
@@ -42272,27 +42897,27 @@
 
 
     // $ANTLR start "rule__XClosure__Group__1__Impl"
-    // InternalPerspectiveDsl.g:12719:1: rule__XClosure__Group__1__Impl : ( ( rule__XClosure__Group_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:12916: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:12723:1: ( ( ( rule__XClosure__Group_1__0 )? ) )
-            // InternalPerspectiveDsl.g:12724:1: ( ( rule__XClosure__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:12920:1: ( ( ( rule__XClosure__Group_1__0 )? ) )
+            // InternalPerspectiveDsl.g:12921:1: ( ( rule__XClosure__Group_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:12724:1: ( ( rule__XClosure__Group_1__0 )? )
-            // InternalPerspectiveDsl.g:12725:2: ( rule__XClosure__Group_1__0 )?
+            // InternalPerspectiveDsl.g:12921:1: ( ( rule__XClosure__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:12922:2: ( rule__XClosure__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:12726:2: ( rule__XClosure__Group_1__0 )?
+            // InternalPerspectiveDsl.g:12923:2: ( rule__XClosure__Group_1__0 )?
             int alt91=2;
             alt91 = dfa91.predict(input);
             switch (alt91) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:12726:3: rule__XClosure__Group_1__0
+                    // InternalPerspectiveDsl.g:12923:3: rule__XClosure__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XClosure__Group_1__0();
@@ -42330,16 +42955,16 @@
 
 
     // $ANTLR start "rule__XClosure__Group__2"
-    // InternalPerspectiveDsl.g:12734:1: rule__XClosure__Group__2 : rule__XClosure__Group__2__Impl rule__XClosure__Group__3 ;
+    // InternalPerspectiveDsl.g:12931: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:12738:1: ( rule__XClosure__Group__2__Impl rule__XClosure__Group__3 )
-            // InternalPerspectiveDsl.g:12739:2: rule__XClosure__Group__2__Impl rule__XClosure__Group__3
+            // InternalPerspectiveDsl.g:12935:1: ( rule__XClosure__Group__2__Impl rule__XClosure__Group__3 )
+            // InternalPerspectiveDsl.g:12936:2: rule__XClosure__Group__2__Impl rule__XClosure__Group__3
             {
-            pushFollow(FOLLOW_94);
+            pushFollow(FOLLOW_96);
             rule__XClosure__Group__2__Impl();
 
             state._fsp--;
@@ -42368,23 +42993,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group__2__Impl"
-    // InternalPerspectiveDsl.g:12746:1: rule__XClosure__Group__2__Impl : ( ( rule__XClosure__ExpressionAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:12943: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:12750:1: ( ( ( rule__XClosure__ExpressionAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:12751:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            // InternalPerspectiveDsl.g:12947:1: ( ( ( rule__XClosure__ExpressionAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:12948:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:12751:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
-            // InternalPerspectiveDsl.g:12752:2: ( rule__XClosure__ExpressionAssignment_2 )
+            // InternalPerspectiveDsl.g:12948:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            // InternalPerspectiveDsl.g:12949:2: ( rule__XClosure__ExpressionAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExpressionAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:12753:2: ( rule__XClosure__ExpressionAssignment_2 )
-            // InternalPerspectiveDsl.g:12753:3: rule__XClosure__ExpressionAssignment_2
+            // InternalPerspectiveDsl.g:12950:2: ( rule__XClosure__ExpressionAssignment_2 )
+            // InternalPerspectiveDsl.g:12950:3: rule__XClosure__ExpressionAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__ExpressionAssignment_2();
@@ -42419,14 +43044,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group__3"
-    // InternalPerspectiveDsl.g:12761:1: rule__XClosure__Group__3 : rule__XClosure__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:12958: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:12765:1: ( rule__XClosure__Group__3__Impl )
-            // InternalPerspectiveDsl.g:12766:2: rule__XClosure__Group__3__Impl
+            // InternalPerspectiveDsl.g:12962:1: ( rule__XClosure__Group__3__Impl )
+            // InternalPerspectiveDsl.g:12963:2: rule__XClosure__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group__3__Impl();
@@ -42452,22 +43077,22 @@
 
 
     // $ANTLR start "rule__XClosure__Group__3__Impl"
-    // InternalPerspectiveDsl.g:12772:1: rule__XClosure__Group__3__Impl : ( ']' ) ;
+    // InternalPerspectiveDsl.g:12969:1: rule__XClosure__Group__3__Impl : ( ']' ) ;
     public final void rule__XClosure__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12776:1: ( ( ']' ) )
-            // InternalPerspectiveDsl.g:12777:1: ( ']' )
+            // InternalPerspectiveDsl.g:12973:1: ( ( ']' ) )
+            // InternalPerspectiveDsl.g:12974:1: ( ']' )
             {
-            // InternalPerspectiveDsl.g:12777:1: ( ']' )
-            // InternalPerspectiveDsl.g:12778:2: ']'
+            // InternalPerspectiveDsl.g:12974:1: ( ']' )
+            // InternalPerspectiveDsl.g:12975:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3()); 
             }
-            match(input,92,FOLLOW_2); if (state.failed) return ;
+            match(input,94,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3()); 
             }
@@ -42493,14 +43118,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0__0"
-    // InternalPerspectiveDsl.g:12788:1: rule__XClosure__Group_0__0 : rule__XClosure__Group_0__0__Impl ;
+    // InternalPerspectiveDsl.g:12985: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:12792:1: ( rule__XClosure__Group_0__0__Impl )
-            // InternalPerspectiveDsl.g:12793:2: rule__XClosure__Group_0__0__Impl
+            // InternalPerspectiveDsl.g:12989:1: ( rule__XClosure__Group_0__0__Impl )
+            // InternalPerspectiveDsl.g:12990:2: rule__XClosure__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0__0__Impl();
@@ -42526,23 +43151,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:12799:1: rule__XClosure__Group_0__0__Impl : ( ( rule__XClosure__Group_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:12996: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:12803:1: ( ( ( rule__XClosure__Group_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:12804:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:13000:1: ( ( ( rule__XClosure__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:13001:1: ( ( rule__XClosure__Group_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:12804:1: ( ( rule__XClosure__Group_0_0__0 ) )
-            // InternalPerspectiveDsl.g:12805:2: ( rule__XClosure__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:13001:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:13002:2: ( rule__XClosure__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_0_0()); 
             }
-            // InternalPerspectiveDsl.g:12806:2: ( rule__XClosure__Group_0_0__0 )
-            // InternalPerspectiveDsl.g:12806:3: rule__XClosure__Group_0_0__0
+            // InternalPerspectiveDsl.g:13003:2: ( rule__XClosure__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:13003:3: rule__XClosure__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0_0__0();
@@ -42577,16 +43202,16 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__0"
-    // InternalPerspectiveDsl.g:12815:1: rule__XClosure__Group_0_0__0 : rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 ;
+    // InternalPerspectiveDsl.g:13012: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:12819:1: ( rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 )
-            // InternalPerspectiveDsl.g:12820:2: rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1
+            // InternalPerspectiveDsl.g:13016:1: ( rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 )
+            // InternalPerspectiveDsl.g:13017:2: rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1
             {
-            pushFollow(FOLLOW_56);
+            pushFollow(FOLLOW_58);
             rule__XClosure__Group_0_0__0__Impl();
 
             state._fsp--;
@@ -42615,23 +43240,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:12827:1: rule__XClosure__Group_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:13024: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:12831:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:12832:1: ( () )
+            // InternalPerspectiveDsl.g:13028:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:13029:1: ( () )
             {
-            // InternalPerspectiveDsl.g:12832:1: ( () )
-            // InternalPerspectiveDsl.g:12833:2: ()
+            // InternalPerspectiveDsl.g:13029:1: ( () )
+            // InternalPerspectiveDsl.g:13030:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getXClosureAction_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:12834:2: ()
-            // InternalPerspectiveDsl.g:12834:3: 
+            // InternalPerspectiveDsl.g:13031:2: ()
+            // InternalPerspectiveDsl.g:13031:3: 
             {
             }
 
@@ -42656,14 +43281,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__1"
-    // InternalPerspectiveDsl.g:12842:1: rule__XClosure__Group_0_0__1 : rule__XClosure__Group_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:13039: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:12846:1: ( rule__XClosure__Group_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:12847:2: rule__XClosure__Group_0_0__1__Impl
+            // InternalPerspectiveDsl.g:13043:1: ( rule__XClosure__Group_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:13044:2: rule__XClosure__Group_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0_0__1__Impl();
@@ -42689,22 +43314,22 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:12853:1: rule__XClosure__Group_0_0__1__Impl : ( '[' ) ;
+    // InternalPerspectiveDsl.g:13050: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:12857:1: ( ( '[' ) )
-            // InternalPerspectiveDsl.g:12858:1: ( '[' )
+            // InternalPerspectiveDsl.g:13054:1: ( ( '[' ) )
+            // InternalPerspectiveDsl.g:13055:1: ( '[' )
             {
-            // InternalPerspectiveDsl.g:12858:1: ( '[' )
-            // InternalPerspectiveDsl.g:12859:2: '['
+            // InternalPerspectiveDsl.g:13055:1: ( '[' )
+            // InternalPerspectiveDsl.g:13056:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1()); 
             }
-            match(input,94,FOLLOW_2); if (state.failed) return ;
+            match(input,96,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1()); 
             }
@@ -42730,14 +43355,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1__0"
-    // InternalPerspectiveDsl.g:12869:1: rule__XClosure__Group_1__0 : rule__XClosure__Group_1__0__Impl ;
+    // InternalPerspectiveDsl.g:13066: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:12873:1: ( rule__XClosure__Group_1__0__Impl )
-            // InternalPerspectiveDsl.g:12874:2: rule__XClosure__Group_1__0__Impl
+            // InternalPerspectiveDsl.g:13070:1: ( rule__XClosure__Group_1__0__Impl )
+            // InternalPerspectiveDsl.g:13071:2: rule__XClosure__Group_1__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1__0__Impl();
@@ -42763,23 +43388,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:12880:1: rule__XClosure__Group_1__0__Impl : ( ( rule__XClosure__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:13077: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:12884:1: ( ( ( rule__XClosure__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:12885:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:13081:1: ( ( ( rule__XClosure__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:13082:1: ( ( rule__XClosure__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:12885:1: ( ( rule__XClosure__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:12886:2: ( rule__XClosure__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:13082:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:13083:2: ( rule__XClosure__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:12887:2: ( rule__XClosure__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:12887:3: rule__XClosure__Group_1_0__0
+            // InternalPerspectiveDsl.g:13084:2: ( rule__XClosure__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:13084:3: rule__XClosure__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0__0();
@@ -42814,16 +43439,16 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__0"
-    // InternalPerspectiveDsl.g:12896:1: rule__XClosure__Group_1_0__0 : rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 ;
+    // InternalPerspectiveDsl.g:13093: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:12900:1: ( rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 )
-            // InternalPerspectiveDsl.g:12901:2: rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1
+            // InternalPerspectiveDsl.g:13097:1: ( rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 )
+            // InternalPerspectiveDsl.g:13098:2: rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1
             {
-            pushFollow(FOLLOW_95);
+            pushFollow(FOLLOW_97);
             rule__XClosure__Group_1_0__0__Impl();
 
             state._fsp--;
@@ -42852,31 +43477,31 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:12908:1: rule__XClosure__Group_1_0__0__Impl : ( ( rule__XClosure__Group_1_0_0__0 )? ) ;
+    // InternalPerspectiveDsl.g:13105: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:12912:1: ( ( ( rule__XClosure__Group_1_0_0__0 )? ) )
-            // InternalPerspectiveDsl.g:12913:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            // InternalPerspectiveDsl.g:13109:1: ( ( ( rule__XClosure__Group_1_0_0__0 )? ) )
+            // InternalPerspectiveDsl.g:13110:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
             {
-            // InternalPerspectiveDsl.g:12913:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
-            // InternalPerspectiveDsl.g:12914:2: ( rule__XClosure__Group_1_0_0__0 )?
+            // InternalPerspectiveDsl.g:13110:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            // InternalPerspectiveDsl.g:13111:2: ( rule__XClosure__Group_1_0_0__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:12915:2: ( rule__XClosure__Group_1_0_0__0 )?
+            // InternalPerspectiveDsl.g:13112:2: ( rule__XClosure__Group_1_0_0__0 )?
             int alt92=2;
             int LA92_0 = input.LA(1);
 
-            if ( (LA92_0==RULE_ID||LA92_0==31||LA92_0==89) ) {
+            if ( (LA92_0==RULE_ID||LA92_0==31||LA92_0==91) ) {
                 alt92=1;
             }
             switch (alt92) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:12915:3: rule__XClosure__Group_1_0_0__0
+                    // InternalPerspectiveDsl.g:13112:3: rule__XClosure__Group_1_0_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XClosure__Group_1_0_0__0();
@@ -42914,14 +43539,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__1"
-    // InternalPerspectiveDsl.g:12923:1: rule__XClosure__Group_1_0__1 : rule__XClosure__Group_1_0__1__Impl ;
+    // InternalPerspectiveDsl.g:13120: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:12927:1: ( rule__XClosure__Group_1_0__1__Impl )
-            // InternalPerspectiveDsl.g:12928:2: rule__XClosure__Group_1_0__1__Impl
+            // InternalPerspectiveDsl.g:13124:1: ( rule__XClosure__Group_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:13125:2: rule__XClosure__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0__1__Impl();
@@ -42947,23 +43572,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__1__Impl"
-    // InternalPerspectiveDsl.g:12934:1: rule__XClosure__Group_1_0__1__Impl : ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:13131: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:12938:1: ( ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) )
-            // InternalPerspectiveDsl.g:12939:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:13135:1: ( ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) )
+            // InternalPerspectiveDsl.g:13136:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:12939:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
-            // InternalPerspectiveDsl.g:12940:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:13136:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:13137:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1()); 
             }
-            // InternalPerspectiveDsl.g:12941:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
-            // InternalPerspectiveDsl.g:12941:3: rule__XClosure__ExplicitSyntaxAssignment_1_0_1
+            // InternalPerspectiveDsl.g:13138:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:13138:3: rule__XClosure__ExplicitSyntaxAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__ExplicitSyntaxAssignment_1_0_1();
@@ -42998,16 +43623,16 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:12950: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:13147: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:12954:1: ( rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:12955:2: rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:13151:1: ( rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:13152:2: rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__XClosure__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -43036,23 +43661,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:12962:1: rule__XClosure__Group_1_0_0__0__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) ;
+    // InternalPerspectiveDsl.g:13159: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:12966:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) )
-            // InternalPerspectiveDsl.g:12967:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            // InternalPerspectiveDsl.g:13163:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) )
+            // InternalPerspectiveDsl.g:13164:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
             {
-            // InternalPerspectiveDsl.g:12967:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
-            // InternalPerspectiveDsl.g:12968:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            // InternalPerspectiveDsl.g:13164:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            // InternalPerspectiveDsl.g:13165:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:12969:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
-            // InternalPerspectiveDsl.g:12969:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0
+            // InternalPerspectiveDsl.g:13166:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            // InternalPerspectiveDsl.g:13166:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0();
@@ -43087,14 +43712,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:12977:1: rule__XClosure__Group_1_0_0__1 : rule__XClosure__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:13174: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:12981:1: ( rule__XClosure__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:12982:2: rule__XClosure__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:13178:1: ( rule__XClosure__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:13179:2: rule__XClosure__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0_0__1__Impl();
@@ -43120,37 +43745,37 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:12988:1: rule__XClosure__Group_1_0_0__1__Impl : ( ( rule__XClosure__Group_1_0_0_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:13185: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:12992:1: ( ( ( rule__XClosure__Group_1_0_0_1__0 )* ) )
-            // InternalPerspectiveDsl.g:12993:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            // InternalPerspectiveDsl.g:13189:1: ( ( ( rule__XClosure__Group_1_0_0_1__0 )* ) )
+            // InternalPerspectiveDsl.g:13190:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:12993:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
-            // InternalPerspectiveDsl.g:12994:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            // InternalPerspectiveDsl.g:13190:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            // InternalPerspectiveDsl.g:13191:2: ( rule__XClosure__Group_1_0_0_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:12995:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            // InternalPerspectiveDsl.g:13192:2: ( rule__XClosure__Group_1_0_0_1__0 )*
             loop93:
             do {
                 int alt93=2;
                 int LA93_0 = input.LA(1);
 
-                if ( (LA93_0==91) ) {
+                if ( (LA93_0==93) ) {
                     alt93=1;
                 }
 
 
                 switch (alt93) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:12995:3: rule__XClosure__Group_1_0_0_1__0
+            	    // InternalPerspectiveDsl.g:13192:3: rule__XClosure__Group_1_0_0_1__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XClosure__Group_1_0_0_1__0();
 
             	    state._fsp--;
@@ -43189,16 +43814,16 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__0"
-    // InternalPerspectiveDsl.g:13004: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:13201: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:13008:1: ( rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 )
-            // InternalPerspectiveDsl.g:13009:2: rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1
+            // InternalPerspectiveDsl.g:13205:1: ( rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 )
+            // InternalPerspectiveDsl.g:13206:2: rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__XClosure__Group_1_0_0_1__0__Impl();
 
             state._fsp--;
@@ -43227,22 +43852,22 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:13016:1: rule__XClosure__Group_1_0_0_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:13213: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:13020:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:13021:1: ( ',' )
+            // InternalPerspectiveDsl.g:13217:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:13218:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:13021:1: ( ',' )
-            // InternalPerspectiveDsl.g:13022:2: ','
+            // InternalPerspectiveDsl.g:13218:1: ( ',' )
+            // InternalPerspectiveDsl.g:13219:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0()); 
             }
@@ -43268,14 +43893,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__1"
-    // InternalPerspectiveDsl.g:13031:1: rule__XClosure__Group_1_0_0_1__1 : rule__XClosure__Group_1_0_0_1__1__Impl ;
+    // InternalPerspectiveDsl.g:13228: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:13035:1: ( rule__XClosure__Group_1_0_0_1__1__Impl )
-            // InternalPerspectiveDsl.g:13036:2: rule__XClosure__Group_1_0_0_1__1__Impl
+            // InternalPerspectiveDsl.g:13232:1: ( rule__XClosure__Group_1_0_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:13233:2: rule__XClosure__Group_1_0_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0_0_1__1__Impl();
@@ -43301,23 +43926,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__1__Impl"
-    // InternalPerspectiveDsl.g:13042:1: rule__XClosure__Group_1_0_0_1__1__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:13239: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:13046:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) )
-            // InternalPerspectiveDsl.g:13047:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            // InternalPerspectiveDsl.g:13243:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) )
+            // InternalPerspectiveDsl.g:13244:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:13047:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
-            // InternalPerspectiveDsl.g:13048:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            // InternalPerspectiveDsl.g:13244:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            // InternalPerspectiveDsl.g:13245:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1()); 
             }
-            // InternalPerspectiveDsl.g:13049:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
-            // InternalPerspectiveDsl.g:13049:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1
+            // InternalPerspectiveDsl.g:13246:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            // InternalPerspectiveDsl.g:13246:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1();
@@ -43352,16 +43977,16 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__0"
-    // InternalPerspectiveDsl.g:13058:1: rule__XExpressionInClosure__Group__0 : rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 ;
+    // InternalPerspectiveDsl.g:13255: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:13062:1: ( rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 )
-            // InternalPerspectiveDsl.g:13063:2: rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1
+            // InternalPerspectiveDsl.g:13259:1: ( rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 )
+            // InternalPerspectiveDsl.g:13260:2: rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1
             {
-            pushFollow(FOLLOW_93);
+            pushFollow(FOLLOW_95);
             rule__XExpressionInClosure__Group__0__Impl();
 
             state._fsp--;
@@ -43390,23 +44015,23 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__0__Impl"
-    // InternalPerspectiveDsl.g:13070:1: rule__XExpressionInClosure__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:13267:1: rule__XExpressionInClosure__Group__0__Impl : ( () ) ;
     public final void rule__XExpressionInClosure__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13074:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:13075:1: ( () )
+            // InternalPerspectiveDsl.g:13271:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:13272:1: ( () )
             {
-            // InternalPerspectiveDsl.g:13075:1: ( () )
-            // InternalPerspectiveDsl.g:13076:2: ()
+            // InternalPerspectiveDsl.g:13272:1: ( () )
+            // InternalPerspectiveDsl.g:13273:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:13077:2: ()
-            // InternalPerspectiveDsl.g:13077:3: 
+            // InternalPerspectiveDsl.g:13274:2: ()
+            // InternalPerspectiveDsl.g:13274:3: 
             {
             }
 
@@ -43431,14 +44056,14 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__1"
-    // InternalPerspectiveDsl.g:13085:1: rule__XExpressionInClosure__Group__1 : rule__XExpressionInClosure__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:13282: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:13089:1: ( rule__XExpressionInClosure__Group__1__Impl )
-            // InternalPerspectiveDsl.g:13090:2: rule__XExpressionInClosure__Group__1__Impl
+            // InternalPerspectiveDsl.g:13286:1: ( rule__XExpressionInClosure__Group__1__Impl )
+            // InternalPerspectiveDsl.g:13287:2: rule__XExpressionInClosure__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__Group__1__Impl();
@@ -43464,37 +44089,37 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__1__Impl"
-    // InternalPerspectiveDsl.g:13096:1: rule__XExpressionInClosure__Group__1__Impl : ( ( rule__XExpressionInClosure__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:13293: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:13100:1: ( ( ( rule__XExpressionInClosure__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:13101:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:13297:1: ( ( ( rule__XExpressionInClosure__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:13298:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:13101:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:13102:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            // InternalPerspectiveDsl.g:13298:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:13299:2: ( rule__XExpressionInClosure__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:13103:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            // InternalPerspectiveDsl.g:13300:2: ( rule__XExpressionInClosure__Group_1__0 )*
             loop94:
             do {
                 int alt94=2;
                 int LA94_0 = input.LA(1);
 
-                if ( ((LA94_0>=RULE_ID && LA94_0<=RULE_DECIMAL)||LA94_0==27||(LA94_0>=34 && LA94_0<=35)||LA94_0==40||(LA94_0>=44 && LA94_0<=50)||LA94_0==54||LA94_0==89||(LA94_0>=93 && LA94_0<=94)||LA94_0==97||LA94_0==99||(LA94_0>=103 && LA94_0<=111)||LA94_0==113||(LA94_0>=123 && LA94_0<=124)) ) {
+                if ( ((LA94_0>=RULE_ID && LA94_0<=RULE_DECIMAL)||LA94_0==27||(LA94_0>=34 && LA94_0<=35)||LA94_0==40||(LA94_0>=44 && LA94_0<=50)||LA94_0==54||LA94_0==91||(LA94_0>=95 && LA94_0<=96)||LA94_0==99||LA94_0==101||(LA94_0>=105 && LA94_0<=113)||LA94_0==115||(LA94_0>=125 && LA94_0<=126)) ) {
                     alt94=1;
                 }
 
 
                 switch (alt94) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:13103:3: rule__XExpressionInClosure__Group_1__0
+            	    // InternalPerspectiveDsl.g:13300:3: rule__XExpressionInClosure__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_96);
+            	    pushFollow(FOLLOW_98);
             	    rule__XExpressionInClosure__Group_1__0();
 
             	    state._fsp--;
@@ -43533,16 +44158,16 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__0"
-    // InternalPerspectiveDsl.g:13112:1: rule__XExpressionInClosure__Group_1__0 : rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 ;
+    // InternalPerspectiveDsl.g:13309: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:13116:1: ( rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 )
-            // InternalPerspectiveDsl.g:13117:2: rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1
+            // InternalPerspectiveDsl.g:13313:1: ( rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 )
+            // InternalPerspectiveDsl.g:13314:2: rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1
             {
-            pushFollow(FOLLOW_44);
+            pushFollow(FOLLOW_46);
             rule__XExpressionInClosure__Group_1__0__Impl();
 
             state._fsp--;
@@ -43571,23 +44196,23 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:13124:1: rule__XExpressionInClosure__Group_1__0__Impl : ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:13321: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:13128:1: ( ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) )
-            // InternalPerspectiveDsl.g:13129:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            // InternalPerspectiveDsl.g:13325:1: ( ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) )
+            // InternalPerspectiveDsl.g:13326:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:13129:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
-            // InternalPerspectiveDsl.g:13130:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            // InternalPerspectiveDsl.g:13326:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            // InternalPerspectiveDsl.g:13327:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0()); 
             }
-            // InternalPerspectiveDsl.g:13131:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
-            // InternalPerspectiveDsl.g:13131:3: rule__XExpressionInClosure__ExpressionsAssignment_1_0
+            // InternalPerspectiveDsl.g:13328:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            // InternalPerspectiveDsl.g:13328:3: rule__XExpressionInClosure__ExpressionsAssignment_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__ExpressionsAssignment_1_0();
@@ -43622,14 +44247,14 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__1"
-    // InternalPerspectiveDsl.g:13139:1: rule__XExpressionInClosure__Group_1__1 : rule__XExpressionInClosure__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:13336: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:13143:1: ( rule__XExpressionInClosure__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:13144:2: rule__XExpressionInClosure__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:13340:1: ( rule__XExpressionInClosure__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:13341:2: rule__XExpressionInClosure__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__Group_1__1__Impl();
@@ -43655,33 +44280,33 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:13150:1: rule__XExpressionInClosure__Group_1__1__Impl : ( ( ';' )? ) ;
+    // InternalPerspectiveDsl.g:13347:1: rule__XExpressionInClosure__Group_1__1__Impl : ( ( ';' )? ) ;
     public final void rule__XExpressionInClosure__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13154:1: ( ( ( ';' )? ) )
-            // InternalPerspectiveDsl.g:13155:1: ( ( ';' )? )
+            // InternalPerspectiveDsl.g:13351:1: ( ( ( ';' )? ) )
+            // InternalPerspectiveDsl.g:13352:1: ( ( ';' )? )
             {
-            // InternalPerspectiveDsl.g:13155:1: ( ( ';' )? )
-            // InternalPerspectiveDsl.g:13156:2: ( ';' )?
+            // InternalPerspectiveDsl.g:13352:1: ( ( ';' )? )
+            // InternalPerspectiveDsl.g:13353:2: ( ';' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1()); 
             }
-            // InternalPerspectiveDsl.g:13157:2: ( ';' )?
+            // InternalPerspectiveDsl.g:13354:2: ( ';' )?
             int alt95=2;
             int LA95_0 = input.LA(1);
 
-            if ( (LA95_0==87) ) {
+            if ( (LA95_0==89) ) {
                 alt95=1;
             }
             switch (alt95) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:13157:3: ';'
+                    // InternalPerspectiveDsl.g:13354:3: ';'
                     {
-                    match(input,87,FOLLOW_2); if (state.failed) return ;
+                    match(input,89,FOLLOW_2); if (state.failed) return ;
 
                     }
                     break;
@@ -43713,16 +44338,16 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__0"
-    // InternalPerspectiveDsl.g:13166:1: rule__XShortClosure__Group__0 : rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 ;
+    // InternalPerspectiveDsl.g:13363: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:13170:1: ( rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 )
-            // InternalPerspectiveDsl.g:13171:2: rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1
+            // InternalPerspectiveDsl.g:13367:1: ( rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 )
+            // InternalPerspectiveDsl.g:13368:2: rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XShortClosure__Group__0__Impl();
 
             state._fsp--;
@@ -43751,23 +44376,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__0__Impl"
-    // InternalPerspectiveDsl.g:13178:1: rule__XShortClosure__Group__0__Impl : ( ( rule__XShortClosure__Group_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:13375: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:13182:1: ( ( ( rule__XShortClosure__Group_0__0 ) ) )
-            // InternalPerspectiveDsl.g:13183:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:13379:1: ( ( ( rule__XShortClosure__Group_0__0 ) ) )
+            // InternalPerspectiveDsl.g:13380:1: ( ( rule__XShortClosure__Group_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:13183:1: ( ( rule__XShortClosure__Group_0__0 ) )
-            // InternalPerspectiveDsl.g:13184:2: ( rule__XShortClosure__Group_0__0 )
+            // InternalPerspectiveDsl.g:13380:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:13381:2: ( rule__XShortClosure__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0()); 
             }
-            // InternalPerspectiveDsl.g:13185:2: ( rule__XShortClosure__Group_0__0 )
-            // InternalPerspectiveDsl.g:13185:3: rule__XShortClosure__Group_0__0
+            // InternalPerspectiveDsl.g:13382:2: ( rule__XShortClosure__Group_0__0 )
+            // InternalPerspectiveDsl.g:13382:3: rule__XShortClosure__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0__0();
@@ -43802,14 +44427,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__1"
-    // InternalPerspectiveDsl.g:13193:1: rule__XShortClosure__Group__1 : rule__XShortClosure__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:13390: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:13197:1: ( rule__XShortClosure__Group__1__Impl )
-            // InternalPerspectiveDsl.g:13198:2: rule__XShortClosure__Group__1__Impl
+            // InternalPerspectiveDsl.g:13394:1: ( rule__XShortClosure__Group__1__Impl )
+            // InternalPerspectiveDsl.g:13395:2: rule__XShortClosure__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group__1__Impl();
@@ -43835,23 +44460,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__1__Impl"
-    // InternalPerspectiveDsl.g:13204:1: rule__XShortClosure__Group__1__Impl : ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:13401: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:13208:1: ( ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:13209:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            // InternalPerspectiveDsl.g:13405:1: ( ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:13406:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:13209:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
-            // InternalPerspectiveDsl.g:13210:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            // InternalPerspectiveDsl.g:13406:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            // InternalPerspectiveDsl.g:13407:2: ( rule__XShortClosure__ExpressionAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:13211:2: ( rule__XShortClosure__ExpressionAssignment_1 )
-            // InternalPerspectiveDsl.g:13211:3: rule__XShortClosure__ExpressionAssignment_1
+            // InternalPerspectiveDsl.g:13408:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            // InternalPerspectiveDsl.g:13408:3: rule__XShortClosure__ExpressionAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__ExpressionAssignment_1();
@@ -43886,14 +44511,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0__0"
-    // InternalPerspectiveDsl.g:13220:1: rule__XShortClosure__Group_0__0 : rule__XShortClosure__Group_0__0__Impl ;
+    // InternalPerspectiveDsl.g:13417: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:13224:1: ( rule__XShortClosure__Group_0__0__Impl )
-            // InternalPerspectiveDsl.g:13225:2: rule__XShortClosure__Group_0__0__Impl
+            // InternalPerspectiveDsl.g:13421:1: ( rule__XShortClosure__Group_0__0__Impl )
+            // InternalPerspectiveDsl.g:13422:2: rule__XShortClosure__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0__0__Impl();
@@ -43919,23 +44544,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:13231:1: rule__XShortClosure__Group_0__0__Impl : ( ( rule__XShortClosure__Group_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:13428: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:13235:1: ( ( ( rule__XShortClosure__Group_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:13236:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:13432:1: ( ( ( rule__XShortClosure__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:13433:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:13236:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
-            // InternalPerspectiveDsl.g:13237:2: ( rule__XShortClosure__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:13433:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:13434:2: ( rule__XShortClosure__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0_0()); 
             }
-            // InternalPerspectiveDsl.g:13238:2: ( rule__XShortClosure__Group_0_0__0 )
-            // InternalPerspectiveDsl.g:13238:3: rule__XShortClosure__Group_0_0__0
+            // InternalPerspectiveDsl.g:13435:2: ( rule__XShortClosure__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:13435:3: rule__XShortClosure__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0__0();
@@ -43970,16 +44595,16 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__0"
-    // InternalPerspectiveDsl.g:13247:1: rule__XShortClosure__Group_0_0__0 : rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 ;
+    // InternalPerspectiveDsl.g:13444: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:13251:1: ( rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 )
-            // InternalPerspectiveDsl.g:13252:2: rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1
+            // InternalPerspectiveDsl.g:13448:1: ( rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 )
+            // InternalPerspectiveDsl.g:13449:2: rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1
             {
-            pushFollow(FOLLOW_95);
+            pushFollow(FOLLOW_97);
             rule__XShortClosure__Group_0_0__0__Impl();
 
             state._fsp--;
@@ -44008,23 +44633,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:13259:1: rule__XShortClosure__Group_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:13456: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:13263:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:13264:1: ( () )
+            // InternalPerspectiveDsl.g:13460:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:13461:1: ( () )
             {
-            // InternalPerspectiveDsl.g:13264:1: ( () )
-            // InternalPerspectiveDsl.g:13265:2: ()
+            // InternalPerspectiveDsl.g:13461:1: ( () )
+            // InternalPerspectiveDsl.g:13462:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:13266:2: ()
-            // InternalPerspectiveDsl.g:13266:3: 
+            // InternalPerspectiveDsl.g:13463:2: ()
+            // InternalPerspectiveDsl.g:13463:3: 
             {
             }
 
@@ -44049,16 +44674,16 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__1"
-    // InternalPerspectiveDsl.g:13274:1: rule__XShortClosure__Group_0_0__1 : rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 ;
+    // InternalPerspectiveDsl.g:13471: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:13278:1: ( rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 )
-            // InternalPerspectiveDsl.g:13279:2: rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2
+            // InternalPerspectiveDsl.g:13475:1: ( rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 )
+            // InternalPerspectiveDsl.g:13476:2: rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2
             {
-            pushFollow(FOLLOW_95);
+            pushFollow(FOLLOW_97);
             rule__XShortClosure__Group_0_0__1__Impl();
 
             state._fsp--;
@@ -44087,31 +44712,31 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:13286:1: rule__XShortClosure__Group_0_0__1__Impl : ( ( rule__XShortClosure__Group_0_0_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:13483: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:13290:1: ( ( ( rule__XShortClosure__Group_0_0_1__0 )? ) )
-            // InternalPerspectiveDsl.g:13291:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            // InternalPerspectiveDsl.g:13487:1: ( ( ( rule__XShortClosure__Group_0_0_1__0 )? ) )
+            // InternalPerspectiveDsl.g:13488:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:13291:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
-            // InternalPerspectiveDsl.g:13292:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            // InternalPerspectiveDsl.g:13488:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            // InternalPerspectiveDsl.g:13489:2: ( rule__XShortClosure__Group_0_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:13293:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            // InternalPerspectiveDsl.g:13490:2: ( rule__XShortClosure__Group_0_0_1__0 )?
             int alt96=2;
             int LA96_0 = input.LA(1);
 
-            if ( (LA96_0==RULE_ID||LA96_0==31||LA96_0==89) ) {
+            if ( (LA96_0==RULE_ID||LA96_0==31||LA96_0==91) ) {
                 alt96=1;
             }
             switch (alt96) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:13293:3: rule__XShortClosure__Group_0_0_1__0
+                    // InternalPerspectiveDsl.g:13490:3: rule__XShortClosure__Group_0_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XShortClosure__Group_0_0_1__0();
@@ -44149,14 +44774,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__2"
-    // InternalPerspectiveDsl.g:13301:1: rule__XShortClosure__Group_0_0__2 : rule__XShortClosure__Group_0_0__2__Impl ;
+    // InternalPerspectiveDsl.g:13498: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:13305:1: ( rule__XShortClosure__Group_0_0__2__Impl )
-            // InternalPerspectiveDsl.g:13306:2: rule__XShortClosure__Group_0_0__2__Impl
+            // InternalPerspectiveDsl.g:13502:1: ( rule__XShortClosure__Group_0_0__2__Impl )
+            // InternalPerspectiveDsl.g:13503:2: rule__XShortClosure__Group_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0__2__Impl();
@@ -44182,23 +44807,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__2__Impl"
-    // InternalPerspectiveDsl.g:13312:1: rule__XShortClosure__Group_0_0__2__Impl : ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) ;
+    // InternalPerspectiveDsl.g:13509: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:13316:1: ( ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) )
-            // InternalPerspectiveDsl.g:13317:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            // InternalPerspectiveDsl.g:13513:1: ( ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) )
+            // InternalPerspectiveDsl.g:13514:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
             {
-            // InternalPerspectiveDsl.g:13317:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
-            // InternalPerspectiveDsl.g:13318:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            // InternalPerspectiveDsl.g:13514:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            // InternalPerspectiveDsl.g:13515:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2()); 
             }
-            // InternalPerspectiveDsl.g:13319:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
-            // InternalPerspectiveDsl.g:13319:3: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2
+            // InternalPerspectiveDsl.g:13516:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            // InternalPerspectiveDsl.g:13516:3: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2();
@@ -44233,16 +44858,16 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__0"
-    // InternalPerspectiveDsl.g:13328: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:13525: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:13332:1: ( rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 )
-            // InternalPerspectiveDsl.g:13333:2: rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1
+            // InternalPerspectiveDsl.g:13529:1: ( rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 )
+            // InternalPerspectiveDsl.g:13530:2: rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__XShortClosure__Group_0_0_1__0__Impl();
 
             state._fsp--;
@@ -44271,23 +44896,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:13340:1: rule__XShortClosure__Group_0_0_1__0__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:13537: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:13344:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) )
-            // InternalPerspectiveDsl.g:13345:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            // InternalPerspectiveDsl.g:13541:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) )
+            // InternalPerspectiveDsl.g:13542:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:13345:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
-            // InternalPerspectiveDsl.g:13346:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            // InternalPerspectiveDsl.g:13542:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            // InternalPerspectiveDsl.g:13543:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:13347:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
-            // InternalPerspectiveDsl.g:13347:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0
+            // InternalPerspectiveDsl.g:13544:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            // InternalPerspectiveDsl.g:13544:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0();
@@ -44322,14 +44947,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__1"
-    // InternalPerspectiveDsl.g:13355:1: rule__XShortClosure__Group_0_0_1__1 : rule__XShortClosure__Group_0_0_1__1__Impl ;
+    // InternalPerspectiveDsl.g:13552: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:13359:1: ( rule__XShortClosure__Group_0_0_1__1__Impl )
-            // InternalPerspectiveDsl.g:13360:2: rule__XShortClosure__Group_0_0_1__1__Impl
+            // InternalPerspectiveDsl.g:13556:1: ( rule__XShortClosure__Group_0_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:13557:2: rule__XShortClosure__Group_0_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0_1__1__Impl();
@@ -44355,37 +44980,37 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__1__Impl"
-    // InternalPerspectiveDsl.g:13366:1: rule__XShortClosure__Group_0_0_1__1__Impl : ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:13563: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:13370:1: ( ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:13371:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:13567:1: ( ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:13568:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:13371:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
-            // InternalPerspectiveDsl.g:13372:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:13568:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:13569:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1()); 
             }
-            // InternalPerspectiveDsl.g:13373:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:13570:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
             loop97:
             do {
                 int alt97=2;
                 int LA97_0 = input.LA(1);
 
-                if ( (LA97_0==91) ) {
+                if ( (LA97_0==93) ) {
                     alt97=1;
                 }
 
 
                 switch (alt97) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:13373:3: rule__XShortClosure__Group_0_0_1_1__0
+            	    // InternalPerspectiveDsl.g:13570:3: rule__XShortClosure__Group_0_0_1_1__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XShortClosure__Group_0_0_1_1__0();
 
             	    state._fsp--;
@@ -44424,16 +45049,16 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__0"
-    // InternalPerspectiveDsl.g:13382: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:13579: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:13386:1: ( rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 )
-            // InternalPerspectiveDsl.g:13387:2: rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1
+            // InternalPerspectiveDsl.g:13583:1: ( rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 )
+            // InternalPerspectiveDsl.g:13584:2: rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__XShortClosure__Group_0_0_1_1__0__Impl();
 
             state._fsp--;
@@ -44462,22 +45087,22 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:13394:1: rule__XShortClosure__Group_0_0_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:13591: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:13398:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:13399:1: ( ',' )
+            // InternalPerspectiveDsl.g:13595:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:13596:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:13399:1: ( ',' )
-            // InternalPerspectiveDsl.g:13400:2: ','
+            // InternalPerspectiveDsl.g:13596:1: ( ',' )
+            // InternalPerspectiveDsl.g:13597:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0()); 
             }
@@ -44503,14 +45128,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__1"
-    // InternalPerspectiveDsl.g:13409:1: rule__XShortClosure__Group_0_0_1_1__1 : rule__XShortClosure__Group_0_0_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:13606: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:13413:1: ( rule__XShortClosure__Group_0_0_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:13414:2: rule__XShortClosure__Group_0_0_1_1__1__Impl
+            // InternalPerspectiveDsl.g:13610:1: ( rule__XShortClosure__Group_0_0_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:13611:2: rule__XShortClosure__Group_0_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0_1_1__1__Impl();
@@ -44536,23 +45161,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:13420:1: rule__XShortClosure__Group_0_0_1_1__1__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:13617: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:13424:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:13425:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:13621:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:13622:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:13425:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
-            // InternalPerspectiveDsl.g:13426:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            // InternalPerspectiveDsl.g:13622:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:13623:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:13427:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
-            // InternalPerspectiveDsl.g:13427:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1
+            // InternalPerspectiveDsl.g:13624:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            // InternalPerspectiveDsl.g:13624:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1();
@@ -44587,16 +45212,16 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__0"
-    // InternalPerspectiveDsl.g:13436:1: rule__XParenthesizedExpression__Group__0 : rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:13633: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:13440:1: ( rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 )
-            // InternalPerspectiveDsl.g:13441:2: rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1
+            // InternalPerspectiveDsl.g:13637:1: ( rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 )
+            // InternalPerspectiveDsl.g:13638:2: rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XParenthesizedExpression__Group__0__Impl();
 
             state._fsp--;
@@ -44625,22 +45250,22 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:13448:1: rule__XParenthesizedExpression__Group__0__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:13645:1: rule__XParenthesizedExpression__Group__0__Impl : ( '(' ) ;
     public final void rule__XParenthesizedExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13452:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:13453:1: ( '(' )
+            // InternalPerspectiveDsl.g:13649:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:13650:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:13453:1: ( '(' )
-            // InternalPerspectiveDsl.g:13454:2: '('
+            // InternalPerspectiveDsl.g:13650:1: ( '(' )
+            // InternalPerspectiveDsl.g:13651:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()); 
             }
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()); 
             }
@@ -44666,16 +45291,16 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__1"
-    // InternalPerspectiveDsl.g:13463:1: rule__XParenthesizedExpression__Group__1 : rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:13660: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:13467:1: ( rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 )
-            // InternalPerspectiveDsl.g:13468:2: rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2
+            // InternalPerspectiveDsl.g:13664:1: ( rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 )
+            // InternalPerspectiveDsl.g:13665:2: rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2
             {
-            pushFollow(FOLLOW_97);
+            pushFollow(FOLLOW_99);
             rule__XParenthesizedExpression__Group__1__Impl();
 
             state._fsp--;
@@ -44704,17 +45329,17 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:13475:1: rule__XParenthesizedExpression__Group__1__Impl : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:13672:1: rule__XParenthesizedExpression__Group__1__Impl : ( ruleXExpression ) ;
     public final void rule__XParenthesizedExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13479:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:13480:1: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:13676:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:13677:1: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:13480:1: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:13481:2: ruleXExpression
+            // InternalPerspectiveDsl.g:13677:1: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:13678:2: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); 
@@ -44749,14 +45374,14 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__2"
-    // InternalPerspectiveDsl.g:13490:1: rule__XParenthesizedExpression__Group__2 : rule__XParenthesizedExpression__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:13687: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:13494:1: ( rule__XParenthesizedExpression__Group__2__Impl )
-            // InternalPerspectiveDsl.g:13495:2: rule__XParenthesizedExpression__Group__2__Impl
+            // InternalPerspectiveDsl.g:13691:1: ( rule__XParenthesizedExpression__Group__2__Impl )
+            // InternalPerspectiveDsl.g:13692:2: rule__XParenthesizedExpression__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XParenthesizedExpression__Group__2__Impl();
@@ -44782,22 +45407,22 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:13501:1: rule__XParenthesizedExpression__Group__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:13698:1: rule__XParenthesizedExpression__Group__2__Impl : ( ')' ) ;
     public final void rule__XParenthesizedExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13505:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:13506:1: ( ')' )
+            // InternalPerspectiveDsl.g:13702:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:13703:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:13506:1: ( ')' )
-            // InternalPerspectiveDsl.g:13507:2: ')'
+            // InternalPerspectiveDsl.g:13703:1: ( ')' )
+            // InternalPerspectiveDsl.g:13704:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
@@ -44823,16 +45448,16 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__0"
-    // InternalPerspectiveDsl.g:13517:1: rule__XIfExpression__Group__0 : rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:13714: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:13521:1: ( rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 )
-            // InternalPerspectiveDsl.g:13522:2: rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1
+            // InternalPerspectiveDsl.g:13718:1: ( rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 )
+            // InternalPerspectiveDsl.g:13719:2: rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1
             {
-            pushFollow(FOLLOW_98);
+            pushFollow(FOLLOW_100);
             rule__XIfExpression__Group__0__Impl();
 
             state._fsp--;
@@ -44861,23 +45486,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:13529:1: rule__XIfExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:13726:1: rule__XIfExpression__Group__0__Impl : ( () ) ;
     public final void rule__XIfExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13533:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:13534:1: ( () )
+            // InternalPerspectiveDsl.g:13730:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:13731:1: ( () )
             {
-            // InternalPerspectiveDsl.g:13534:1: ( () )
-            // InternalPerspectiveDsl.g:13535:2: ()
+            // InternalPerspectiveDsl.g:13731:1: ( () )
+            // InternalPerspectiveDsl.g:13732:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:13536:2: ()
-            // InternalPerspectiveDsl.g:13536:3: 
+            // InternalPerspectiveDsl.g:13733:2: ()
+            // InternalPerspectiveDsl.g:13733:3: 
             {
             }
 
@@ -44902,16 +45527,16 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__1"
-    // InternalPerspectiveDsl.g:13544:1: rule__XIfExpression__Group__1 : rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:13741: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:13548:1: ( rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 )
-            // InternalPerspectiveDsl.g:13549:2: rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2
+            // InternalPerspectiveDsl.g:13745:1: ( rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 )
+            // InternalPerspectiveDsl.g:13746:2: rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2
             {
-            pushFollow(FOLLOW_48);
+            pushFollow(FOLLOW_50);
             rule__XIfExpression__Group__1__Impl();
 
             state._fsp--;
@@ -44940,22 +45565,22 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:13556:1: rule__XIfExpression__Group__1__Impl : ( 'if' ) ;
+    // InternalPerspectiveDsl.g:13753:1: rule__XIfExpression__Group__1__Impl : ( 'if' ) ;
     public final void rule__XIfExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13560:1: ( ( 'if' ) )
-            // InternalPerspectiveDsl.g:13561:1: ( 'if' )
+            // InternalPerspectiveDsl.g:13757:1: ( ( 'if' ) )
+            // InternalPerspectiveDsl.g:13758:1: ( 'if' )
             {
-            // InternalPerspectiveDsl.g:13561:1: ( 'if' )
-            // InternalPerspectiveDsl.g:13562:2: 'if'
+            // InternalPerspectiveDsl.g:13758:1: ( 'if' )
+            // InternalPerspectiveDsl.g:13759:2: 'if'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getIfKeyword_1()); 
             }
-            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().getIfKeyword_1()); 
             }
@@ -44981,16 +45606,16 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__2"
-    // InternalPerspectiveDsl.g:13571:1: rule__XIfExpression__Group__2 : rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:13768: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:13575:1: ( rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 )
-            // InternalPerspectiveDsl.g:13576:2: rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3
+            // InternalPerspectiveDsl.g:13772:1: ( rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 )
+            // InternalPerspectiveDsl.g:13773:2: rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XIfExpression__Group__2__Impl();
 
             state._fsp--;
@@ -45019,22 +45644,22 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:13583:1: rule__XIfExpression__Group__2__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:13780:1: rule__XIfExpression__Group__2__Impl : ( '(' ) ;
     public final void rule__XIfExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13587:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:13588:1: ( '(' )
+            // InternalPerspectiveDsl.g:13784:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:13785:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:13588:1: ( '(' )
-            // InternalPerspectiveDsl.g:13589:2: '('
+            // InternalPerspectiveDsl.g:13785:1: ( '(' )
+            // InternalPerspectiveDsl.g:13786:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -45060,16 +45685,16 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__3"
-    // InternalPerspectiveDsl.g:13598:1: rule__XIfExpression__Group__3 : rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 ;
+    // InternalPerspectiveDsl.g:13795: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:13602:1: ( rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 )
-            // InternalPerspectiveDsl.g:13603:2: rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4
+            // InternalPerspectiveDsl.g:13799:1: ( rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 )
+            // InternalPerspectiveDsl.g:13800:2: rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4
             {
-            pushFollow(FOLLOW_97);
+            pushFollow(FOLLOW_99);
             rule__XIfExpression__Group__3__Impl();
 
             state._fsp--;
@@ -45098,23 +45723,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:13610:1: rule__XIfExpression__Group__3__Impl : ( ( rule__XIfExpression__IfAssignment_3 ) ) ;
+    // InternalPerspectiveDsl.g:13807: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:13614:1: ( ( ( rule__XIfExpression__IfAssignment_3 ) ) )
-            // InternalPerspectiveDsl.g:13615:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            // InternalPerspectiveDsl.g:13811:1: ( ( ( rule__XIfExpression__IfAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:13812:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
             {
-            // InternalPerspectiveDsl.g:13615:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
-            // InternalPerspectiveDsl.g:13616:2: ( rule__XIfExpression__IfAssignment_3 )
+            // InternalPerspectiveDsl.g:13812:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            // InternalPerspectiveDsl.g:13813:2: ( rule__XIfExpression__IfAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getIfAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:13617:2: ( rule__XIfExpression__IfAssignment_3 )
-            // InternalPerspectiveDsl.g:13617:3: rule__XIfExpression__IfAssignment_3
+            // InternalPerspectiveDsl.g:13814:2: ( rule__XIfExpression__IfAssignment_3 )
+            // InternalPerspectiveDsl.g:13814:3: rule__XIfExpression__IfAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__IfAssignment_3();
@@ -45149,16 +45774,16 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__4"
-    // InternalPerspectiveDsl.g:13625:1: rule__XIfExpression__Group__4 : rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 ;
+    // InternalPerspectiveDsl.g:13822: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:13629:1: ( rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 )
-            // InternalPerspectiveDsl.g:13630:2: rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5
+            // InternalPerspectiveDsl.g:13826:1: ( rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 )
+            // InternalPerspectiveDsl.g:13827:2: rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XIfExpression__Group__4__Impl();
 
             state._fsp--;
@@ -45187,22 +45812,22 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__4__Impl"
-    // InternalPerspectiveDsl.g:13637:1: rule__XIfExpression__Group__4__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:13834:1: rule__XIfExpression__Group__4__Impl : ( ')' ) ;
     public final void rule__XIfExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13641:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:13642:1: ( ')' )
+            // InternalPerspectiveDsl.g:13838:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:13839:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:13642:1: ( ')' )
-            // InternalPerspectiveDsl.g:13643:2: ')'
+            // InternalPerspectiveDsl.g:13839:1: ( ')' )
+            // InternalPerspectiveDsl.g:13840:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4()); 
             }
@@ -45228,16 +45853,16 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__5"
-    // InternalPerspectiveDsl.g:13652:1: rule__XIfExpression__Group__5 : rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 ;
+    // InternalPerspectiveDsl.g:13849: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:13656:1: ( rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 )
-            // InternalPerspectiveDsl.g:13657:2: rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6
+            // InternalPerspectiveDsl.g:13853:1: ( rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 )
+            // InternalPerspectiveDsl.g:13854:2: rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6
             {
-            pushFollow(FOLLOW_99);
+            pushFollow(FOLLOW_101);
             rule__XIfExpression__Group__5__Impl();
 
             state._fsp--;
@@ -45266,23 +45891,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__5__Impl"
-    // InternalPerspectiveDsl.g:13664:1: rule__XIfExpression__Group__5__Impl : ( ( rule__XIfExpression__ThenAssignment_5 ) ) ;
+    // InternalPerspectiveDsl.g:13861: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:13668:1: ( ( ( rule__XIfExpression__ThenAssignment_5 ) ) )
-            // InternalPerspectiveDsl.g:13669:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            // InternalPerspectiveDsl.g:13865:1: ( ( ( rule__XIfExpression__ThenAssignment_5 ) ) )
+            // InternalPerspectiveDsl.g:13866:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
             {
-            // InternalPerspectiveDsl.g:13669:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
-            // InternalPerspectiveDsl.g:13670:2: ( rule__XIfExpression__ThenAssignment_5 )
+            // InternalPerspectiveDsl.g:13866:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            // InternalPerspectiveDsl.g:13867:2: ( rule__XIfExpression__ThenAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getThenAssignment_5()); 
             }
-            // InternalPerspectiveDsl.g:13671:2: ( rule__XIfExpression__ThenAssignment_5 )
-            // InternalPerspectiveDsl.g:13671:3: rule__XIfExpression__ThenAssignment_5
+            // InternalPerspectiveDsl.g:13868:2: ( rule__XIfExpression__ThenAssignment_5 )
+            // InternalPerspectiveDsl.g:13868:3: rule__XIfExpression__ThenAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__ThenAssignment_5();
@@ -45317,14 +45942,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__6"
-    // InternalPerspectiveDsl.g:13679:1: rule__XIfExpression__Group__6 : rule__XIfExpression__Group__6__Impl ;
+    // InternalPerspectiveDsl.g:13876: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:13683:1: ( rule__XIfExpression__Group__6__Impl )
-            // InternalPerspectiveDsl.g:13684:2: rule__XIfExpression__Group__6__Impl
+            // InternalPerspectiveDsl.g:13880:1: ( rule__XIfExpression__Group__6__Impl )
+            // InternalPerspectiveDsl.g:13881:2: rule__XIfExpression__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__Group__6__Impl();
@@ -45350,35 +45975,35 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__6__Impl"
-    // InternalPerspectiveDsl.g:13690:1: rule__XIfExpression__Group__6__Impl : ( ( rule__XIfExpression__Group_6__0 )? ) ;
+    // InternalPerspectiveDsl.g:13887: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:13694:1: ( ( ( rule__XIfExpression__Group_6__0 )? ) )
-            // InternalPerspectiveDsl.g:13695:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            // InternalPerspectiveDsl.g:13891:1: ( ( ( rule__XIfExpression__Group_6__0 )? ) )
+            // InternalPerspectiveDsl.g:13892:1: ( ( rule__XIfExpression__Group_6__0 )? )
             {
-            // InternalPerspectiveDsl.g:13695:1: ( ( rule__XIfExpression__Group_6__0 )? )
-            // InternalPerspectiveDsl.g:13696:2: ( rule__XIfExpression__Group_6__0 )?
+            // InternalPerspectiveDsl.g:13892:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            // InternalPerspectiveDsl.g:13893:2: ( rule__XIfExpression__Group_6__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getGroup_6()); 
             }
-            // InternalPerspectiveDsl.g:13697:2: ( rule__XIfExpression__Group_6__0 )?
+            // InternalPerspectiveDsl.g:13894:2: ( rule__XIfExpression__Group_6__0 )?
             int alt98=2;
             int LA98_0 = input.LA(1);
 
-            if ( (LA98_0==98) ) {
+            if ( (LA98_0==100) ) {
                 int LA98_1 = input.LA(2);
 
-                if ( (synpred154_InternalPerspectiveDsl()) ) {
+                if ( (synpred156_InternalPerspectiveDsl()) ) {
                     alt98=1;
                 }
             }
             switch (alt98) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:13697:3: rule__XIfExpression__Group_6__0
+                    // InternalPerspectiveDsl.g:13894:3: rule__XIfExpression__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XIfExpression__Group_6__0();
@@ -45416,16 +46041,16 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__0"
-    // InternalPerspectiveDsl.g:13706:1: rule__XIfExpression__Group_6__0 : rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 ;
+    // InternalPerspectiveDsl.g:13903: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:13710:1: ( rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 )
-            // InternalPerspectiveDsl.g:13711:2: rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1
+            // InternalPerspectiveDsl.g:13907:1: ( rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 )
+            // InternalPerspectiveDsl.g:13908:2: rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XIfExpression__Group_6__0__Impl();
 
             state._fsp--;
@@ -45454,25 +46079,25 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__0__Impl"
-    // InternalPerspectiveDsl.g:13718:1: rule__XIfExpression__Group_6__0__Impl : ( ( 'else' ) ) ;
+    // InternalPerspectiveDsl.g:13915: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:13722:1: ( ( ( 'else' ) ) )
-            // InternalPerspectiveDsl.g:13723:1: ( ( 'else' ) )
+            // InternalPerspectiveDsl.g:13919:1: ( ( ( 'else' ) ) )
+            // InternalPerspectiveDsl.g:13920:1: ( ( 'else' ) )
             {
-            // InternalPerspectiveDsl.g:13723:1: ( ( 'else' ) )
-            // InternalPerspectiveDsl.g:13724:2: ( 'else' )
+            // InternalPerspectiveDsl.g:13920:1: ( ( 'else' ) )
+            // InternalPerspectiveDsl.g:13921:2: ( 'else' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0()); 
             }
-            // InternalPerspectiveDsl.g:13725:2: ( 'else' )
-            // InternalPerspectiveDsl.g:13725:3: 'else'
+            // InternalPerspectiveDsl.g:13922:2: ( 'else' )
+            // InternalPerspectiveDsl.g:13922:3: 'else'
             {
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -45501,14 +46126,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__1"
-    // InternalPerspectiveDsl.g:13733:1: rule__XIfExpression__Group_6__1 : rule__XIfExpression__Group_6__1__Impl ;
+    // InternalPerspectiveDsl.g:13930: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:13737:1: ( rule__XIfExpression__Group_6__1__Impl )
-            // InternalPerspectiveDsl.g:13738:2: rule__XIfExpression__Group_6__1__Impl
+            // InternalPerspectiveDsl.g:13934:1: ( rule__XIfExpression__Group_6__1__Impl )
+            // InternalPerspectiveDsl.g:13935:2: rule__XIfExpression__Group_6__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__Group_6__1__Impl();
@@ -45534,23 +46159,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__1__Impl"
-    // InternalPerspectiveDsl.g:13744:1: rule__XIfExpression__Group_6__1__Impl : ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) ;
+    // InternalPerspectiveDsl.g:13941: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:13748:1: ( ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) )
-            // InternalPerspectiveDsl.g:13749:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            // InternalPerspectiveDsl.g:13945:1: ( ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) )
+            // InternalPerspectiveDsl.g:13946:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
             {
-            // InternalPerspectiveDsl.g:13749:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
-            // InternalPerspectiveDsl.g:13750:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            // InternalPerspectiveDsl.g:13946:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            // InternalPerspectiveDsl.g:13947:2: ( rule__XIfExpression__ElseAssignment_6_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1()); 
             }
-            // InternalPerspectiveDsl.g:13751:2: ( rule__XIfExpression__ElseAssignment_6_1 )
-            // InternalPerspectiveDsl.g:13751:3: rule__XIfExpression__ElseAssignment_6_1
+            // InternalPerspectiveDsl.g:13948:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            // InternalPerspectiveDsl.g:13948:3: rule__XIfExpression__ElseAssignment_6_1
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__ElseAssignment_6_1();
@@ -45585,16 +46210,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__0"
-    // InternalPerspectiveDsl.g:13760:1: rule__XSwitchExpression__Group__0 : rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:13957: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:13764:1: ( rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 )
-            // InternalPerspectiveDsl.g:13765:2: rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1
+            // InternalPerspectiveDsl.g:13961:1: ( rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 )
+            // InternalPerspectiveDsl.g:13962:2: rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1
             {
-            pushFollow(FOLLOW_100);
+            pushFollow(FOLLOW_102);
             rule__XSwitchExpression__Group__0__Impl();
 
             state._fsp--;
@@ -45623,23 +46248,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:13772:1: rule__XSwitchExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:13969:1: rule__XSwitchExpression__Group__0__Impl : ( () ) ;
     public final void rule__XSwitchExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13776:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:13777:1: ( () )
+            // InternalPerspectiveDsl.g:13973:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:13974:1: ( () )
             {
-            // InternalPerspectiveDsl.g:13777:1: ( () )
-            // InternalPerspectiveDsl.g:13778:2: ()
+            // InternalPerspectiveDsl.g:13974:1: ( () )
+            // InternalPerspectiveDsl.g:13975:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:13779:2: ()
-            // InternalPerspectiveDsl.g:13779:3: 
+            // InternalPerspectiveDsl.g:13976:2: ()
+            // InternalPerspectiveDsl.g:13976:3: 
             {
             }
 
@@ -45664,16 +46289,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__1"
-    // InternalPerspectiveDsl.g:13787:1: rule__XSwitchExpression__Group__1 : rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:13984: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:13791:1: ( rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 )
-            // InternalPerspectiveDsl.g:13792:2: rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2
+            // InternalPerspectiveDsl.g:13988:1: ( rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 )
+            // InternalPerspectiveDsl.g:13989:2: rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2
             {
-            pushFollow(FOLLOW_101);
+            pushFollow(FOLLOW_103);
             rule__XSwitchExpression__Group__1__Impl();
 
             state._fsp--;
@@ -45702,22 +46327,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:13799:1: rule__XSwitchExpression__Group__1__Impl : ( 'switch' ) ;
+    // InternalPerspectiveDsl.g:13996:1: rule__XSwitchExpression__Group__1__Impl : ( 'switch' ) ;
     public final void rule__XSwitchExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13803:1: ( ( 'switch' ) )
-            // InternalPerspectiveDsl.g:13804:1: ( 'switch' )
+            // InternalPerspectiveDsl.g:14000:1: ( ( 'switch' ) )
+            // InternalPerspectiveDsl.g:14001:1: ( 'switch' )
             {
-            // InternalPerspectiveDsl.g:13804:1: ( 'switch' )
-            // InternalPerspectiveDsl.g:13805:2: 'switch'
+            // InternalPerspectiveDsl.g:14001:1: ( 'switch' )
+            // InternalPerspectiveDsl.g:14002:2: 'switch'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_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.getXSwitchExpressionAccess().getSwitchKeyword_1()); 
             }
@@ -45743,14 +46368,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__2"
-    // InternalPerspectiveDsl.g:13814:1: rule__XSwitchExpression__Group__2 : rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:14011: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:13818:1: ( rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 )
-            // InternalPerspectiveDsl.g:13819:2: rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3
+            // InternalPerspectiveDsl.g:14015:1: ( rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 )
+            // InternalPerspectiveDsl.g:14016:2: rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3
             {
             pushFollow(FOLLOW_8);
             rule__XSwitchExpression__Group__2__Impl();
@@ -45781,23 +46406,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:13826:1: rule__XSwitchExpression__Group__2__Impl : ( ( rule__XSwitchExpression__Alternatives_2 ) ) ;
+    // InternalPerspectiveDsl.g:14023: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:13830:1: ( ( ( rule__XSwitchExpression__Alternatives_2 ) ) )
-            // InternalPerspectiveDsl.g:13831:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            // InternalPerspectiveDsl.g:14027:1: ( ( ( rule__XSwitchExpression__Alternatives_2 ) ) )
+            // InternalPerspectiveDsl.g:14028:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
             {
-            // InternalPerspectiveDsl.g:13831:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
-            // InternalPerspectiveDsl.g:13832:2: ( rule__XSwitchExpression__Alternatives_2 )
+            // InternalPerspectiveDsl.g:14028:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            // InternalPerspectiveDsl.g:14029:2: ( rule__XSwitchExpression__Alternatives_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getAlternatives_2()); 
             }
-            // InternalPerspectiveDsl.g:13833:2: ( rule__XSwitchExpression__Alternatives_2 )
-            // InternalPerspectiveDsl.g:13833:3: rule__XSwitchExpression__Alternatives_2
+            // InternalPerspectiveDsl.g:14030:2: ( rule__XSwitchExpression__Alternatives_2 )
+            // InternalPerspectiveDsl.g:14030:3: rule__XSwitchExpression__Alternatives_2
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Alternatives_2();
@@ -45832,16 +46457,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__3"
-    // InternalPerspectiveDsl.g:13841:1: rule__XSwitchExpression__Group__3 : rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 ;
+    // InternalPerspectiveDsl.g:14038: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:13845:1: ( rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 )
-            // InternalPerspectiveDsl.g:13846:2: rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4
+            // InternalPerspectiveDsl.g:14042:1: ( rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 )
+            // InternalPerspectiveDsl.g:14043:2: rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4
             {
-            pushFollow(FOLLOW_102);
+            pushFollow(FOLLOW_104);
             rule__XSwitchExpression__Group__3__Impl();
 
             state._fsp--;
@@ -45870,17 +46495,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:13853:1: rule__XSwitchExpression__Group__3__Impl : ( '{' ) ;
+    // InternalPerspectiveDsl.g:14050:1: rule__XSwitchExpression__Group__3__Impl : ( '{' ) ;
     public final void rule__XSwitchExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13857:1: ( ( '{' ) )
-            // InternalPerspectiveDsl.g:13858:1: ( '{' )
+            // InternalPerspectiveDsl.g:14054:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:14055:1: ( '{' )
             {
-            // InternalPerspectiveDsl.g:13858:1: ( '{' )
-            // InternalPerspectiveDsl.g:13859:2: '{'
+            // InternalPerspectiveDsl.g:14055:1: ( '{' )
+            // InternalPerspectiveDsl.g:14056:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3()); 
@@ -45911,16 +46536,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__4"
-    // InternalPerspectiveDsl.g:13868:1: rule__XSwitchExpression__Group__4 : rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 ;
+    // InternalPerspectiveDsl.g:14065: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:13872:1: ( rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 )
-            // InternalPerspectiveDsl.g:13873:2: rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5
+            // InternalPerspectiveDsl.g:14069:1: ( rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 )
+            // InternalPerspectiveDsl.g:14070:2: rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5
             {
-            pushFollow(FOLLOW_102);
+            pushFollow(FOLLOW_104);
             rule__XSwitchExpression__Group__4__Impl();
 
             state._fsp--;
@@ -45949,37 +46574,37 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__4__Impl"
-    // InternalPerspectiveDsl.g:13880:1: rule__XSwitchExpression__Group__4__Impl : ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) ;
+    // InternalPerspectiveDsl.g:14077: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:13884:1: ( ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) )
-            // InternalPerspectiveDsl.g:13885:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            // InternalPerspectiveDsl.g:14081:1: ( ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) )
+            // InternalPerspectiveDsl.g:14082:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
             {
-            // InternalPerspectiveDsl.g:13885:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
-            // InternalPerspectiveDsl.g:13886:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            // InternalPerspectiveDsl.g:14082:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            // InternalPerspectiveDsl.g:14083:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4()); 
             }
-            // InternalPerspectiveDsl.g:13887:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            // InternalPerspectiveDsl.g:14084:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
             loop99:
             do {
                 int alt99=2;
                 int LA99_0 = input.LA(1);
 
-                if ( (LA99_0==RULE_ID||LA99_0==31||LA99_0==89||LA99_0==91||LA99_0==100||LA99_0==102) ) {
+                if ( (LA99_0==RULE_ID||LA99_0==31||LA99_0==91||LA99_0==93||LA99_0==102||LA99_0==104) ) {
                     alt99=1;
                 }
 
 
                 switch (alt99) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:13887:3: rule__XSwitchExpression__CasesAssignment_4
+            	    // InternalPerspectiveDsl.g:14084:3: rule__XSwitchExpression__CasesAssignment_4
             	    {
-            	    pushFollow(FOLLOW_103);
+            	    pushFollow(FOLLOW_105);
             	    rule__XSwitchExpression__CasesAssignment_4();
 
             	    state._fsp--;
@@ -46018,16 +46643,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__5"
-    // InternalPerspectiveDsl.g:13895:1: rule__XSwitchExpression__Group__5 : rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 ;
+    // InternalPerspectiveDsl.g:14092: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:13899:1: ( rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 )
-            // InternalPerspectiveDsl.g:13900:2: rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6
+            // InternalPerspectiveDsl.g:14096:1: ( rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 )
+            // InternalPerspectiveDsl.g:14097:2: rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6
             {
-            pushFollow(FOLLOW_102);
+            pushFollow(FOLLOW_104);
             rule__XSwitchExpression__Group__5__Impl();
 
             state._fsp--;
@@ -46056,31 +46681,31 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__5__Impl"
-    // InternalPerspectiveDsl.g:13907:1: rule__XSwitchExpression__Group__5__Impl : ( ( rule__XSwitchExpression__Group_5__0 )? ) ;
+    // InternalPerspectiveDsl.g:14104: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:13911:1: ( ( ( rule__XSwitchExpression__Group_5__0 )? ) )
-            // InternalPerspectiveDsl.g:13912:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            // InternalPerspectiveDsl.g:14108:1: ( ( ( rule__XSwitchExpression__Group_5__0 )? ) )
+            // InternalPerspectiveDsl.g:14109:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
             {
-            // InternalPerspectiveDsl.g:13912:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
-            // InternalPerspectiveDsl.g:13913:2: ( rule__XSwitchExpression__Group_5__0 )?
+            // InternalPerspectiveDsl.g:14109:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            // InternalPerspectiveDsl.g:14110:2: ( rule__XSwitchExpression__Group_5__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_5()); 
             }
-            // InternalPerspectiveDsl.g:13914:2: ( rule__XSwitchExpression__Group_5__0 )?
+            // InternalPerspectiveDsl.g:14111:2: ( rule__XSwitchExpression__Group_5__0 )?
             int alt100=2;
             int LA100_0 = input.LA(1);
 
-            if ( (LA100_0==101) ) {
+            if ( (LA100_0==103) ) {
                 alt100=1;
             }
             switch (alt100) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:13914:3: rule__XSwitchExpression__Group_5__0
+                    // InternalPerspectiveDsl.g:14111:3: rule__XSwitchExpression__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_5__0();
@@ -46118,14 +46743,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__6"
-    // InternalPerspectiveDsl.g:13922:1: rule__XSwitchExpression__Group__6 : rule__XSwitchExpression__Group__6__Impl ;
+    // InternalPerspectiveDsl.g:14119: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:13926:1: ( rule__XSwitchExpression__Group__6__Impl )
-            // InternalPerspectiveDsl.g:13927:2: rule__XSwitchExpression__Group__6__Impl
+            // InternalPerspectiveDsl.g:14123:1: ( rule__XSwitchExpression__Group__6__Impl )
+            // InternalPerspectiveDsl.g:14124:2: rule__XSwitchExpression__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group__6__Impl();
@@ -46151,17 +46776,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__6__Impl"
-    // InternalPerspectiveDsl.g:13933:1: rule__XSwitchExpression__Group__6__Impl : ( '}' ) ;
+    // InternalPerspectiveDsl.g:14130:1: rule__XSwitchExpression__Group__6__Impl : ( '}' ) ;
     public final void rule__XSwitchExpression__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13937:1: ( ( '}' ) )
-            // InternalPerspectiveDsl.g:13938:1: ( '}' )
+            // InternalPerspectiveDsl.g:14134:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:14135:1: ( '}' )
             {
-            // InternalPerspectiveDsl.g:13938:1: ( '}' )
-            // InternalPerspectiveDsl.g:13939:2: '}'
+            // InternalPerspectiveDsl.g:14135:1: ( '}' )
+            // InternalPerspectiveDsl.g:14136:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6()); 
@@ -46192,16 +46817,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__0"
-    // InternalPerspectiveDsl.g:13949:1: rule__XSwitchExpression__Group_2_0__0 : rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 ;
+    // InternalPerspectiveDsl.g:14146: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:13953:1: ( rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 )
-            // InternalPerspectiveDsl.g:13954:2: rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1
+            // InternalPerspectiveDsl.g:14150:1: ( rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 )
+            // InternalPerspectiveDsl.g:14151:2: rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XSwitchExpression__Group_2_0__0__Impl();
 
             state._fsp--;
@@ -46230,23 +46855,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__0__Impl"
-    // InternalPerspectiveDsl.g:13961:1: rule__XSwitchExpression__Group_2_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:14158: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:13965:1: ( ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:13966:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14162:1: ( ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:14163:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:13966:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
-            // InternalPerspectiveDsl.g:13967:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            // InternalPerspectiveDsl.g:14163:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14164:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0()); 
             }
-            // InternalPerspectiveDsl.g:13968:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
-            // InternalPerspectiveDsl.g:13968:3: rule__XSwitchExpression__Group_2_0_0__0
+            // InternalPerspectiveDsl.g:14165:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            // InternalPerspectiveDsl.g:14165:3: rule__XSwitchExpression__Group_2_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0__0();
@@ -46281,16 +46906,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__1"
-    // InternalPerspectiveDsl.g:13976:1: rule__XSwitchExpression__Group_2_0__1 : rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 ;
+    // InternalPerspectiveDsl.g:14173: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:13980:1: ( rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 )
-            // InternalPerspectiveDsl.g:13981:2: rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2
+            // InternalPerspectiveDsl.g:14177:1: ( rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 )
+            // InternalPerspectiveDsl.g:14178:2: rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2
             {
-            pushFollow(FOLLOW_97);
+            pushFollow(FOLLOW_99);
             rule__XSwitchExpression__Group_2_0__1__Impl();
 
             state._fsp--;
@@ -46319,23 +46944,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__1__Impl"
-    // InternalPerspectiveDsl.g:13988:1: rule__XSwitchExpression__Group_2_0__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:14185: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:13992:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) )
-            // InternalPerspectiveDsl.g:13993:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            // InternalPerspectiveDsl.g:14189:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) )
+            // InternalPerspectiveDsl.g:14190:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:13993:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
-            // InternalPerspectiveDsl.g:13994:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            // InternalPerspectiveDsl.g:14190:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            // InternalPerspectiveDsl.g:14191:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1()); 
             }
-            // InternalPerspectiveDsl.g:13995:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
-            // InternalPerspectiveDsl.g:13995:3: rule__XSwitchExpression__SwitchAssignment_2_0_1
+            // InternalPerspectiveDsl.g:14192:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            // InternalPerspectiveDsl.g:14192:3: rule__XSwitchExpression__SwitchAssignment_2_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__SwitchAssignment_2_0_1();
@@ -46370,14 +46995,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__2"
-    // InternalPerspectiveDsl.g:14003:1: rule__XSwitchExpression__Group_2_0__2 : rule__XSwitchExpression__Group_2_0__2__Impl ;
+    // InternalPerspectiveDsl.g:14200: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:14007:1: ( rule__XSwitchExpression__Group_2_0__2__Impl )
-            // InternalPerspectiveDsl.g:14008:2: rule__XSwitchExpression__Group_2_0__2__Impl
+            // InternalPerspectiveDsl.g:14204:1: ( rule__XSwitchExpression__Group_2_0__2__Impl )
+            // InternalPerspectiveDsl.g:14205:2: rule__XSwitchExpression__Group_2_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0__2__Impl();
@@ -46403,22 +47028,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__2__Impl"
-    // InternalPerspectiveDsl.g:14014:1: rule__XSwitchExpression__Group_2_0__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:14211: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:14018:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:14019:1: ( ')' )
+            // InternalPerspectiveDsl.g:14215:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:14216:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:14019:1: ( ')' )
-            // InternalPerspectiveDsl.g:14020:2: ')'
+            // InternalPerspectiveDsl.g:14216:1: ( ')' )
+            // InternalPerspectiveDsl.g:14217:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2()); 
             }
@@ -46444,14 +47069,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0__0"
-    // InternalPerspectiveDsl.g:14030:1: rule__XSwitchExpression__Group_2_0_0__0 : rule__XSwitchExpression__Group_2_0_0__0__Impl ;
+    // InternalPerspectiveDsl.g:14227: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:14034:1: ( rule__XSwitchExpression__Group_2_0_0__0__Impl )
-            // InternalPerspectiveDsl.g:14035:2: rule__XSwitchExpression__Group_2_0_0__0__Impl
+            // InternalPerspectiveDsl.g:14231:1: ( rule__XSwitchExpression__Group_2_0_0__0__Impl )
+            // InternalPerspectiveDsl.g:14232:2: rule__XSwitchExpression__Group_2_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0__0__Impl();
@@ -46477,23 +47102,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:14041:1: rule__XSwitchExpression__Group_2_0_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:14238: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:14045:1: ( ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:14046:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14242:1: ( ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:14243:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:14046:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
-            // InternalPerspectiveDsl.g:14047:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            // InternalPerspectiveDsl.g:14243:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14244:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:14048:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
-            // InternalPerspectiveDsl.g:14048:3: rule__XSwitchExpression__Group_2_0_0_0__0
+            // InternalPerspectiveDsl.g:14245:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            // InternalPerspectiveDsl.g:14245:3: rule__XSwitchExpression__Group_2_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0_0__0();
@@ -46528,16 +47153,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__0"
-    // InternalPerspectiveDsl.g:14057: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:14254: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:14061:1: ( rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 )
-            // InternalPerspectiveDsl.g:14062:2: rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1
+            // InternalPerspectiveDsl.g:14258:1: ( rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 )
+            // InternalPerspectiveDsl.g:14259:2: rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__XSwitchExpression__Group_2_0_0_0__0__Impl();
 
             state._fsp--;
@@ -46566,22 +47191,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:14069:1: rule__XSwitchExpression__Group_2_0_0_0__0__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:14266: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:14073:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:14074:1: ( '(' )
+            // InternalPerspectiveDsl.g:14270:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:14271:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:14074:1: ( '(' )
-            // InternalPerspectiveDsl.g:14075:2: '('
+            // InternalPerspectiveDsl.g:14271:1: ( '(' )
+            // InternalPerspectiveDsl.g:14272:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0()); 
             }
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0()); 
             }
@@ -46607,16 +47232,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__1"
-    // InternalPerspectiveDsl.g:14084: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:14281: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:14088:1: ( rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 )
-            // InternalPerspectiveDsl.g:14089:2: rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2
+            // InternalPerspectiveDsl.g:14285:1: ( rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 )
+            // InternalPerspectiveDsl.g:14286:2: rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2
             {
-            pushFollow(FOLLOW_104);
+            pushFollow(FOLLOW_106);
             rule__XSwitchExpression__Group_2_0_0_0__1__Impl();
 
             state._fsp--;
@@ -46645,23 +47270,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:14096:1: rule__XSwitchExpression__Group_2_0_0_0__1__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:14293: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:14100:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:14101:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            // InternalPerspectiveDsl.g:14297:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:14298:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:14101:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
-            // InternalPerspectiveDsl.g:14102:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            // InternalPerspectiveDsl.g:14298:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            // InternalPerspectiveDsl.g:14299:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:14103:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
-            // InternalPerspectiveDsl.g:14103:3: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1
+            // InternalPerspectiveDsl.g:14300:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            // InternalPerspectiveDsl.g:14300:3: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1();
@@ -46696,14 +47321,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__2"
-    // InternalPerspectiveDsl.g:14111:1: rule__XSwitchExpression__Group_2_0_0_0__2 : rule__XSwitchExpression__Group_2_0_0_0__2__Impl ;
+    // InternalPerspectiveDsl.g:14308: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:14115:1: ( rule__XSwitchExpression__Group_2_0_0_0__2__Impl )
-            // InternalPerspectiveDsl.g:14116:2: rule__XSwitchExpression__Group_2_0_0_0__2__Impl
+            // InternalPerspectiveDsl.g:14312:1: ( rule__XSwitchExpression__Group_2_0_0_0__2__Impl )
+            // InternalPerspectiveDsl.g:14313:2: rule__XSwitchExpression__Group_2_0_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0_0__2__Impl();
@@ -46729,22 +47354,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__2__Impl"
-    // InternalPerspectiveDsl.g:14122:1: rule__XSwitchExpression__Group_2_0_0_0__2__Impl : ( ':' ) ;
+    // InternalPerspectiveDsl.g:14319: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:14126:1: ( ( ':' ) )
-            // InternalPerspectiveDsl.g:14127:1: ( ':' )
+            // InternalPerspectiveDsl.g:14323:1: ( ( ':' ) )
+            // InternalPerspectiveDsl.g:14324:1: ( ':' )
             {
-            // InternalPerspectiveDsl.g:14127:1: ( ':' )
-            // InternalPerspectiveDsl.g:14128:2: ':'
+            // InternalPerspectiveDsl.g:14324:1: ( ':' )
+            // InternalPerspectiveDsl.g:14325:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2()); 
             }
-            match(input,100,FOLLOW_2); if (state.failed) return ;
+            match(input,102,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2()); 
             }
@@ -46770,16 +47395,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__0"
-    // InternalPerspectiveDsl.g:14138:1: rule__XSwitchExpression__Group_2_1__0 : rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 ;
+    // InternalPerspectiveDsl.g:14335: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:14142:1: ( rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 )
-            // InternalPerspectiveDsl.g:14143:2: rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1
+            // InternalPerspectiveDsl.g:14339:1: ( rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 )
+            // InternalPerspectiveDsl.g:14340:2: rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1
             {
-            pushFollow(FOLLOW_101);
+            pushFollow(FOLLOW_103);
             rule__XSwitchExpression__Group_2_1__0__Impl();
 
             state._fsp--;
@@ -46808,27 +47433,27 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__0__Impl"
-    // InternalPerspectiveDsl.g:14150:1: rule__XSwitchExpression__Group_2_1__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) ;
+    // InternalPerspectiveDsl.g:14347: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:14154:1: ( ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) )
-            // InternalPerspectiveDsl.g:14155:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            // InternalPerspectiveDsl.g:14351:1: ( ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) )
+            // InternalPerspectiveDsl.g:14352:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
             {
-            // InternalPerspectiveDsl.g:14155:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
-            // InternalPerspectiveDsl.g:14156:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            // InternalPerspectiveDsl.g:14352:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            // InternalPerspectiveDsl.g:14353:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0()); 
             }
-            // InternalPerspectiveDsl.g:14157:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            // InternalPerspectiveDsl.g:14354:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
             int alt101=2;
             alt101 = dfa101.predict(input);
             switch (alt101) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:14157:3: rule__XSwitchExpression__Group_2_1_0__0
+                    // InternalPerspectiveDsl.g:14354:3: rule__XSwitchExpression__Group_2_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_2_1_0__0();
@@ -46866,14 +47491,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__1"
-    // InternalPerspectiveDsl.g:14165:1: rule__XSwitchExpression__Group_2_1__1 : rule__XSwitchExpression__Group_2_1__1__Impl ;
+    // InternalPerspectiveDsl.g:14362: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:14169:1: ( rule__XSwitchExpression__Group_2_1__1__Impl )
-            // InternalPerspectiveDsl.g:14170:2: rule__XSwitchExpression__Group_2_1__1__Impl
+            // InternalPerspectiveDsl.g:14366:1: ( rule__XSwitchExpression__Group_2_1__1__Impl )
+            // InternalPerspectiveDsl.g:14367:2: rule__XSwitchExpression__Group_2_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1__1__Impl();
@@ -46899,23 +47524,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__1__Impl"
-    // InternalPerspectiveDsl.g:14176:1: rule__XSwitchExpression__Group_2_1__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:14373: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:14180:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) )
-            // InternalPerspectiveDsl.g:14181:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            // InternalPerspectiveDsl.g:14377:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) )
+            // InternalPerspectiveDsl.g:14378:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:14181:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
-            // InternalPerspectiveDsl.g:14182:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            // InternalPerspectiveDsl.g:14378:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            // InternalPerspectiveDsl.g:14379:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1()); 
             }
-            // InternalPerspectiveDsl.g:14183:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
-            // InternalPerspectiveDsl.g:14183:3: rule__XSwitchExpression__SwitchAssignment_2_1_1
+            // InternalPerspectiveDsl.g:14380:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            // InternalPerspectiveDsl.g:14380:3: rule__XSwitchExpression__SwitchAssignment_2_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__SwitchAssignment_2_1_1();
@@ -46950,14 +47575,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0__0"
-    // InternalPerspectiveDsl.g:14192:1: rule__XSwitchExpression__Group_2_1_0__0 : rule__XSwitchExpression__Group_2_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:14389: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:14196:1: ( rule__XSwitchExpression__Group_2_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:14197:2: rule__XSwitchExpression__Group_2_1_0__0__Impl
+            // InternalPerspectiveDsl.g:14393:1: ( rule__XSwitchExpression__Group_2_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:14394:2: rule__XSwitchExpression__Group_2_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1_0__0__Impl();
@@ -46983,23 +47608,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:14203:1: rule__XSwitchExpression__Group_2_1_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:14400: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:14207:1: ( ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:14208:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14404:1: ( ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:14405:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:14208:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:14209:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            // InternalPerspectiveDsl.g:14405:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14406:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:14210:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
-            // InternalPerspectiveDsl.g:14210:3: rule__XSwitchExpression__Group_2_1_0_0__0
+            // InternalPerspectiveDsl.g:14407:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            // InternalPerspectiveDsl.g:14407:3: rule__XSwitchExpression__Group_2_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1_0_0__0();
@@ -47034,16 +47659,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__0"
-    // InternalPerspectiveDsl.g:14219: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:14416: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:14223:1: ( rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 )
-            // InternalPerspectiveDsl.g:14224:2: rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1
+            // InternalPerspectiveDsl.g:14420:1: ( rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 )
+            // InternalPerspectiveDsl.g:14421:2: rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1
             {
-            pushFollow(FOLLOW_104);
+            pushFollow(FOLLOW_106);
             rule__XSwitchExpression__Group_2_1_0_0__0__Impl();
 
             state._fsp--;
@@ -47072,23 +47697,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:14231:1: rule__XSwitchExpression__Group_2_1_0_0__0__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) ;
+    // InternalPerspectiveDsl.g:14428: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:14235:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) )
-            // InternalPerspectiveDsl.g:14236:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            // InternalPerspectiveDsl.g:14432:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) )
+            // InternalPerspectiveDsl.g:14433:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
             {
-            // InternalPerspectiveDsl.g:14236:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
-            // InternalPerspectiveDsl.g:14237:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            // InternalPerspectiveDsl.g:14433:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            // InternalPerspectiveDsl.g:14434:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:14238:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
-            // InternalPerspectiveDsl.g:14238:3: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0
+            // InternalPerspectiveDsl.g:14435:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            // InternalPerspectiveDsl.g:14435:3: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0();
@@ -47123,14 +47748,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__1"
-    // InternalPerspectiveDsl.g:14246:1: rule__XSwitchExpression__Group_2_1_0_0__1 : rule__XSwitchExpression__Group_2_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:14443: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:14250:1: ( rule__XSwitchExpression__Group_2_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:14251:2: rule__XSwitchExpression__Group_2_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:14447:1: ( rule__XSwitchExpression__Group_2_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:14448:2: rule__XSwitchExpression__Group_2_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1_0_0__1__Impl();
@@ -47156,22 +47781,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:14257:1: rule__XSwitchExpression__Group_2_1_0_0__1__Impl : ( ':' ) ;
+    // InternalPerspectiveDsl.g:14454: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:14261:1: ( ( ':' ) )
-            // InternalPerspectiveDsl.g:14262:1: ( ':' )
+            // InternalPerspectiveDsl.g:14458:1: ( ( ':' ) )
+            // InternalPerspectiveDsl.g:14459:1: ( ':' )
             {
-            // InternalPerspectiveDsl.g:14262:1: ( ':' )
-            // InternalPerspectiveDsl.g:14263:2: ':'
+            // InternalPerspectiveDsl.g:14459:1: ( ':' )
+            // InternalPerspectiveDsl.g:14460:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_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.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1()); 
             }
@@ -47197,16 +47822,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__0"
-    // InternalPerspectiveDsl.g:14273:1: rule__XSwitchExpression__Group_5__0 : rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 ;
+    // InternalPerspectiveDsl.g:14470: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:14277:1: ( rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 )
-            // InternalPerspectiveDsl.g:14278:2: rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1
+            // InternalPerspectiveDsl.g:14474:1: ( rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 )
+            // InternalPerspectiveDsl.g:14475:2: rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1
             {
-            pushFollow(FOLLOW_104);
+            pushFollow(FOLLOW_106);
             rule__XSwitchExpression__Group_5__0__Impl();
 
             state._fsp--;
@@ -47235,22 +47860,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__0__Impl"
-    // InternalPerspectiveDsl.g:14285:1: rule__XSwitchExpression__Group_5__0__Impl : ( 'default' ) ;
+    // InternalPerspectiveDsl.g:14482: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:14289:1: ( ( 'default' ) )
-            // InternalPerspectiveDsl.g:14290:1: ( 'default' )
+            // InternalPerspectiveDsl.g:14486:1: ( ( 'default' ) )
+            // InternalPerspectiveDsl.g:14487:1: ( 'default' )
             {
-            // InternalPerspectiveDsl.g:14290:1: ( 'default' )
-            // InternalPerspectiveDsl.g:14291:2: 'default'
+            // InternalPerspectiveDsl.g:14487:1: ( 'default' )
+            // InternalPerspectiveDsl.g:14488:2: 'default'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_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.getXSwitchExpressionAccess().getDefaultKeyword_5_0()); 
             }
@@ -47276,16 +47901,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__1"
-    // InternalPerspectiveDsl.g:14300:1: rule__XSwitchExpression__Group_5__1 : rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 ;
+    // InternalPerspectiveDsl.g:14497: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:14304:1: ( rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 )
-            // InternalPerspectiveDsl.g:14305:2: rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2
+            // InternalPerspectiveDsl.g:14501:1: ( rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 )
+            // InternalPerspectiveDsl.g:14502:2: rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XSwitchExpression__Group_5__1__Impl();
 
             state._fsp--;
@@ -47314,22 +47939,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__1__Impl"
-    // InternalPerspectiveDsl.g:14312:1: rule__XSwitchExpression__Group_5__1__Impl : ( ':' ) ;
+    // InternalPerspectiveDsl.g:14509:1: rule__XSwitchExpression__Group_5__1__Impl : ( ':' ) ;
     public final void rule__XSwitchExpression__Group_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14316:1: ( ( ':' ) )
-            // InternalPerspectiveDsl.g:14317:1: ( ':' )
+            // InternalPerspectiveDsl.g:14513:1: ( ( ':' ) )
+            // InternalPerspectiveDsl.g:14514:1: ( ':' )
             {
-            // InternalPerspectiveDsl.g:14317:1: ( ':' )
-            // InternalPerspectiveDsl.g:14318:2: ':'
+            // InternalPerspectiveDsl.g:14514:1: ( ':' )
+            // InternalPerspectiveDsl.g:14515:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_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.getXSwitchExpressionAccess().getColonKeyword_5_1()); 
             }
@@ -47355,14 +47980,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__2"
-    // InternalPerspectiveDsl.g:14327:1: rule__XSwitchExpression__Group_5__2 : rule__XSwitchExpression__Group_5__2__Impl ;
+    // InternalPerspectiveDsl.g:14524: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:14331:1: ( rule__XSwitchExpression__Group_5__2__Impl )
-            // InternalPerspectiveDsl.g:14332:2: rule__XSwitchExpression__Group_5__2__Impl
+            // InternalPerspectiveDsl.g:14528:1: ( rule__XSwitchExpression__Group_5__2__Impl )
+            // InternalPerspectiveDsl.g:14529:2: rule__XSwitchExpression__Group_5__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_5__2__Impl();
@@ -47388,23 +48013,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__2__Impl"
-    // InternalPerspectiveDsl.g:14338:1: rule__XSwitchExpression__Group_5__2__Impl : ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) ;
+    // InternalPerspectiveDsl.g:14535: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:14342:1: ( ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) )
-            // InternalPerspectiveDsl.g:14343:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            // InternalPerspectiveDsl.g:14539:1: ( ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) )
+            // InternalPerspectiveDsl.g:14540:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
             {
-            // InternalPerspectiveDsl.g:14343:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
-            // InternalPerspectiveDsl.g:14344:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            // InternalPerspectiveDsl.g:14540:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            // InternalPerspectiveDsl.g:14541:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2()); 
             }
-            // InternalPerspectiveDsl.g:14345:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
-            // InternalPerspectiveDsl.g:14345:3: rule__XSwitchExpression__DefaultAssignment_5_2
+            // InternalPerspectiveDsl.g:14542:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            // InternalPerspectiveDsl.g:14542:3: rule__XSwitchExpression__DefaultAssignment_5_2
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__DefaultAssignment_5_2();
@@ -47439,16 +48064,16 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__0"
-    // InternalPerspectiveDsl.g:14354:1: rule__XCasePart__Group__0 : rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 ;
+    // InternalPerspectiveDsl.g:14551: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:14358:1: ( rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 )
-            // InternalPerspectiveDsl.g:14359:2: rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1
+            // InternalPerspectiveDsl.g:14555:1: ( rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 )
+            // InternalPerspectiveDsl.g:14556:2: rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1
             {
-            pushFollow(FOLLOW_105);
+            pushFollow(FOLLOW_107);
             rule__XCasePart__Group__0__Impl();
 
             state._fsp--;
@@ -47477,23 +48102,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__0__Impl"
-    // InternalPerspectiveDsl.g:14366:1: rule__XCasePart__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:14563:1: rule__XCasePart__Group__0__Impl : ( () ) ;
     public final void rule__XCasePart__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14370:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:14371:1: ( () )
+            // InternalPerspectiveDsl.g:14567:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:14568:1: ( () )
             {
-            // InternalPerspectiveDsl.g:14371:1: ( () )
-            // InternalPerspectiveDsl.g:14372:2: ()
+            // InternalPerspectiveDsl.g:14568:1: ( () )
+            // InternalPerspectiveDsl.g:14569:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getXCasePartAction_0()); 
             }
-            // InternalPerspectiveDsl.g:14373:2: ()
-            // InternalPerspectiveDsl.g:14373:3: 
+            // InternalPerspectiveDsl.g:14570:2: ()
+            // InternalPerspectiveDsl.g:14570:3: 
             {
             }
 
@@ -47518,16 +48143,16 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__1"
-    // InternalPerspectiveDsl.g:14381:1: rule__XCasePart__Group__1 : rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 ;
+    // InternalPerspectiveDsl.g:14578: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:14385:1: ( rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 )
-            // InternalPerspectiveDsl.g:14386:2: rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2
+            // InternalPerspectiveDsl.g:14582:1: ( rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 )
+            // InternalPerspectiveDsl.g:14583:2: rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2
             {
-            pushFollow(FOLLOW_105);
+            pushFollow(FOLLOW_107);
             rule__XCasePart__Group__1__Impl();
 
             state._fsp--;
@@ -47556,31 +48181,31 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__1__Impl"
-    // InternalPerspectiveDsl.g:14393:1: rule__XCasePart__Group__1__Impl : ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) ;
+    // InternalPerspectiveDsl.g:14590: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:14397:1: ( ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) )
-            // InternalPerspectiveDsl.g:14398:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            // InternalPerspectiveDsl.g:14594:1: ( ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) )
+            // InternalPerspectiveDsl.g:14595:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
             {
-            // InternalPerspectiveDsl.g:14398:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
-            // InternalPerspectiveDsl.g:14399:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            // InternalPerspectiveDsl.g:14595:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            // InternalPerspectiveDsl.g:14596:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:14400:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            // InternalPerspectiveDsl.g:14597:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
             int alt102=2;
             int LA102_0 = input.LA(1);
 
-            if ( (LA102_0==RULE_ID||LA102_0==31||LA102_0==89) ) {
+            if ( (LA102_0==RULE_ID||LA102_0==31||LA102_0==91) ) {
                 alt102=1;
             }
             switch (alt102) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:14400:3: rule__XCasePart__TypeGuardAssignment_1
+                    // InternalPerspectiveDsl.g:14597:3: rule__XCasePart__TypeGuardAssignment_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__TypeGuardAssignment_1();
@@ -47618,16 +48243,16 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__2"
-    // InternalPerspectiveDsl.g:14408:1: rule__XCasePart__Group__2 : rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 ;
+    // InternalPerspectiveDsl.g:14605: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:14412:1: ( rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 )
-            // InternalPerspectiveDsl.g:14413:2: rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3
+            // InternalPerspectiveDsl.g:14609:1: ( rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 )
+            // InternalPerspectiveDsl.g:14610:2: rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3
             {
-            pushFollow(FOLLOW_105);
+            pushFollow(FOLLOW_107);
             rule__XCasePart__Group__2__Impl();
 
             state._fsp--;
@@ -47656,31 +48281,31 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__2__Impl"
-    // InternalPerspectiveDsl.g:14420:1: rule__XCasePart__Group__2__Impl : ( ( rule__XCasePart__Group_2__0 )? ) ;
+    // InternalPerspectiveDsl.g:14617: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:14424:1: ( ( ( rule__XCasePart__Group_2__0 )? ) )
-            // InternalPerspectiveDsl.g:14425:1: ( ( rule__XCasePart__Group_2__0 )? )
+            // InternalPerspectiveDsl.g:14621:1: ( ( ( rule__XCasePart__Group_2__0 )? ) )
+            // InternalPerspectiveDsl.g:14622:1: ( ( rule__XCasePart__Group_2__0 )? )
             {
-            // InternalPerspectiveDsl.g:14425:1: ( ( rule__XCasePart__Group_2__0 )? )
-            // InternalPerspectiveDsl.g:14426:2: ( rule__XCasePart__Group_2__0 )?
+            // InternalPerspectiveDsl.g:14622:1: ( ( rule__XCasePart__Group_2__0 )? )
+            // InternalPerspectiveDsl.g:14623:2: ( rule__XCasePart__Group_2__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getGroup_2()); 
             }
-            // InternalPerspectiveDsl.g:14427:2: ( rule__XCasePart__Group_2__0 )?
+            // InternalPerspectiveDsl.g:14624:2: ( rule__XCasePart__Group_2__0 )?
             int alt103=2;
             int LA103_0 = input.LA(1);
 
-            if ( (LA103_0==102) ) {
+            if ( (LA103_0==104) ) {
                 alt103=1;
             }
             switch (alt103) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:14427:3: rule__XCasePart__Group_2__0
+                    // InternalPerspectiveDsl.g:14624:3: rule__XCasePart__Group_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__Group_2__0();
@@ -47718,14 +48343,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__3"
-    // InternalPerspectiveDsl.g:14435:1: rule__XCasePart__Group__3 : rule__XCasePart__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:14632: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:14439:1: ( rule__XCasePart__Group__3__Impl )
-            // InternalPerspectiveDsl.g:14440:2: rule__XCasePart__Group__3__Impl
+            // InternalPerspectiveDsl.g:14636:1: ( rule__XCasePart__Group__3__Impl )
+            // InternalPerspectiveDsl.g:14637:2: rule__XCasePart__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group__3__Impl();
@@ -47751,23 +48376,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__3__Impl"
-    // InternalPerspectiveDsl.g:14446:1: rule__XCasePart__Group__3__Impl : ( ( rule__XCasePart__Alternatives_3 ) ) ;
+    // InternalPerspectiveDsl.g:14643: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:14450:1: ( ( ( rule__XCasePart__Alternatives_3 ) ) )
-            // InternalPerspectiveDsl.g:14451:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            // InternalPerspectiveDsl.g:14647:1: ( ( ( rule__XCasePart__Alternatives_3 ) ) )
+            // InternalPerspectiveDsl.g:14648:1: ( ( rule__XCasePart__Alternatives_3 ) )
             {
-            // InternalPerspectiveDsl.g:14451:1: ( ( rule__XCasePart__Alternatives_3 ) )
-            // InternalPerspectiveDsl.g:14452:2: ( rule__XCasePart__Alternatives_3 )
+            // InternalPerspectiveDsl.g:14648:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            // InternalPerspectiveDsl.g:14649:2: ( rule__XCasePart__Alternatives_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getAlternatives_3()); 
             }
-            // InternalPerspectiveDsl.g:14453:2: ( rule__XCasePart__Alternatives_3 )
-            // InternalPerspectiveDsl.g:14453:3: rule__XCasePart__Alternatives_3
+            // InternalPerspectiveDsl.g:14650:2: ( rule__XCasePart__Alternatives_3 )
+            // InternalPerspectiveDsl.g:14650:3: rule__XCasePart__Alternatives_3
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Alternatives_3();
@@ -47802,16 +48427,16 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__0"
-    // InternalPerspectiveDsl.g:14462:1: rule__XCasePart__Group_2__0 : rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 ;
+    // InternalPerspectiveDsl.g:14659: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:14466:1: ( rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 )
-            // InternalPerspectiveDsl.g:14467:2: rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1
+            // InternalPerspectiveDsl.g:14663:1: ( rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 )
+            // InternalPerspectiveDsl.g:14664:2: rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XCasePart__Group_2__0__Impl();
 
             state._fsp--;
@@ -47840,22 +48465,22 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__0__Impl"
-    // InternalPerspectiveDsl.g:14474:1: rule__XCasePart__Group_2__0__Impl : ( 'case' ) ;
+    // InternalPerspectiveDsl.g:14671: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:14478:1: ( ( 'case' ) )
-            // InternalPerspectiveDsl.g:14479:1: ( 'case' )
+            // InternalPerspectiveDsl.g:14675:1: ( ( 'case' ) )
+            // InternalPerspectiveDsl.g:14676:1: ( 'case' )
             {
-            // InternalPerspectiveDsl.g:14479:1: ( 'case' )
-            // InternalPerspectiveDsl.g:14480:2: 'case'
+            // InternalPerspectiveDsl.g:14676:1: ( 'case' )
+            // InternalPerspectiveDsl.g:14677:2: 'case'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getCaseKeyword_2_0()); 
             }
-            match(input,102,FOLLOW_2); if (state.failed) return ;
+            match(input,104,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCasePartAccess().getCaseKeyword_2_0()); 
             }
@@ -47881,14 +48506,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__1"
-    // InternalPerspectiveDsl.g:14489:1: rule__XCasePart__Group_2__1 : rule__XCasePart__Group_2__1__Impl ;
+    // InternalPerspectiveDsl.g:14686: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:14493:1: ( rule__XCasePart__Group_2__1__Impl )
-            // InternalPerspectiveDsl.g:14494:2: rule__XCasePart__Group_2__1__Impl
+            // InternalPerspectiveDsl.g:14690:1: ( rule__XCasePart__Group_2__1__Impl )
+            // InternalPerspectiveDsl.g:14691:2: rule__XCasePart__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group_2__1__Impl();
@@ -47914,23 +48539,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__1__Impl"
-    // InternalPerspectiveDsl.g:14500:1: rule__XCasePart__Group_2__1__Impl : ( ( rule__XCasePart__CaseAssignment_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:14697: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:14504:1: ( ( ( rule__XCasePart__CaseAssignment_2_1 ) ) )
-            // InternalPerspectiveDsl.g:14505:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            // InternalPerspectiveDsl.g:14701:1: ( ( ( rule__XCasePart__CaseAssignment_2_1 ) ) )
+            // InternalPerspectiveDsl.g:14702:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:14505:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
-            // InternalPerspectiveDsl.g:14506:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            // InternalPerspectiveDsl.g:14702:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            // InternalPerspectiveDsl.g:14703:2: ( rule__XCasePart__CaseAssignment_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1()); 
             }
-            // InternalPerspectiveDsl.g:14507:2: ( rule__XCasePart__CaseAssignment_2_1 )
-            // InternalPerspectiveDsl.g:14507:3: rule__XCasePart__CaseAssignment_2_1
+            // InternalPerspectiveDsl.g:14704:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            // InternalPerspectiveDsl.g:14704:3: rule__XCasePart__CaseAssignment_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__CaseAssignment_2_1();
@@ -47965,16 +48590,16 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__0"
-    // InternalPerspectiveDsl.g:14516:1: rule__XCasePart__Group_3_0__0 : rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 ;
+    // InternalPerspectiveDsl.g:14713: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:14520:1: ( rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 )
-            // InternalPerspectiveDsl.g:14521:2: rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1
+            // InternalPerspectiveDsl.g:14717:1: ( rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 )
+            // InternalPerspectiveDsl.g:14718:2: rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XCasePart__Group_3_0__0__Impl();
 
             state._fsp--;
@@ -48003,22 +48628,22 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__0__Impl"
-    // InternalPerspectiveDsl.g:14528:1: rule__XCasePart__Group_3_0__0__Impl : ( ':' ) ;
+    // InternalPerspectiveDsl.g:14725: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:14532:1: ( ( ':' ) )
-            // InternalPerspectiveDsl.g:14533:1: ( ':' )
+            // InternalPerspectiveDsl.g:14729:1: ( ( ':' ) )
+            // InternalPerspectiveDsl.g:14730:1: ( ':' )
             {
-            // InternalPerspectiveDsl.g:14533:1: ( ':' )
-            // InternalPerspectiveDsl.g:14534:2: ':'
+            // InternalPerspectiveDsl.g:14730:1: ( ':' )
+            // InternalPerspectiveDsl.g:14731:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0()); 
             }
-            match(input,100,FOLLOW_2); if (state.failed) return ;
+            match(input,102,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0()); 
             }
@@ -48044,14 +48669,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__1"
-    // InternalPerspectiveDsl.g:14543:1: rule__XCasePart__Group_3_0__1 : rule__XCasePart__Group_3_0__1__Impl ;
+    // InternalPerspectiveDsl.g:14740: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:14547:1: ( rule__XCasePart__Group_3_0__1__Impl )
-            // InternalPerspectiveDsl.g:14548:2: rule__XCasePart__Group_3_0__1__Impl
+            // InternalPerspectiveDsl.g:14744:1: ( rule__XCasePart__Group_3_0__1__Impl )
+            // InternalPerspectiveDsl.g:14745:2: rule__XCasePart__Group_3_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group_3_0__1__Impl();
@@ -48077,23 +48702,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__1__Impl"
-    // InternalPerspectiveDsl.g:14554:1: rule__XCasePart__Group_3_0__1__Impl : ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:14751: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:14558:1: ( ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) )
-            // InternalPerspectiveDsl.g:14559:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:14755:1: ( ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) )
+            // InternalPerspectiveDsl.g:14756:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:14559:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
-            // InternalPerspectiveDsl.g:14560:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:14756:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:14757:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1()); 
             }
-            // InternalPerspectiveDsl.g:14561:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
-            // InternalPerspectiveDsl.g:14561:3: rule__XCasePart__ThenAssignment_3_0_1
+            // InternalPerspectiveDsl.g:14758:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:14758:3: rule__XCasePart__ThenAssignment_3_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__ThenAssignment_3_0_1();
@@ -48128,16 +48753,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__0"
-    // InternalPerspectiveDsl.g:14570:1: rule__XForLoopExpression__Group__0 : rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:14767: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:14574:1: ( rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 )
-            // InternalPerspectiveDsl.g:14575:2: rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1
+            // InternalPerspectiveDsl.g:14771:1: ( rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 )
+            // InternalPerspectiveDsl.g:14772:2: rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XForLoopExpression__Group__0__Impl();
 
             state._fsp--;
@@ -48166,23 +48791,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:14582:1: rule__XForLoopExpression__Group__0__Impl : ( ( rule__XForLoopExpression__Group_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:14779: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:14586:1: ( ( ( rule__XForLoopExpression__Group_0__0 ) ) )
-            // InternalPerspectiveDsl.g:14587:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:14783:1: ( ( ( rule__XForLoopExpression__Group_0__0 ) ) )
+            // InternalPerspectiveDsl.g:14784:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:14587:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
-            // InternalPerspectiveDsl.g:14588:2: ( rule__XForLoopExpression__Group_0__0 )
+            // InternalPerspectiveDsl.g:14784:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:14785:2: ( rule__XForLoopExpression__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getGroup_0()); 
             }
-            // InternalPerspectiveDsl.g:14589:2: ( rule__XForLoopExpression__Group_0__0 )
-            // InternalPerspectiveDsl.g:14589:3: rule__XForLoopExpression__Group_0__0
+            // InternalPerspectiveDsl.g:14786:2: ( rule__XForLoopExpression__Group_0__0 )
+            // InternalPerspectiveDsl.g:14786:3: rule__XForLoopExpression__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0__0();
@@ -48217,16 +48842,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__1"
-    // InternalPerspectiveDsl.g:14597:1: rule__XForLoopExpression__Group__1 : rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:14794: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:14601:1: ( rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 )
-            // InternalPerspectiveDsl.g:14602:2: rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2
+            // InternalPerspectiveDsl.g:14798:1: ( rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 )
+            // InternalPerspectiveDsl.g:14799:2: rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2
             {
-            pushFollow(FOLLOW_97);
+            pushFollow(FOLLOW_99);
             rule__XForLoopExpression__Group__1__Impl();
 
             state._fsp--;
@@ -48255,23 +48880,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:14609:1: rule__XForLoopExpression__Group__1__Impl : ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:14806: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:14613:1: ( ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:14614:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            // InternalPerspectiveDsl.g:14810:1: ( ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:14811:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:14614:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
-            // InternalPerspectiveDsl.g:14615:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            // InternalPerspectiveDsl.g:14811:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            // InternalPerspectiveDsl.g:14812:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:14616:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
-            // InternalPerspectiveDsl.g:14616:3: rule__XForLoopExpression__ForExpressionAssignment_1
+            // InternalPerspectiveDsl.g:14813:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            // InternalPerspectiveDsl.g:14813:3: rule__XForLoopExpression__ForExpressionAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__ForExpressionAssignment_1();
@@ -48306,16 +48931,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__2"
-    // InternalPerspectiveDsl.g:14624:1: rule__XForLoopExpression__Group__2 : rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:14821: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:14628:1: ( rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 )
-            // InternalPerspectiveDsl.g:14629:2: rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3
+            // InternalPerspectiveDsl.g:14825:1: ( rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 )
+            // InternalPerspectiveDsl.g:14826:2: rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XForLoopExpression__Group__2__Impl();
 
             state._fsp--;
@@ -48344,22 +48969,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:14636:1: rule__XForLoopExpression__Group__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:14833:1: rule__XForLoopExpression__Group__2__Impl : ( ')' ) ;
     public final void rule__XForLoopExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14640:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:14641:1: ( ')' )
+            // InternalPerspectiveDsl.g:14837:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:14838:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:14641:1: ( ')' )
-            // InternalPerspectiveDsl.g:14642:2: ')'
+            // InternalPerspectiveDsl.g:14838:1: ( ')' )
+            // InternalPerspectiveDsl.g:14839:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2()); 
             }
@@ -48385,14 +49010,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__3"
-    // InternalPerspectiveDsl.g:14651:1: rule__XForLoopExpression__Group__3 : rule__XForLoopExpression__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:14848: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:14655:1: ( rule__XForLoopExpression__Group__3__Impl )
-            // InternalPerspectiveDsl.g:14656:2: rule__XForLoopExpression__Group__3__Impl
+            // InternalPerspectiveDsl.g:14852:1: ( rule__XForLoopExpression__Group__3__Impl )
+            // InternalPerspectiveDsl.g:14853:2: rule__XForLoopExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group__3__Impl();
@@ -48418,23 +49043,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:14662:1: rule__XForLoopExpression__Group__3__Impl : ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) ;
+    // InternalPerspectiveDsl.g:14859: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:14666:1: ( ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) )
-            // InternalPerspectiveDsl.g:14667:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            // InternalPerspectiveDsl.g:14863:1: ( ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:14864:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
             {
-            // InternalPerspectiveDsl.g:14667:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
-            // InternalPerspectiveDsl.g:14668:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            // InternalPerspectiveDsl.g:14864:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            // InternalPerspectiveDsl.g:14865:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:14669:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
-            // InternalPerspectiveDsl.g:14669:3: rule__XForLoopExpression__EachExpressionAssignment_3
+            // InternalPerspectiveDsl.g:14866:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            // InternalPerspectiveDsl.g:14866:3: rule__XForLoopExpression__EachExpressionAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__EachExpressionAssignment_3();
@@ -48469,14 +49094,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0__0"
-    // InternalPerspectiveDsl.g:14678:1: rule__XForLoopExpression__Group_0__0 : rule__XForLoopExpression__Group_0__0__Impl ;
+    // InternalPerspectiveDsl.g:14875: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:14682:1: ( rule__XForLoopExpression__Group_0__0__Impl )
-            // InternalPerspectiveDsl.g:14683:2: rule__XForLoopExpression__Group_0__0__Impl
+            // InternalPerspectiveDsl.g:14879:1: ( rule__XForLoopExpression__Group_0__0__Impl )
+            // InternalPerspectiveDsl.g:14880:2: rule__XForLoopExpression__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0__0__Impl();
@@ -48502,23 +49127,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:14689:1: rule__XForLoopExpression__Group_0__0__Impl : ( ( rule__XForLoopExpression__Group_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:14886: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:14693:1: ( ( ( rule__XForLoopExpression__Group_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:14694:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14890:1: ( ( ( rule__XForLoopExpression__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:14891:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:14694:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
-            // InternalPerspectiveDsl.g:14695:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:14891:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14892:2: ( rule__XForLoopExpression__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0()); 
             }
-            // InternalPerspectiveDsl.g:14696:2: ( rule__XForLoopExpression__Group_0_0__0 )
-            // InternalPerspectiveDsl.g:14696:3: rule__XForLoopExpression__Group_0_0__0
+            // InternalPerspectiveDsl.g:14893:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:14893:3: rule__XForLoopExpression__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0_0__0();
@@ -48553,16 +49178,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__0"
-    // InternalPerspectiveDsl.g:14705:1: rule__XForLoopExpression__Group_0_0__0 : rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 ;
+    // InternalPerspectiveDsl.g:14902: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:14709:1: ( rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 )
-            // InternalPerspectiveDsl.g:14710:2: rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1
+            // InternalPerspectiveDsl.g:14906:1: ( rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 )
+            // InternalPerspectiveDsl.g:14907:2: rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1
             {
-            pushFollow(FOLLOW_106);
+            pushFollow(FOLLOW_108);
             rule__XForLoopExpression__Group_0_0__0__Impl();
 
             state._fsp--;
@@ -48591,23 +49216,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:14717:1: rule__XForLoopExpression__Group_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:14914: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:14721:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:14722:1: ( () )
+            // InternalPerspectiveDsl.g:14918:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:14919:1: ( () )
             {
-            // InternalPerspectiveDsl.g:14722:1: ( () )
-            // InternalPerspectiveDsl.g:14723:2: ()
+            // InternalPerspectiveDsl.g:14919:1: ( () )
+            // InternalPerspectiveDsl.g:14920:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:14724:2: ()
-            // InternalPerspectiveDsl.g:14724:3: 
+            // InternalPerspectiveDsl.g:14921:2: ()
+            // InternalPerspectiveDsl.g:14921:3: 
             {
             }
 
@@ -48632,16 +49257,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__1"
-    // InternalPerspectiveDsl.g:14732:1: rule__XForLoopExpression__Group_0_0__1 : rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 ;
+    // InternalPerspectiveDsl.g:14929: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:14736:1: ( rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 )
-            // InternalPerspectiveDsl.g:14737:2: rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2
+            // InternalPerspectiveDsl.g:14933:1: ( rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 )
+            // InternalPerspectiveDsl.g:14934:2: rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2
             {
-            pushFollow(FOLLOW_48);
+            pushFollow(FOLLOW_50);
             rule__XForLoopExpression__Group_0_0__1__Impl();
 
             state._fsp--;
@@ -48670,22 +49295,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:14744:1: rule__XForLoopExpression__Group_0_0__1__Impl : ( 'for' ) ;
+    // InternalPerspectiveDsl.g:14941: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:14748:1: ( ( 'for' ) )
-            // InternalPerspectiveDsl.g:14749:1: ( 'for' )
+            // InternalPerspectiveDsl.g:14945:1: ( ( 'for' ) )
+            // InternalPerspectiveDsl.g:14946:1: ( 'for' )
             {
-            // InternalPerspectiveDsl.g:14749:1: ( 'for' )
-            // InternalPerspectiveDsl.g:14750:2: 'for'
+            // InternalPerspectiveDsl.g:14946:1: ( 'for' )
+            // InternalPerspectiveDsl.g:14947:2: 'for'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getForKeyword_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.getXForLoopExpressionAccess().getForKeyword_0_0_1()); 
             }
@@ -48711,16 +49336,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__2"
-    // InternalPerspectiveDsl.g:14759:1: rule__XForLoopExpression__Group_0_0__2 : rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 ;
+    // InternalPerspectiveDsl.g:14956: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:14763:1: ( rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 )
-            // InternalPerspectiveDsl.g:14764:2: rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3
+            // InternalPerspectiveDsl.g:14960:1: ( rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 )
+            // InternalPerspectiveDsl.g:14961:2: rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__XForLoopExpression__Group_0_0__2__Impl();
 
             state._fsp--;
@@ -48749,22 +49374,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__2__Impl"
-    // InternalPerspectiveDsl.g:14771:1: rule__XForLoopExpression__Group_0_0__2__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:14968: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:14775:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:14776:1: ( '(' )
+            // InternalPerspectiveDsl.g:14972:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:14973:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:14776:1: ( '(' )
-            // InternalPerspectiveDsl.g:14777:2: '('
+            // InternalPerspectiveDsl.g:14973:1: ( '(' )
+            // InternalPerspectiveDsl.g:14974:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
@@ -48790,16 +49415,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__3"
-    // InternalPerspectiveDsl.g:14786:1: rule__XForLoopExpression__Group_0_0__3 : rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 ;
+    // InternalPerspectiveDsl.g:14983: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:14790:1: ( rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 )
-            // InternalPerspectiveDsl.g:14791:2: rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4
+            // InternalPerspectiveDsl.g:14987:1: ( rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 )
+            // InternalPerspectiveDsl.g:14988:2: rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4
             {
-            pushFollow(FOLLOW_104);
+            pushFollow(FOLLOW_106);
             rule__XForLoopExpression__Group_0_0__3__Impl();
 
             state._fsp--;
@@ -48828,23 +49453,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__3__Impl"
-    // InternalPerspectiveDsl.g:14798:1: rule__XForLoopExpression__Group_0_0__3__Impl : ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) ;
+    // InternalPerspectiveDsl.g:14995: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:14802:1: ( ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) )
-            // InternalPerspectiveDsl.g:14803:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            // InternalPerspectiveDsl.g:14999:1: ( ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) )
+            // InternalPerspectiveDsl.g:15000:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
             {
-            // InternalPerspectiveDsl.g:14803:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
-            // InternalPerspectiveDsl.g:14804:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            // InternalPerspectiveDsl.g:15000:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            // InternalPerspectiveDsl.g:15001:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3()); 
             }
-            // InternalPerspectiveDsl.g:14805:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
-            // InternalPerspectiveDsl.g:14805:3: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3
+            // InternalPerspectiveDsl.g:15002:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            // InternalPerspectiveDsl.g:15002:3: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__DeclaredParamAssignment_0_0_3();
@@ -48879,14 +49504,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__4"
-    // InternalPerspectiveDsl.g:14813:1: rule__XForLoopExpression__Group_0_0__4 : rule__XForLoopExpression__Group_0_0__4__Impl ;
+    // InternalPerspectiveDsl.g:15010: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:14817:1: ( rule__XForLoopExpression__Group_0_0__4__Impl )
-            // InternalPerspectiveDsl.g:14818:2: rule__XForLoopExpression__Group_0_0__4__Impl
+            // InternalPerspectiveDsl.g:15014:1: ( rule__XForLoopExpression__Group_0_0__4__Impl )
+            // InternalPerspectiveDsl.g:15015:2: rule__XForLoopExpression__Group_0_0__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0_0__4__Impl();
@@ -48912,22 +49537,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__4__Impl"
-    // InternalPerspectiveDsl.g:14824:1: rule__XForLoopExpression__Group_0_0__4__Impl : ( ':' ) ;
+    // InternalPerspectiveDsl.g:15021: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:14828:1: ( ( ':' ) )
-            // InternalPerspectiveDsl.g:14829:1: ( ':' )
+            // InternalPerspectiveDsl.g:15025:1: ( ( ':' ) )
+            // InternalPerspectiveDsl.g:15026:1: ( ':' )
             {
-            // InternalPerspectiveDsl.g:14829:1: ( ':' )
-            // InternalPerspectiveDsl.g:14830:2: ':'
+            // InternalPerspectiveDsl.g:15026:1: ( ':' )
+            // InternalPerspectiveDsl.g:15027:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4()); 
             }
-            match(input,100,FOLLOW_2); if (state.failed) return ;
+            match(input,102,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4()); 
             }
@@ -48953,16 +49578,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__0"
-    // InternalPerspectiveDsl.g:14840:1: rule__XBasicForLoopExpression__Group__0 : rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:15037: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:14844:1: ( rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 )
-            // InternalPerspectiveDsl.g:14845:2: rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1
+            // InternalPerspectiveDsl.g:15041:1: ( rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 )
+            // InternalPerspectiveDsl.g:15042:2: rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1
             {
-            pushFollow(FOLLOW_106);
+            pushFollow(FOLLOW_108);
             rule__XBasicForLoopExpression__Group__0__Impl();
 
             state._fsp--;
@@ -48991,23 +49616,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:14852:1: rule__XBasicForLoopExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:15049:1: rule__XBasicForLoopExpression__Group__0__Impl : ( () ) ;
     public final void rule__XBasicForLoopExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14856:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:14857:1: ( () )
+            // InternalPerspectiveDsl.g:15053:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:15054:1: ( () )
             {
-            // InternalPerspectiveDsl.g:14857:1: ( () )
-            // InternalPerspectiveDsl.g:14858:2: ()
+            // InternalPerspectiveDsl.g:15054:1: ( () )
+            // InternalPerspectiveDsl.g:15055:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:14859:2: ()
-            // InternalPerspectiveDsl.g:14859:3: 
+            // InternalPerspectiveDsl.g:15056:2: ()
+            // InternalPerspectiveDsl.g:15056:3: 
             {
             }
 
@@ -49032,16 +49657,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__1"
-    // InternalPerspectiveDsl.g:14867:1: rule__XBasicForLoopExpression__Group__1 : rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:15064: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:14871:1: ( rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 )
-            // InternalPerspectiveDsl.g:14872:2: rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2
+            // InternalPerspectiveDsl.g:15068:1: ( rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 )
+            // InternalPerspectiveDsl.g:15069:2: rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2
             {
-            pushFollow(FOLLOW_48);
+            pushFollow(FOLLOW_50);
             rule__XBasicForLoopExpression__Group__1__Impl();
 
             state._fsp--;
@@ -49070,22 +49695,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:14879:1: rule__XBasicForLoopExpression__Group__1__Impl : ( 'for' ) ;
+    // InternalPerspectiveDsl.g:15076:1: rule__XBasicForLoopExpression__Group__1__Impl : ( 'for' ) ;
     public final void rule__XBasicForLoopExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14883:1: ( ( 'for' ) )
-            // InternalPerspectiveDsl.g:14884:1: ( 'for' )
+            // InternalPerspectiveDsl.g:15080:1: ( ( 'for' ) )
+            // InternalPerspectiveDsl.g:15081:1: ( 'for' )
             {
-            // InternalPerspectiveDsl.g:14884:1: ( 'for' )
-            // InternalPerspectiveDsl.g:14885:2: 'for'
+            // InternalPerspectiveDsl.g:15081:1: ( 'for' )
+            // InternalPerspectiveDsl.g:15082:2: 'for'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_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.getXBasicForLoopExpressionAccess().getForKeyword_1()); 
             }
@@ -49111,16 +49736,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__2"
-    // InternalPerspectiveDsl.g:14894:1: rule__XBasicForLoopExpression__Group__2 : rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:15091: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:14898:1: ( rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 )
-            // InternalPerspectiveDsl.g:14899:2: rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3
+            // InternalPerspectiveDsl.g:15095:1: ( rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 )
+            // InternalPerspectiveDsl.g:15096:2: rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3
             {
-            pushFollow(FOLLOW_107);
+            pushFollow(FOLLOW_109);
             rule__XBasicForLoopExpression__Group__2__Impl();
 
             state._fsp--;
@@ -49149,22 +49774,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:14906:1: rule__XBasicForLoopExpression__Group__2__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:15103:1: rule__XBasicForLoopExpression__Group__2__Impl : ( '(' ) ;
     public final void rule__XBasicForLoopExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14910:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:14911:1: ( '(' )
+            // InternalPerspectiveDsl.g:15107:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:15108:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:14911:1: ( '(' )
-            // InternalPerspectiveDsl.g:14912:2: '('
+            // InternalPerspectiveDsl.g:15108:1: ( '(' )
+            // InternalPerspectiveDsl.g:15109:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -49190,16 +49815,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__3"
-    // InternalPerspectiveDsl.g:14921:1: rule__XBasicForLoopExpression__Group__3 : rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 ;
+    // InternalPerspectiveDsl.g:15118: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:14925:1: ( rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 )
-            // InternalPerspectiveDsl.g:14926:2: rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4
+            // InternalPerspectiveDsl.g:15122:1: ( rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 )
+            // InternalPerspectiveDsl.g:15123:2: rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4
             {
-            pushFollow(FOLLOW_107);
+            pushFollow(FOLLOW_109);
             rule__XBasicForLoopExpression__Group__3__Impl();
 
             state._fsp--;
@@ -49228,31 +49853,31 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:14933:1: rule__XBasicForLoopExpression__Group__3__Impl : ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:15130: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:14937:1: ( ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:14938:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:15134:1: ( ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:15135:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:14938:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:14939:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            // InternalPerspectiveDsl.g:15135:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:15136:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:14940:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            // InternalPerspectiveDsl.g:15137:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
             int alt104=2;
             int LA104_0 = input.LA(1);
 
-            if ( ((LA104_0>=RULE_ID && LA104_0<=RULE_DECIMAL)||LA104_0==27||(LA104_0>=34 && LA104_0<=35)||LA104_0==40||(LA104_0>=44 && LA104_0<=50)||LA104_0==54||LA104_0==89||(LA104_0>=93 && LA104_0<=94)||LA104_0==97||LA104_0==99||(LA104_0>=103 && LA104_0<=111)||LA104_0==113||(LA104_0>=123 && LA104_0<=124)) ) {
+            if ( ((LA104_0>=RULE_ID && LA104_0<=RULE_DECIMAL)||LA104_0==27||(LA104_0>=34 && LA104_0<=35)||LA104_0==40||(LA104_0>=44 && LA104_0<=50)||LA104_0==54||LA104_0==91||(LA104_0>=95 && LA104_0<=96)||LA104_0==99||LA104_0==101||(LA104_0>=105 && LA104_0<=113)||LA104_0==115||(LA104_0>=125 && LA104_0<=126)) ) {
                 alt104=1;
             }
             switch (alt104) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:14940:3: rule__XBasicForLoopExpression__Group_3__0
+                    // InternalPerspectiveDsl.g:15137:3: rule__XBasicForLoopExpression__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBasicForLoopExpression__Group_3__0();
@@ -49290,16 +49915,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__4"
-    // InternalPerspectiveDsl.g:14948:1: rule__XBasicForLoopExpression__Group__4 : rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 ;
+    // InternalPerspectiveDsl.g:15145: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:14952:1: ( rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 )
-            // InternalPerspectiveDsl.g:14953:2: rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5
+            // InternalPerspectiveDsl.g:15149:1: ( rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 )
+            // InternalPerspectiveDsl.g:15150:2: rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5
             {
-            pushFollow(FOLLOW_108);
+            pushFollow(FOLLOW_110);
             rule__XBasicForLoopExpression__Group__4__Impl();
 
             state._fsp--;
@@ -49328,22 +49953,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__4__Impl"
-    // InternalPerspectiveDsl.g:14960:1: rule__XBasicForLoopExpression__Group__4__Impl : ( ';' ) ;
+    // InternalPerspectiveDsl.g:15157:1: rule__XBasicForLoopExpression__Group__4__Impl : ( ';' ) ;
     public final void rule__XBasicForLoopExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14964:1: ( ( ';' ) )
-            // InternalPerspectiveDsl.g:14965:1: ( ';' )
+            // InternalPerspectiveDsl.g:15161:1: ( ( ';' ) )
+            // InternalPerspectiveDsl.g:15162:1: ( ';' )
             {
-            // InternalPerspectiveDsl.g:14965:1: ( ';' )
-            // InternalPerspectiveDsl.g:14966:2: ';'
+            // InternalPerspectiveDsl.g:15162:1: ( ';' )
+            // InternalPerspectiveDsl.g:15163:2: ';'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4()); 
             }
-            match(input,87,FOLLOW_2); if (state.failed) return ;
+            match(input,89,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4()); 
             }
@@ -49369,16 +49994,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__5"
-    // InternalPerspectiveDsl.g:14975:1: rule__XBasicForLoopExpression__Group__5 : rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 ;
+    // InternalPerspectiveDsl.g:15172: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:14979:1: ( rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 )
-            // InternalPerspectiveDsl.g:14980:2: rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6
+            // InternalPerspectiveDsl.g:15176:1: ( rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 )
+            // InternalPerspectiveDsl.g:15177:2: rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6
             {
-            pushFollow(FOLLOW_108);
+            pushFollow(FOLLOW_110);
             rule__XBasicForLoopExpression__Group__5__Impl();
 
             state._fsp--;
@@ -49407,31 +50032,31 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__5__Impl"
-    // InternalPerspectiveDsl.g:14987:1: rule__XBasicForLoopExpression__Group__5__Impl : ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) ;
+    // InternalPerspectiveDsl.g:15184: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:14991:1: ( ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) )
-            // InternalPerspectiveDsl.g:14992:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            // InternalPerspectiveDsl.g:15188:1: ( ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) )
+            // InternalPerspectiveDsl.g:15189:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
             {
-            // InternalPerspectiveDsl.g:14992:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
-            // InternalPerspectiveDsl.g:14993:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            // InternalPerspectiveDsl.g:15189:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            // InternalPerspectiveDsl.g:15190:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5()); 
             }
-            // InternalPerspectiveDsl.g:14994:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            // InternalPerspectiveDsl.g:15191:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
             int alt105=2;
             int LA105_0 = input.LA(1);
 
-            if ( ((LA105_0>=RULE_ID && LA105_0<=RULE_DECIMAL)||LA105_0==27||(LA105_0>=34 && LA105_0<=35)||LA105_0==40||(LA105_0>=45 && LA105_0<=50)||LA105_0==54||LA105_0==89||(LA105_0>=93 && LA105_0<=94)||LA105_0==97||LA105_0==99||(LA105_0>=103 && LA105_0<=111)||LA105_0==113||LA105_0==124) ) {
+            if ( ((LA105_0>=RULE_ID && LA105_0<=RULE_DECIMAL)||LA105_0==27||(LA105_0>=34 && LA105_0<=35)||LA105_0==40||(LA105_0>=45 && LA105_0<=50)||LA105_0==54||LA105_0==91||(LA105_0>=95 && LA105_0<=96)||LA105_0==99||LA105_0==101||(LA105_0>=105 && LA105_0<=113)||LA105_0==115||LA105_0==126) ) {
                 alt105=1;
             }
             switch (alt105) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:14994:3: rule__XBasicForLoopExpression__ExpressionAssignment_5
+                    // InternalPerspectiveDsl.g:15191:3: rule__XBasicForLoopExpression__ExpressionAssignment_5
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBasicForLoopExpression__ExpressionAssignment_5();
@@ -49469,16 +50094,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__6"
-    // InternalPerspectiveDsl.g:15002:1: rule__XBasicForLoopExpression__Group__6 : rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 ;
+    // InternalPerspectiveDsl.g:15199: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:15006:1: ( rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 )
-            // InternalPerspectiveDsl.g:15007:2: rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7
+            // InternalPerspectiveDsl.g:15203:1: ( rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 )
+            // InternalPerspectiveDsl.g:15204:2: rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7
             {
-            pushFollow(FOLLOW_49);
+            pushFollow(FOLLOW_51);
             rule__XBasicForLoopExpression__Group__6__Impl();
 
             state._fsp--;
@@ -49507,22 +50132,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__6__Impl"
-    // InternalPerspectiveDsl.g:15014:1: rule__XBasicForLoopExpression__Group__6__Impl : ( ';' ) ;
+    // InternalPerspectiveDsl.g:15211:1: rule__XBasicForLoopExpression__Group__6__Impl : ( ';' ) ;
     public final void rule__XBasicForLoopExpression__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15018:1: ( ( ';' ) )
-            // InternalPerspectiveDsl.g:15019:1: ( ';' )
+            // InternalPerspectiveDsl.g:15215:1: ( ( ';' ) )
+            // InternalPerspectiveDsl.g:15216:1: ( ';' )
             {
-            // InternalPerspectiveDsl.g:15019:1: ( ';' )
-            // InternalPerspectiveDsl.g:15020:2: ';'
+            // InternalPerspectiveDsl.g:15216:1: ( ';' )
+            // InternalPerspectiveDsl.g:15217:2: ';'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6()); 
             }
-            match(input,87,FOLLOW_2); if (state.failed) return ;
+            match(input,89,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6()); 
             }
@@ -49548,16 +50173,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__7"
-    // InternalPerspectiveDsl.g:15029:1: rule__XBasicForLoopExpression__Group__7 : rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 ;
+    // InternalPerspectiveDsl.g:15226: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:15033:1: ( rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 )
-            // InternalPerspectiveDsl.g:15034:2: rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8
+            // InternalPerspectiveDsl.g:15230:1: ( rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 )
+            // InternalPerspectiveDsl.g:15231:2: rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8
             {
-            pushFollow(FOLLOW_49);
+            pushFollow(FOLLOW_51);
             rule__XBasicForLoopExpression__Group__7__Impl();
 
             state._fsp--;
@@ -49586,31 +50211,31 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__7__Impl"
-    // InternalPerspectiveDsl.g:15041:1: rule__XBasicForLoopExpression__Group__7__Impl : ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) ;
+    // InternalPerspectiveDsl.g:15238: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:15045:1: ( ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) )
-            // InternalPerspectiveDsl.g:15046:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            // InternalPerspectiveDsl.g:15242:1: ( ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) )
+            // InternalPerspectiveDsl.g:15243:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
             {
-            // InternalPerspectiveDsl.g:15046:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
-            // InternalPerspectiveDsl.g:15047:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            // InternalPerspectiveDsl.g:15243:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            // InternalPerspectiveDsl.g:15244:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7()); 
             }
-            // InternalPerspectiveDsl.g:15048:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            // InternalPerspectiveDsl.g:15245:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
             int alt106=2;
             int LA106_0 = input.LA(1);
 
-            if ( ((LA106_0>=RULE_ID && LA106_0<=RULE_DECIMAL)||LA106_0==27||(LA106_0>=34 && LA106_0<=35)||LA106_0==40||(LA106_0>=45 && LA106_0<=50)||LA106_0==54||LA106_0==89||(LA106_0>=93 && LA106_0<=94)||LA106_0==97||LA106_0==99||(LA106_0>=103 && LA106_0<=111)||LA106_0==113||LA106_0==124) ) {
+            if ( ((LA106_0>=RULE_ID && LA106_0<=RULE_DECIMAL)||LA106_0==27||(LA106_0>=34 && LA106_0<=35)||LA106_0==40||(LA106_0>=45 && LA106_0<=50)||LA106_0==54||LA106_0==91||(LA106_0>=95 && LA106_0<=96)||LA106_0==99||LA106_0==101||(LA106_0>=105 && LA106_0<=113)||LA106_0==115||LA106_0==126) ) {
                 alt106=1;
             }
             switch (alt106) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:15048:3: rule__XBasicForLoopExpression__Group_7__0
+                    // InternalPerspectiveDsl.g:15245:3: rule__XBasicForLoopExpression__Group_7__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBasicForLoopExpression__Group_7__0();
@@ -49648,16 +50273,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__8"
-    // InternalPerspectiveDsl.g:15056:1: rule__XBasicForLoopExpression__Group__8 : rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 ;
+    // InternalPerspectiveDsl.g:15253: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:15060:1: ( rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 )
-            // InternalPerspectiveDsl.g:15061:2: rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9
+            // InternalPerspectiveDsl.g:15257:1: ( rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 )
+            // InternalPerspectiveDsl.g:15258:2: rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XBasicForLoopExpression__Group__8__Impl();
 
             state._fsp--;
@@ -49686,22 +50311,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__8__Impl"
-    // InternalPerspectiveDsl.g:15068:1: rule__XBasicForLoopExpression__Group__8__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:15265:1: rule__XBasicForLoopExpression__Group__8__Impl : ( ')' ) ;
     public final void rule__XBasicForLoopExpression__Group__8__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15072:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:15073:1: ( ')' )
+            // InternalPerspectiveDsl.g:15269:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:15270:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:15073:1: ( ')' )
-            // InternalPerspectiveDsl.g:15074:2: ')'
+            // InternalPerspectiveDsl.g:15270:1: ( ')' )
+            // InternalPerspectiveDsl.g:15271:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8()); 
             }
@@ -49727,14 +50352,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__9"
-    // InternalPerspectiveDsl.g:15083:1: rule__XBasicForLoopExpression__Group__9 : rule__XBasicForLoopExpression__Group__9__Impl ;
+    // InternalPerspectiveDsl.g:15280: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:15087:1: ( rule__XBasicForLoopExpression__Group__9__Impl )
-            // InternalPerspectiveDsl.g:15088:2: rule__XBasicForLoopExpression__Group__9__Impl
+            // InternalPerspectiveDsl.g:15284:1: ( rule__XBasicForLoopExpression__Group__9__Impl )
+            // InternalPerspectiveDsl.g:15285:2: rule__XBasicForLoopExpression__Group__9__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group__9__Impl();
@@ -49760,23 +50385,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__9__Impl"
-    // InternalPerspectiveDsl.g:15094:1: rule__XBasicForLoopExpression__Group__9__Impl : ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) ;
+    // InternalPerspectiveDsl.g:15291: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:15098:1: ( ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) )
-            // InternalPerspectiveDsl.g:15099:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            // InternalPerspectiveDsl.g:15295:1: ( ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) )
+            // InternalPerspectiveDsl.g:15296:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
             {
-            // InternalPerspectiveDsl.g:15099:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
-            // InternalPerspectiveDsl.g:15100:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            // InternalPerspectiveDsl.g:15296:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            // InternalPerspectiveDsl.g:15297:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9()); 
             }
-            // InternalPerspectiveDsl.g:15101:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
-            // InternalPerspectiveDsl.g:15101:3: rule__XBasicForLoopExpression__EachExpressionAssignment_9
+            // InternalPerspectiveDsl.g:15298:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            // InternalPerspectiveDsl.g:15298:3: rule__XBasicForLoopExpression__EachExpressionAssignment_9
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__EachExpressionAssignment_9();
@@ -49811,16 +50436,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__0"
-    // InternalPerspectiveDsl.g:15110:1: rule__XBasicForLoopExpression__Group_3__0 : rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 ;
+    // InternalPerspectiveDsl.g:15307: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:15114:1: ( rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 )
-            // InternalPerspectiveDsl.g:15115:2: rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1
+            // InternalPerspectiveDsl.g:15311:1: ( rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 )
+            // InternalPerspectiveDsl.g:15312:2: rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__XBasicForLoopExpression__Group_3__0__Impl();
 
             state._fsp--;
@@ -49849,23 +50474,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:15122:1: rule__XBasicForLoopExpression__Group_3__0__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) ;
+    // InternalPerspectiveDsl.g:15319: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:15126:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) )
-            // InternalPerspectiveDsl.g:15127:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:15323:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) )
+            // InternalPerspectiveDsl.g:15324:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
             {
-            // InternalPerspectiveDsl.g:15127:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
-            // InternalPerspectiveDsl.g:15128:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            // InternalPerspectiveDsl.g:15324:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:15325:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0()); 
             }
-            // InternalPerspectiveDsl.g:15129:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
-            // InternalPerspectiveDsl.g:15129:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0
+            // InternalPerspectiveDsl.g:15326:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            // InternalPerspectiveDsl.g:15326:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0();
@@ -49900,14 +50525,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__1"
-    // InternalPerspectiveDsl.g:15137:1: rule__XBasicForLoopExpression__Group_3__1 : rule__XBasicForLoopExpression__Group_3__1__Impl ;
+    // InternalPerspectiveDsl.g:15334: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:15141:1: ( rule__XBasicForLoopExpression__Group_3__1__Impl )
-            // InternalPerspectiveDsl.g:15142:2: rule__XBasicForLoopExpression__Group_3__1__Impl
+            // InternalPerspectiveDsl.g:15338:1: ( rule__XBasicForLoopExpression__Group_3__1__Impl )
+            // InternalPerspectiveDsl.g:15339:2: rule__XBasicForLoopExpression__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_3__1__Impl();
@@ -49933,37 +50558,37 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:15148:1: rule__XBasicForLoopExpression__Group_3__1__Impl : ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:15345: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:15152:1: ( ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) )
-            // InternalPerspectiveDsl.g:15153:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            // InternalPerspectiveDsl.g:15349:1: ( ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) )
+            // InternalPerspectiveDsl.g:15350:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:15153:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
-            // InternalPerspectiveDsl.g:15154:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            // InternalPerspectiveDsl.g:15350:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            // InternalPerspectiveDsl.g:15351:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1()); 
             }
-            // InternalPerspectiveDsl.g:15155:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            // InternalPerspectiveDsl.g:15352:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
             loop107:
             do {
                 int alt107=2;
                 int LA107_0 = input.LA(1);
 
-                if ( (LA107_0==91) ) {
+                if ( (LA107_0==93) ) {
                     alt107=1;
                 }
 
 
                 switch (alt107) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:15155:3: rule__XBasicForLoopExpression__Group_3_1__0
+            	    // InternalPerspectiveDsl.g:15352:3: rule__XBasicForLoopExpression__Group_3_1__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XBasicForLoopExpression__Group_3_1__0();
 
             	    state._fsp--;
@@ -50002,16 +50627,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__0"
-    // InternalPerspectiveDsl.g:15164:1: rule__XBasicForLoopExpression__Group_3_1__0 : rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 ;
+    // InternalPerspectiveDsl.g:15361: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:15168:1: ( rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 )
-            // InternalPerspectiveDsl.g:15169:2: rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1
+            // InternalPerspectiveDsl.g:15365:1: ( rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:15366:2: rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1
             {
-            pushFollow(FOLLOW_109);
+            pushFollow(FOLLOW_111);
             rule__XBasicForLoopExpression__Group_3_1__0__Impl();
 
             state._fsp--;
@@ -50040,22 +50665,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__0__Impl"
-    // InternalPerspectiveDsl.g:15176:1: rule__XBasicForLoopExpression__Group_3_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:15373: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:15180:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:15181:1: ( ',' )
+            // InternalPerspectiveDsl.g:15377:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:15378:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:15181:1: ( ',' )
-            // InternalPerspectiveDsl.g:15182:2: ','
+            // InternalPerspectiveDsl.g:15378:1: ( ',' )
+            // InternalPerspectiveDsl.g:15379:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0()); 
             }
@@ -50081,14 +50706,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__1"
-    // InternalPerspectiveDsl.g:15191:1: rule__XBasicForLoopExpression__Group_3_1__1 : rule__XBasicForLoopExpression__Group_3_1__1__Impl ;
+    // InternalPerspectiveDsl.g:15388: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:15195:1: ( rule__XBasicForLoopExpression__Group_3_1__1__Impl )
-            // InternalPerspectiveDsl.g:15196:2: rule__XBasicForLoopExpression__Group_3_1__1__Impl
+            // InternalPerspectiveDsl.g:15392:1: ( rule__XBasicForLoopExpression__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:15393:2: rule__XBasicForLoopExpression__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_3_1__1__Impl();
@@ -50114,23 +50739,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__1__Impl"
-    // InternalPerspectiveDsl.g:15202:1: rule__XBasicForLoopExpression__Group_3_1__1__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:15399: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:15206:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) )
-            // InternalPerspectiveDsl.g:15207:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:15403:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:15404:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:15207:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
-            // InternalPerspectiveDsl.g:15208:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:15404:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:15405:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1()); 
             }
-            // InternalPerspectiveDsl.g:15209:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
-            // InternalPerspectiveDsl.g:15209:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1
+            // InternalPerspectiveDsl.g:15406:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:15406:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1();
@@ -50165,16 +50790,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__0"
-    // InternalPerspectiveDsl.g:15218:1: rule__XBasicForLoopExpression__Group_7__0 : rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 ;
+    // InternalPerspectiveDsl.g:15415: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:15222:1: ( rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 )
-            // InternalPerspectiveDsl.g:15223:2: rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1
+            // InternalPerspectiveDsl.g:15419:1: ( rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 )
+            // InternalPerspectiveDsl.g:15420:2: rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__XBasicForLoopExpression__Group_7__0__Impl();
 
             state._fsp--;
@@ -50203,23 +50828,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__0__Impl"
-    // InternalPerspectiveDsl.g:15230:1: rule__XBasicForLoopExpression__Group_7__0__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) ;
+    // InternalPerspectiveDsl.g:15427: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:15234:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) )
-            // InternalPerspectiveDsl.g:15235:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            // InternalPerspectiveDsl.g:15431:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) )
+            // InternalPerspectiveDsl.g:15432:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
             {
-            // InternalPerspectiveDsl.g:15235:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
-            // InternalPerspectiveDsl.g:15236:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            // InternalPerspectiveDsl.g:15432:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            // InternalPerspectiveDsl.g:15433:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0()); 
             }
-            // InternalPerspectiveDsl.g:15237:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
-            // InternalPerspectiveDsl.g:15237:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0
+            // InternalPerspectiveDsl.g:15434:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            // InternalPerspectiveDsl.g:15434:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0();
@@ -50254,14 +50879,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__1"
-    // InternalPerspectiveDsl.g:15245:1: rule__XBasicForLoopExpression__Group_7__1 : rule__XBasicForLoopExpression__Group_7__1__Impl ;
+    // InternalPerspectiveDsl.g:15442: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:15249:1: ( rule__XBasicForLoopExpression__Group_7__1__Impl )
-            // InternalPerspectiveDsl.g:15250:2: rule__XBasicForLoopExpression__Group_7__1__Impl
+            // InternalPerspectiveDsl.g:15446:1: ( rule__XBasicForLoopExpression__Group_7__1__Impl )
+            // InternalPerspectiveDsl.g:15447:2: rule__XBasicForLoopExpression__Group_7__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_7__1__Impl();
@@ -50287,37 +50912,37 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__1__Impl"
-    // InternalPerspectiveDsl.g:15256:1: rule__XBasicForLoopExpression__Group_7__1__Impl : ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:15453: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:15260:1: ( ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) )
-            // InternalPerspectiveDsl.g:15261:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            // InternalPerspectiveDsl.g:15457:1: ( ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) )
+            // InternalPerspectiveDsl.g:15458:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:15261:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
-            // InternalPerspectiveDsl.g:15262:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            // InternalPerspectiveDsl.g:15458:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            // InternalPerspectiveDsl.g:15459:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1()); 
             }
-            // InternalPerspectiveDsl.g:15263:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            // InternalPerspectiveDsl.g:15460:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
             loop108:
             do {
                 int alt108=2;
                 int LA108_0 = input.LA(1);
 
-                if ( (LA108_0==91) ) {
+                if ( (LA108_0==93) ) {
                     alt108=1;
                 }
 
 
                 switch (alt108) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:15263:3: rule__XBasicForLoopExpression__Group_7_1__0
+            	    // InternalPerspectiveDsl.g:15460:3: rule__XBasicForLoopExpression__Group_7_1__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XBasicForLoopExpression__Group_7_1__0();
 
             	    state._fsp--;
@@ -50356,16 +50981,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__0"
-    // InternalPerspectiveDsl.g:15272:1: rule__XBasicForLoopExpression__Group_7_1__0 : rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 ;
+    // InternalPerspectiveDsl.g:15469: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:15276:1: ( rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 )
-            // InternalPerspectiveDsl.g:15277:2: rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1
+            // InternalPerspectiveDsl.g:15473:1: ( rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 )
+            // InternalPerspectiveDsl.g:15474:2: rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XBasicForLoopExpression__Group_7_1__0__Impl();
 
             state._fsp--;
@@ -50394,22 +51019,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__0__Impl"
-    // InternalPerspectiveDsl.g:15284:1: rule__XBasicForLoopExpression__Group_7_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:15481: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:15288:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:15289:1: ( ',' )
+            // InternalPerspectiveDsl.g:15485:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:15486:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:15289:1: ( ',' )
-            // InternalPerspectiveDsl.g:15290:2: ','
+            // InternalPerspectiveDsl.g:15486:1: ( ',' )
+            // InternalPerspectiveDsl.g:15487:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0()); 
             }
@@ -50435,14 +51060,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__1"
-    // InternalPerspectiveDsl.g:15299:1: rule__XBasicForLoopExpression__Group_7_1__1 : rule__XBasicForLoopExpression__Group_7_1__1__Impl ;
+    // InternalPerspectiveDsl.g:15496: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:15303:1: ( rule__XBasicForLoopExpression__Group_7_1__1__Impl )
-            // InternalPerspectiveDsl.g:15304:2: rule__XBasicForLoopExpression__Group_7_1__1__Impl
+            // InternalPerspectiveDsl.g:15500:1: ( rule__XBasicForLoopExpression__Group_7_1__1__Impl )
+            // InternalPerspectiveDsl.g:15501:2: rule__XBasicForLoopExpression__Group_7_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_7_1__1__Impl();
@@ -50468,23 +51093,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__1__Impl"
-    // InternalPerspectiveDsl.g:15310:1: rule__XBasicForLoopExpression__Group_7_1__1__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:15507: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:15314:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) )
-            // InternalPerspectiveDsl.g:15315:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            // InternalPerspectiveDsl.g:15511:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) )
+            // InternalPerspectiveDsl.g:15512:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:15315:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
-            // InternalPerspectiveDsl.g:15316:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            // InternalPerspectiveDsl.g:15512:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            // InternalPerspectiveDsl.g:15513:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1()); 
             }
-            // InternalPerspectiveDsl.g:15317:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
-            // InternalPerspectiveDsl.g:15317:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1
+            // InternalPerspectiveDsl.g:15514:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            // InternalPerspectiveDsl.g:15514:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1();
@@ -50519,16 +51144,16 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__0"
-    // InternalPerspectiveDsl.g:15326:1: rule__XWhileExpression__Group__0 : rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:15523: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:15330:1: ( rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 )
-            // InternalPerspectiveDsl.g:15331:2: rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1
+            // InternalPerspectiveDsl.g:15527:1: ( rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 )
+            // InternalPerspectiveDsl.g:15528:2: rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1
             {
-            pushFollow(FOLLOW_110);
+            pushFollow(FOLLOW_112);
             rule__XWhileExpression__Group__0__Impl();
 
             state._fsp--;
@@ -50557,23 +51182,23 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:15338:1: rule__XWhileExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:15535:1: rule__XWhileExpression__Group__0__Impl : ( () ) ;
     public final void rule__XWhileExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15342:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:15343:1: ( () )
+            // InternalPerspectiveDsl.g:15539:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:15540:1: ( () )
             {
-            // InternalPerspectiveDsl.g:15343:1: ( () )
-            // InternalPerspectiveDsl.g:15344:2: ()
+            // InternalPerspectiveDsl.g:15540:1: ( () )
+            // InternalPerspectiveDsl.g:15541:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:15345:2: ()
-            // InternalPerspectiveDsl.g:15345:3: 
+            // InternalPerspectiveDsl.g:15542:2: ()
+            // InternalPerspectiveDsl.g:15542:3: 
             {
             }
 
@@ -50598,16 +51223,16 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__1"
-    // InternalPerspectiveDsl.g:15353:1: rule__XWhileExpression__Group__1 : rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:15550: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:15357:1: ( rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 )
-            // InternalPerspectiveDsl.g:15358:2: rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2
+            // InternalPerspectiveDsl.g:15554:1: ( rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 )
+            // InternalPerspectiveDsl.g:15555:2: rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2
             {
-            pushFollow(FOLLOW_48);
+            pushFollow(FOLLOW_50);
             rule__XWhileExpression__Group__1__Impl();
 
             state._fsp--;
@@ -50636,22 +51261,22 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:15365:1: rule__XWhileExpression__Group__1__Impl : ( 'while' ) ;
+    // InternalPerspectiveDsl.g:15562:1: rule__XWhileExpression__Group__1__Impl : ( 'while' ) ;
     public final void rule__XWhileExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15369:1: ( ( 'while' ) )
-            // InternalPerspectiveDsl.g:15370:1: ( 'while' )
+            // InternalPerspectiveDsl.g:15566:1: ( ( 'while' ) )
+            // InternalPerspectiveDsl.g:15567:1: ( 'while' )
             {
-            // InternalPerspectiveDsl.g:15370:1: ( 'while' )
-            // InternalPerspectiveDsl.g:15371:2: 'while'
+            // InternalPerspectiveDsl.g:15567:1: ( 'while' )
+            // InternalPerspectiveDsl.g:15568:2: 'while'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getWhileKeyword_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.getXWhileExpressionAccess().getWhileKeyword_1()); 
             }
@@ -50677,16 +51302,16 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__2"
-    // InternalPerspectiveDsl.g:15380:1: rule__XWhileExpression__Group__2 : rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:15577: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:15384:1: ( rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 )
-            // InternalPerspectiveDsl.g:15385:2: rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3
+            // InternalPerspectiveDsl.g:15581:1: ( rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 )
+            // InternalPerspectiveDsl.g:15582:2: rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XWhileExpression__Group__2__Impl();
 
             state._fsp--;
@@ -50715,22 +51340,22 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:15392:1: rule__XWhileExpression__Group__2__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:15589:1: rule__XWhileExpression__Group__2__Impl : ( '(' ) ;
     public final void rule__XWhileExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15396:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:15397:1: ( '(' )
+            // InternalPerspectiveDsl.g:15593:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:15594:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:15397:1: ( '(' )
-            // InternalPerspectiveDsl.g:15398:2: '('
+            // InternalPerspectiveDsl.g:15594:1: ( '(' )
+            // InternalPerspectiveDsl.g:15595:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -50756,16 +51381,16 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__3"
-    // InternalPerspectiveDsl.g:15407:1: rule__XWhileExpression__Group__3 : rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 ;
+    // InternalPerspectiveDsl.g:15604: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:15411:1: ( rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 )
-            // InternalPerspectiveDsl.g:15412:2: rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4
+            // InternalPerspectiveDsl.g:15608:1: ( rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 )
+            // InternalPerspectiveDsl.g:15609:2: rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4
             {
-            pushFollow(FOLLOW_97);
+            pushFollow(FOLLOW_99);
             rule__XWhileExpression__Group__3__Impl();
 
             state._fsp--;
@@ -50794,23 +51419,23 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:15419:1: rule__XWhileExpression__Group__3__Impl : ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) ;
+    // InternalPerspectiveDsl.g:15616: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:15423:1: ( ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) )
-            // InternalPerspectiveDsl.g:15424:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            // InternalPerspectiveDsl.g:15620:1: ( ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:15621:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
             {
-            // InternalPerspectiveDsl.g:15424:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
-            // InternalPerspectiveDsl.g:15425:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            // InternalPerspectiveDsl.g:15621:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            // InternalPerspectiveDsl.g:15622:2: ( rule__XWhileExpression__PredicateAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:15426:2: ( rule__XWhileExpression__PredicateAssignment_3 )
-            // InternalPerspectiveDsl.g:15426:3: rule__XWhileExpression__PredicateAssignment_3
+            // InternalPerspectiveDsl.g:15623:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            // InternalPerspectiveDsl.g:15623:3: rule__XWhileExpression__PredicateAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__PredicateAssignment_3();
@@ -50845,16 +51470,16 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__4"
-    // InternalPerspectiveDsl.g:15434:1: rule__XWhileExpression__Group__4 : rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 ;
+    // InternalPerspectiveDsl.g:15631: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:15438:1: ( rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 )
-            // InternalPerspectiveDsl.g:15439:2: rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5
+            // InternalPerspectiveDsl.g:15635:1: ( rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 )
+            // InternalPerspectiveDsl.g:15636:2: rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XWhileExpression__Group__4__Impl();
 
             state._fsp--;
@@ -50883,22 +51508,22 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__4__Impl"
-    // InternalPerspectiveDsl.g:15446:1: rule__XWhileExpression__Group__4__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:15643:1: rule__XWhileExpression__Group__4__Impl : ( ')' ) ;
     public final void rule__XWhileExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15450:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:15451:1: ( ')' )
+            // InternalPerspectiveDsl.g:15647:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:15648:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:15451:1: ( ')' )
-            // InternalPerspectiveDsl.g:15452:2: ')'
+            // InternalPerspectiveDsl.g:15648:1: ( ')' )
+            // InternalPerspectiveDsl.g:15649:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4()); 
             }
@@ -50924,14 +51549,14 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__5"
-    // InternalPerspectiveDsl.g:15461:1: rule__XWhileExpression__Group__5 : rule__XWhileExpression__Group__5__Impl ;
+    // InternalPerspectiveDsl.g:15658: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:15465:1: ( rule__XWhileExpression__Group__5__Impl )
-            // InternalPerspectiveDsl.g:15466:2: rule__XWhileExpression__Group__5__Impl
+            // InternalPerspectiveDsl.g:15662:1: ( rule__XWhileExpression__Group__5__Impl )
+            // InternalPerspectiveDsl.g:15663:2: rule__XWhileExpression__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__Group__5__Impl();
@@ -50957,23 +51582,23 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__5__Impl"
-    // InternalPerspectiveDsl.g:15472:1: rule__XWhileExpression__Group__5__Impl : ( ( rule__XWhileExpression__BodyAssignment_5 ) ) ;
+    // InternalPerspectiveDsl.g:15669: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:15476:1: ( ( ( rule__XWhileExpression__BodyAssignment_5 ) ) )
-            // InternalPerspectiveDsl.g:15477:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            // InternalPerspectiveDsl.g:15673:1: ( ( ( rule__XWhileExpression__BodyAssignment_5 ) ) )
+            // InternalPerspectiveDsl.g:15674:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
             {
-            // InternalPerspectiveDsl.g:15477:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
-            // InternalPerspectiveDsl.g:15478:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            // InternalPerspectiveDsl.g:15674:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            // InternalPerspectiveDsl.g:15675:2: ( rule__XWhileExpression__BodyAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5()); 
             }
-            // InternalPerspectiveDsl.g:15479:2: ( rule__XWhileExpression__BodyAssignment_5 )
-            // InternalPerspectiveDsl.g:15479:3: rule__XWhileExpression__BodyAssignment_5
+            // InternalPerspectiveDsl.g:15676:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            // InternalPerspectiveDsl.g:15676:3: rule__XWhileExpression__BodyAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__BodyAssignment_5();
@@ -51008,16 +51633,16 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__0"
-    // InternalPerspectiveDsl.g:15488:1: rule__XDoWhileExpression__Group__0 : rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:15685: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:15492:1: ( rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 )
-            // InternalPerspectiveDsl.g:15493:2: rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1
+            // InternalPerspectiveDsl.g:15689:1: ( rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 )
+            // InternalPerspectiveDsl.g:15690:2: rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1
             {
-            pushFollow(FOLLOW_111);
+            pushFollow(FOLLOW_113);
             rule__XDoWhileExpression__Group__0__Impl();
 
             state._fsp--;
@@ -51046,23 +51671,23 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:15500:1: rule__XDoWhileExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:15697:1: rule__XDoWhileExpression__Group__0__Impl : ( () ) ;
     public final void rule__XDoWhileExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15504:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:15505:1: ( () )
+            // InternalPerspectiveDsl.g:15701:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:15702:1: ( () )
             {
-            // InternalPerspectiveDsl.g:15505:1: ( () )
-            // InternalPerspectiveDsl.g:15506:2: ()
+            // InternalPerspectiveDsl.g:15702:1: ( () )
+            // InternalPerspectiveDsl.g:15703:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:15507:2: ()
-            // InternalPerspectiveDsl.g:15507:3: 
+            // InternalPerspectiveDsl.g:15704:2: ()
+            // InternalPerspectiveDsl.g:15704:3: 
             {
             }
 
@@ -51087,16 +51712,16 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__1"
-    // InternalPerspectiveDsl.g:15515:1: rule__XDoWhileExpression__Group__1 : rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:15712: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:15519:1: ( rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 )
-            // InternalPerspectiveDsl.g:15520:2: rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2
+            // InternalPerspectiveDsl.g:15716:1: ( rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 )
+            // InternalPerspectiveDsl.g:15717:2: rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XDoWhileExpression__Group__1__Impl();
 
             state._fsp--;
@@ -51125,22 +51750,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:15527:1: rule__XDoWhileExpression__Group__1__Impl : ( 'do' ) ;
+    // InternalPerspectiveDsl.g:15724:1: rule__XDoWhileExpression__Group__1__Impl : ( 'do' ) ;
     public final void rule__XDoWhileExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15531:1: ( ( 'do' ) )
-            // InternalPerspectiveDsl.g:15532:1: ( 'do' )
+            // InternalPerspectiveDsl.g:15728:1: ( ( 'do' ) )
+            // InternalPerspectiveDsl.g:15729:1: ( 'do' )
             {
-            // InternalPerspectiveDsl.g:15532:1: ( 'do' )
-            // InternalPerspectiveDsl.g:15533:2: 'do'
+            // InternalPerspectiveDsl.g:15729:1: ( 'do' )
+            // InternalPerspectiveDsl.g:15730:2: 'do'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1()); 
             }
-            match(input,105,FOLLOW_2); if (state.failed) return ;
+            match(input,107,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1()); 
             }
@@ -51166,16 +51791,16 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__2"
-    // InternalPerspectiveDsl.g:15542:1: rule__XDoWhileExpression__Group__2 : rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:15739: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:15546:1: ( rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 )
-            // InternalPerspectiveDsl.g:15547:2: rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3
+            // InternalPerspectiveDsl.g:15743:1: ( rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 )
+            // InternalPerspectiveDsl.g:15744:2: rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3
             {
-            pushFollow(FOLLOW_110);
+            pushFollow(FOLLOW_112);
             rule__XDoWhileExpression__Group__2__Impl();
 
             state._fsp--;
@@ -51204,23 +51829,23 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:15554:1: rule__XDoWhileExpression__Group__2__Impl : ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:15751: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:15558:1: ( ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:15559:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            // InternalPerspectiveDsl.g:15755:1: ( ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:15756:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:15559:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
-            // InternalPerspectiveDsl.g:15560:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            // InternalPerspectiveDsl.g:15756:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            // InternalPerspectiveDsl.g:15757:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:15561:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
-            // InternalPerspectiveDsl.g:15561:3: rule__XDoWhileExpression__BodyAssignment_2
+            // InternalPerspectiveDsl.g:15758:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            // InternalPerspectiveDsl.g:15758:3: rule__XDoWhileExpression__BodyAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__BodyAssignment_2();
@@ -51255,16 +51880,16 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__3"
-    // InternalPerspectiveDsl.g:15569:1: rule__XDoWhileExpression__Group__3 : rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 ;
+    // InternalPerspectiveDsl.g:15766: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:15573:1: ( rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 )
-            // InternalPerspectiveDsl.g:15574:2: rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4
+            // InternalPerspectiveDsl.g:15770:1: ( rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 )
+            // InternalPerspectiveDsl.g:15771:2: rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4
             {
-            pushFollow(FOLLOW_48);
+            pushFollow(FOLLOW_50);
             rule__XDoWhileExpression__Group__3__Impl();
 
             state._fsp--;
@@ -51293,22 +51918,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:15581:1: rule__XDoWhileExpression__Group__3__Impl : ( 'while' ) ;
+    // InternalPerspectiveDsl.g:15778:1: rule__XDoWhileExpression__Group__3__Impl : ( 'while' ) ;
     public final void rule__XDoWhileExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15585:1: ( ( 'while' ) )
-            // InternalPerspectiveDsl.g:15586:1: ( 'while' )
+            // InternalPerspectiveDsl.g:15782:1: ( ( 'while' ) )
+            // InternalPerspectiveDsl.g:15783:1: ( 'while' )
             {
-            // InternalPerspectiveDsl.g:15586:1: ( 'while' )
-            // InternalPerspectiveDsl.g:15587:2: 'while'
+            // InternalPerspectiveDsl.g:15783:1: ( 'while' )
+            // InternalPerspectiveDsl.g:15784:2: 'while'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3()); 
             }
-            match(input,104,FOLLOW_2); if (state.failed) return ;
+            match(input,106,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3()); 
             }
@@ -51334,16 +51959,16 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__4"
-    // InternalPerspectiveDsl.g:15596:1: rule__XDoWhileExpression__Group__4 : rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 ;
+    // InternalPerspectiveDsl.g:15793: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:15600:1: ( rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 )
-            // InternalPerspectiveDsl.g:15601:2: rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5
+            // InternalPerspectiveDsl.g:15797:1: ( rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 )
+            // InternalPerspectiveDsl.g:15798:2: rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XDoWhileExpression__Group__4__Impl();
 
             state._fsp--;
@@ -51372,22 +51997,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__4__Impl"
-    // InternalPerspectiveDsl.g:15608:1: rule__XDoWhileExpression__Group__4__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:15805:1: rule__XDoWhileExpression__Group__4__Impl : ( '(' ) ;
     public final void rule__XDoWhileExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15612:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:15613:1: ( '(' )
+            // InternalPerspectiveDsl.g:15809:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:15810:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:15613:1: ( '(' )
-            // InternalPerspectiveDsl.g:15614:2: '('
+            // InternalPerspectiveDsl.g:15810:1: ( '(' )
+            // InternalPerspectiveDsl.g:15811:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4()); 
             }
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4()); 
             }
@@ -51413,16 +52038,16 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__5"
-    // InternalPerspectiveDsl.g:15623:1: rule__XDoWhileExpression__Group__5 : rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 ;
+    // InternalPerspectiveDsl.g:15820: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:15627:1: ( rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 )
-            // InternalPerspectiveDsl.g:15628:2: rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6
+            // InternalPerspectiveDsl.g:15824:1: ( rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 )
+            // InternalPerspectiveDsl.g:15825:2: rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6
             {
-            pushFollow(FOLLOW_97);
+            pushFollow(FOLLOW_99);
             rule__XDoWhileExpression__Group__5__Impl();
 
             state._fsp--;
@@ -51451,23 +52076,23 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__5__Impl"
-    // InternalPerspectiveDsl.g:15635:1: rule__XDoWhileExpression__Group__5__Impl : ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) ;
+    // InternalPerspectiveDsl.g:15832: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:15639:1: ( ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) )
-            // InternalPerspectiveDsl.g:15640:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            // InternalPerspectiveDsl.g:15836:1: ( ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) )
+            // InternalPerspectiveDsl.g:15837:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
             {
-            // InternalPerspectiveDsl.g:15640:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
-            // InternalPerspectiveDsl.g:15641:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            // InternalPerspectiveDsl.g:15837:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            // InternalPerspectiveDsl.g:15838:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5()); 
             }
-            // InternalPerspectiveDsl.g:15642:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
-            // InternalPerspectiveDsl.g:15642:3: rule__XDoWhileExpression__PredicateAssignment_5
+            // InternalPerspectiveDsl.g:15839:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            // InternalPerspectiveDsl.g:15839:3: rule__XDoWhileExpression__PredicateAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__PredicateAssignment_5();
@@ -51502,14 +52127,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__6"
-    // InternalPerspectiveDsl.g:15650:1: rule__XDoWhileExpression__Group__6 : rule__XDoWhileExpression__Group__6__Impl ;
+    // InternalPerspectiveDsl.g:15847: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:15654:1: ( rule__XDoWhileExpression__Group__6__Impl )
-            // InternalPerspectiveDsl.g:15655:2: rule__XDoWhileExpression__Group__6__Impl
+            // InternalPerspectiveDsl.g:15851:1: ( rule__XDoWhileExpression__Group__6__Impl )
+            // InternalPerspectiveDsl.g:15852:2: rule__XDoWhileExpression__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__Group__6__Impl();
@@ -51535,22 +52160,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__6__Impl"
-    // InternalPerspectiveDsl.g:15661:1: rule__XDoWhileExpression__Group__6__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:15858:1: rule__XDoWhileExpression__Group__6__Impl : ( ')' ) ;
     public final void rule__XDoWhileExpression__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15665:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:15666:1: ( ')' )
+            // InternalPerspectiveDsl.g:15862:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:15863:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:15666:1: ( ')' )
-            // InternalPerspectiveDsl.g:15667:2: ')'
+            // InternalPerspectiveDsl.g:15863:1: ( ')' )
+            // InternalPerspectiveDsl.g:15864:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6()); 
             }
@@ -51576,14 +52201,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__0"
-    // InternalPerspectiveDsl.g:15677:1: rule__XBlockExpression__Group__0 : rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:15874: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:15681:1: ( rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 )
-            // InternalPerspectiveDsl.g:15682:2: rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1
+            // InternalPerspectiveDsl.g:15878:1: ( rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 )
+            // InternalPerspectiveDsl.g:15879:2: rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1
             {
             pushFollow(FOLLOW_8);
             rule__XBlockExpression__Group__0__Impl();
@@ -51614,23 +52239,23 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:15689:1: rule__XBlockExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:15886:1: rule__XBlockExpression__Group__0__Impl : ( () ) ;
     public final void rule__XBlockExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15693:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:15694:1: ( () )
+            // InternalPerspectiveDsl.g:15890:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:15891:1: ( () )
             {
-            // InternalPerspectiveDsl.g:15694:1: ( () )
-            // InternalPerspectiveDsl.g:15695:2: ()
+            // InternalPerspectiveDsl.g:15891:1: ( () )
+            // InternalPerspectiveDsl.g:15892:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:15696:2: ()
-            // InternalPerspectiveDsl.g:15696:3: 
+            // InternalPerspectiveDsl.g:15893:2: ()
+            // InternalPerspectiveDsl.g:15893:3: 
             {
             }
 
@@ -51655,16 +52280,16 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__1"
-    // InternalPerspectiveDsl.g:15704:1: rule__XBlockExpression__Group__1 : rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:15901: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:15708:1: ( rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 )
-            // InternalPerspectiveDsl.g:15709:2: rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2
+            // InternalPerspectiveDsl.g:15905:1: ( rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 )
+            // InternalPerspectiveDsl.g:15906:2: rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2
             {
-            pushFollow(FOLLOW_112);
+            pushFollow(FOLLOW_114);
             rule__XBlockExpression__Group__1__Impl();
 
             state._fsp--;
@@ -51693,17 +52318,17 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:15716:1: rule__XBlockExpression__Group__1__Impl : ( '{' ) ;
+    // InternalPerspectiveDsl.g:15913:1: rule__XBlockExpression__Group__1__Impl : ( '{' ) ;
     public final void rule__XBlockExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15720:1: ( ( '{' ) )
-            // InternalPerspectiveDsl.g:15721:1: ( '{' )
+            // InternalPerspectiveDsl.g:15917:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:15918:1: ( '{' )
             {
-            // InternalPerspectiveDsl.g:15721:1: ( '{' )
-            // InternalPerspectiveDsl.g:15722:2: '{'
+            // InternalPerspectiveDsl.g:15918:1: ( '{' )
+            // InternalPerspectiveDsl.g:15919:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1()); 
@@ -51734,16 +52359,16 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__2"
-    // InternalPerspectiveDsl.g:15731:1: rule__XBlockExpression__Group__2 : rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:15928: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:15735:1: ( rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 )
-            // InternalPerspectiveDsl.g:15736:2: rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3
+            // InternalPerspectiveDsl.g:15932:1: ( rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 )
+            // InternalPerspectiveDsl.g:15933:2: rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3
             {
-            pushFollow(FOLLOW_112);
+            pushFollow(FOLLOW_114);
             rule__XBlockExpression__Group__2__Impl();
 
             state._fsp--;
@@ -51772,37 +52397,37 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:15743:1: rule__XBlockExpression__Group__2__Impl : ( ( rule__XBlockExpression__Group_2__0 )* ) ;
+    // InternalPerspectiveDsl.g:15940: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:15747:1: ( ( ( rule__XBlockExpression__Group_2__0 )* ) )
-            // InternalPerspectiveDsl.g:15748:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            // InternalPerspectiveDsl.g:15944:1: ( ( ( rule__XBlockExpression__Group_2__0 )* ) )
+            // InternalPerspectiveDsl.g:15945:1: ( ( rule__XBlockExpression__Group_2__0 )* )
             {
-            // InternalPerspectiveDsl.g:15748:1: ( ( rule__XBlockExpression__Group_2__0 )* )
-            // InternalPerspectiveDsl.g:15749:2: ( rule__XBlockExpression__Group_2__0 )*
+            // InternalPerspectiveDsl.g:15945:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            // InternalPerspectiveDsl.g:15946:2: ( rule__XBlockExpression__Group_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getGroup_2()); 
             }
-            // InternalPerspectiveDsl.g:15750:2: ( rule__XBlockExpression__Group_2__0 )*
+            // InternalPerspectiveDsl.g:15947:2: ( rule__XBlockExpression__Group_2__0 )*
             loop109:
             do {
                 int alt109=2;
                 int LA109_0 = input.LA(1);
 
-                if ( ((LA109_0>=RULE_ID && LA109_0<=RULE_DECIMAL)||LA109_0==27||(LA109_0>=34 && LA109_0<=35)||LA109_0==40||(LA109_0>=44 && LA109_0<=50)||LA109_0==54||LA109_0==89||(LA109_0>=93 && LA109_0<=94)||LA109_0==97||LA109_0==99||(LA109_0>=103 && LA109_0<=111)||LA109_0==113||(LA109_0>=123 && LA109_0<=124)) ) {
+                if ( ((LA109_0>=RULE_ID && LA109_0<=RULE_DECIMAL)||LA109_0==27||(LA109_0>=34 && LA109_0<=35)||LA109_0==40||(LA109_0>=44 && LA109_0<=50)||LA109_0==54||LA109_0==91||(LA109_0>=95 && LA109_0<=96)||LA109_0==99||LA109_0==101||(LA109_0>=105 && LA109_0<=113)||LA109_0==115||(LA109_0>=125 && LA109_0<=126)) ) {
                     alt109=1;
                 }
 
 
                 switch (alt109) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:15750:3: rule__XBlockExpression__Group_2__0
+            	    // InternalPerspectiveDsl.g:15947:3: rule__XBlockExpression__Group_2__0
             	    {
-            	    pushFollow(FOLLOW_96);
+            	    pushFollow(FOLLOW_98);
             	    rule__XBlockExpression__Group_2__0();
 
             	    state._fsp--;
@@ -51841,14 +52466,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__3"
-    // InternalPerspectiveDsl.g:15758:1: rule__XBlockExpression__Group__3 : rule__XBlockExpression__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:15955: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:15762:1: ( rule__XBlockExpression__Group__3__Impl )
-            // InternalPerspectiveDsl.g:15763:2: rule__XBlockExpression__Group__3__Impl
+            // InternalPerspectiveDsl.g:15959:1: ( rule__XBlockExpression__Group__3__Impl )
+            // InternalPerspectiveDsl.g:15960:2: rule__XBlockExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__Group__3__Impl();
@@ -51874,17 +52499,17 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:15769:1: rule__XBlockExpression__Group__3__Impl : ( '}' ) ;
+    // InternalPerspectiveDsl.g:15966:1: rule__XBlockExpression__Group__3__Impl : ( '}' ) ;
     public final void rule__XBlockExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15773:1: ( ( '}' ) )
-            // InternalPerspectiveDsl.g:15774:1: ( '}' )
+            // InternalPerspectiveDsl.g:15970:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:15971:1: ( '}' )
             {
-            // InternalPerspectiveDsl.g:15774:1: ( '}' )
-            // InternalPerspectiveDsl.g:15775:2: '}'
+            // InternalPerspectiveDsl.g:15971:1: ( '}' )
+            // InternalPerspectiveDsl.g:15972:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3()); 
@@ -51915,16 +52540,16 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__0"
-    // InternalPerspectiveDsl.g:15785:1: rule__XBlockExpression__Group_2__0 : rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 ;
+    // InternalPerspectiveDsl.g:15982: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:15789:1: ( rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 )
-            // InternalPerspectiveDsl.g:15790:2: rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1
+            // InternalPerspectiveDsl.g:15986:1: ( rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 )
+            // InternalPerspectiveDsl.g:15987:2: rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1
             {
-            pushFollow(FOLLOW_44);
+            pushFollow(FOLLOW_46);
             rule__XBlockExpression__Group_2__0__Impl();
 
             state._fsp--;
@@ -51953,23 +52578,23 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__0__Impl"
-    // InternalPerspectiveDsl.g:15797:1: rule__XBlockExpression__Group_2__0__Impl : ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) ;
+    // InternalPerspectiveDsl.g:15994: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:15801:1: ( ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) )
-            // InternalPerspectiveDsl.g:15802:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            // InternalPerspectiveDsl.g:15998:1: ( ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) )
+            // InternalPerspectiveDsl.g:15999:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
             {
-            // InternalPerspectiveDsl.g:15802:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
-            // InternalPerspectiveDsl.g:15803:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            // InternalPerspectiveDsl.g:15999:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            // InternalPerspectiveDsl.g:16000:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0()); 
             }
-            // InternalPerspectiveDsl.g:15804:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
-            // InternalPerspectiveDsl.g:15804:3: rule__XBlockExpression__ExpressionsAssignment_2_0
+            // InternalPerspectiveDsl.g:16001:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            // InternalPerspectiveDsl.g:16001:3: rule__XBlockExpression__ExpressionsAssignment_2_0
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__ExpressionsAssignment_2_0();
@@ -52004,14 +52629,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__1"
-    // InternalPerspectiveDsl.g:15812:1: rule__XBlockExpression__Group_2__1 : rule__XBlockExpression__Group_2__1__Impl ;
+    // InternalPerspectiveDsl.g:16009: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:15816:1: ( rule__XBlockExpression__Group_2__1__Impl )
-            // InternalPerspectiveDsl.g:15817:2: rule__XBlockExpression__Group_2__1__Impl
+            // InternalPerspectiveDsl.g:16013:1: ( rule__XBlockExpression__Group_2__1__Impl )
+            // InternalPerspectiveDsl.g:16014:2: rule__XBlockExpression__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__Group_2__1__Impl();
@@ -52037,33 +52662,33 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__1__Impl"
-    // InternalPerspectiveDsl.g:15823:1: rule__XBlockExpression__Group_2__1__Impl : ( ( ';' )? ) ;
+    // InternalPerspectiveDsl.g:16020:1: rule__XBlockExpression__Group_2__1__Impl : ( ( ';' )? ) ;
     public final void rule__XBlockExpression__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15827:1: ( ( ( ';' )? ) )
-            // InternalPerspectiveDsl.g:15828:1: ( ( ';' )? )
+            // InternalPerspectiveDsl.g:16024:1: ( ( ( ';' )? ) )
+            // InternalPerspectiveDsl.g:16025:1: ( ( ';' )? )
             {
-            // InternalPerspectiveDsl.g:15828:1: ( ( ';' )? )
-            // InternalPerspectiveDsl.g:15829:2: ( ';' )?
+            // InternalPerspectiveDsl.g:16025:1: ( ( ';' )? )
+            // InternalPerspectiveDsl.g:16026:2: ( ';' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1()); 
             }
-            // InternalPerspectiveDsl.g:15830:2: ( ';' )?
+            // InternalPerspectiveDsl.g:16027:2: ( ';' )?
             int alt110=2;
             int LA110_0 = input.LA(1);
 
-            if ( (LA110_0==87) ) {
+            if ( (LA110_0==89) ) {
                 alt110=1;
             }
             switch (alt110) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:15830:3: ';'
+                    // InternalPerspectiveDsl.g:16027:3: ';'
                     {
-                    match(input,87,FOLLOW_2); if (state.failed) return ;
+                    match(input,89,FOLLOW_2); if (state.failed) return ;
 
                     }
                     break;
@@ -52095,16 +52720,16 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__0"
-    // InternalPerspectiveDsl.g:15839:1: rule__XVariableDeclaration__Group__0 : rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 ;
+    // InternalPerspectiveDsl.g:16036: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:15843:1: ( rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 )
-            // InternalPerspectiveDsl.g:15844:2: rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1
+            // InternalPerspectiveDsl.g:16040:1: ( rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 )
+            // InternalPerspectiveDsl.g:16041:2: rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1
             {
-            pushFollow(FOLLOW_113);
+            pushFollow(FOLLOW_115);
             rule__XVariableDeclaration__Group__0__Impl();
 
             state._fsp--;
@@ -52133,23 +52758,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__0__Impl"
-    // InternalPerspectiveDsl.g:15851:1: rule__XVariableDeclaration__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:16048:1: rule__XVariableDeclaration__Group__0__Impl : ( () ) ;
     public final void rule__XVariableDeclaration__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15855:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:15856:1: ( () )
+            // InternalPerspectiveDsl.g:16052:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:16053:1: ( () )
             {
-            // InternalPerspectiveDsl.g:15856:1: ( () )
-            // InternalPerspectiveDsl.g:15857:2: ()
+            // InternalPerspectiveDsl.g:16053:1: ( () )
+            // InternalPerspectiveDsl.g:16054:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0()); 
             }
-            // InternalPerspectiveDsl.g:15858:2: ()
-            // InternalPerspectiveDsl.g:15858:3: 
+            // InternalPerspectiveDsl.g:16055:2: ()
+            // InternalPerspectiveDsl.g:16055:3: 
             {
             }
 
@@ -52174,16 +52799,16 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__1"
-    // InternalPerspectiveDsl.g:15866:1: rule__XVariableDeclaration__Group__1 : rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 ;
+    // InternalPerspectiveDsl.g:16063: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:15870:1: ( rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 )
-            // InternalPerspectiveDsl.g:15871:2: rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2
+            // InternalPerspectiveDsl.g:16067:1: ( rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 )
+            // InternalPerspectiveDsl.g:16068:2: rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__XVariableDeclaration__Group__1__Impl();
 
             state._fsp--;
@@ -52212,23 +52837,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__1__Impl"
-    // InternalPerspectiveDsl.g:15878:1: rule__XVariableDeclaration__Group__1__Impl : ( ( rule__XVariableDeclaration__Alternatives_1 ) ) ;
+    // InternalPerspectiveDsl.g:16075: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:15882:1: ( ( ( rule__XVariableDeclaration__Alternatives_1 ) ) )
-            // InternalPerspectiveDsl.g:15883:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            // InternalPerspectiveDsl.g:16079:1: ( ( ( rule__XVariableDeclaration__Alternatives_1 ) ) )
+            // InternalPerspectiveDsl.g:16080:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
             {
-            // InternalPerspectiveDsl.g:15883:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
-            // InternalPerspectiveDsl.g:15884:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            // InternalPerspectiveDsl.g:16080:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            // InternalPerspectiveDsl.g:16081:2: ( rule__XVariableDeclaration__Alternatives_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1()); 
             }
-            // InternalPerspectiveDsl.g:15885:2: ( rule__XVariableDeclaration__Alternatives_1 )
-            // InternalPerspectiveDsl.g:15885:3: rule__XVariableDeclaration__Alternatives_1
+            // InternalPerspectiveDsl.g:16082:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            // InternalPerspectiveDsl.g:16082:3: rule__XVariableDeclaration__Alternatives_1
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Alternatives_1();
@@ -52263,16 +52888,16 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__2"
-    // InternalPerspectiveDsl.g:15893:1: rule__XVariableDeclaration__Group__2 : rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 ;
+    // InternalPerspectiveDsl.g:16090: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:15897:1: ( rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 )
-            // InternalPerspectiveDsl.g:15898:2: rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3
+            // InternalPerspectiveDsl.g:16094:1: ( rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 )
+            // InternalPerspectiveDsl.g:16095:2: rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3
             {
-            pushFollow(FOLLOW_53);
+            pushFollow(FOLLOW_55);
             rule__XVariableDeclaration__Group__2__Impl();
 
             state._fsp--;
@@ -52301,23 +52926,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__2__Impl"
-    // InternalPerspectiveDsl.g:15905:1: rule__XVariableDeclaration__Group__2__Impl : ( ( rule__XVariableDeclaration__Alternatives_2 ) ) ;
+    // InternalPerspectiveDsl.g:16102: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:15909:1: ( ( ( rule__XVariableDeclaration__Alternatives_2 ) ) )
-            // InternalPerspectiveDsl.g:15910:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            // InternalPerspectiveDsl.g:16106:1: ( ( ( rule__XVariableDeclaration__Alternatives_2 ) ) )
+            // InternalPerspectiveDsl.g:16107:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
             {
-            // InternalPerspectiveDsl.g:15910:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
-            // InternalPerspectiveDsl.g:15911:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            // InternalPerspectiveDsl.g:16107:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            // InternalPerspectiveDsl.g:16108:2: ( rule__XVariableDeclaration__Alternatives_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2()); 
             }
-            // InternalPerspectiveDsl.g:15912:2: ( rule__XVariableDeclaration__Alternatives_2 )
-            // InternalPerspectiveDsl.g:15912:3: rule__XVariableDeclaration__Alternatives_2
+            // InternalPerspectiveDsl.g:16109:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            // InternalPerspectiveDsl.g:16109:3: rule__XVariableDeclaration__Alternatives_2
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Alternatives_2();
@@ -52352,14 +52977,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__3"
-    // InternalPerspectiveDsl.g:15920:1: rule__XVariableDeclaration__Group__3 : rule__XVariableDeclaration__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:16117: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:15924:1: ( rule__XVariableDeclaration__Group__3__Impl )
-            // InternalPerspectiveDsl.g:15925:2: rule__XVariableDeclaration__Group__3__Impl
+            // InternalPerspectiveDsl.g:16121:1: ( rule__XVariableDeclaration__Group__3__Impl )
+            // InternalPerspectiveDsl.g:16122:2: rule__XVariableDeclaration__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group__3__Impl();
@@ -52385,22 +53010,22 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__3__Impl"
-    // InternalPerspectiveDsl.g:15931:1: rule__XVariableDeclaration__Group__3__Impl : ( ( rule__XVariableDeclaration__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:16128: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:15935:1: ( ( ( rule__XVariableDeclaration__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:15936:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:16132:1: ( ( ( rule__XVariableDeclaration__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:16133:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:15936:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:15937:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            // InternalPerspectiveDsl.g:16133:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:16134:2: ( rule__XVariableDeclaration__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:15938:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            // InternalPerspectiveDsl.g:16135:2: ( rule__XVariableDeclaration__Group_3__0 )?
             int alt111=2;
             int LA111_0 = input.LA(1);
 
@@ -52409,7 +53034,7 @@
             }
             switch (alt111) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:15938:3: rule__XVariableDeclaration__Group_3__0
+                    // InternalPerspectiveDsl.g:16135:3: rule__XVariableDeclaration__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__Group_3__0();
@@ -52447,14 +53072,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0__0"
-    // InternalPerspectiveDsl.g:15947:1: rule__XVariableDeclaration__Group_2_0__0 : rule__XVariableDeclaration__Group_2_0__0__Impl ;
+    // InternalPerspectiveDsl.g:16144: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:15951:1: ( rule__XVariableDeclaration__Group_2_0__0__Impl )
-            // InternalPerspectiveDsl.g:15952:2: rule__XVariableDeclaration__Group_2_0__0__Impl
+            // InternalPerspectiveDsl.g:16148:1: ( rule__XVariableDeclaration__Group_2_0__0__Impl )
+            // InternalPerspectiveDsl.g:16149:2: rule__XVariableDeclaration__Group_2_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_2_0__0__Impl();
@@ -52480,23 +53105,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0__0__Impl"
-    // InternalPerspectiveDsl.g:15958:1: rule__XVariableDeclaration__Group_2_0__0__Impl : ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:16155: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:15962:1: ( ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:15963:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            // InternalPerspectiveDsl.g:16159:1: ( ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:16160:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:15963:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
-            // InternalPerspectiveDsl.g:15964:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            // InternalPerspectiveDsl.g:16160:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            // InternalPerspectiveDsl.g:16161:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0()); 
             }
-            // InternalPerspectiveDsl.g:15965:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
-            // InternalPerspectiveDsl.g:15965:3: rule__XVariableDeclaration__Group_2_0_0__0
+            // InternalPerspectiveDsl.g:16162:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            // InternalPerspectiveDsl.g:16162:3: rule__XVariableDeclaration__Group_2_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_2_0_0__0();
@@ -52531,14 +53156,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__0"
-    // InternalPerspectiveDsl.g:15974: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:16171: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:15978:1: ( rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 )
-            // InternalPerspectiveDsl.g:15979:2: rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1
+            // InternalPerspectiveDsl.g:16175:1: ( rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 )
+            // InternalPerspectiveDsl.g:16176: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();
@@ -52569,23 +53194,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:15986:1: rule__XVariableDeclaration__Group_2_0_0__0__Impl : ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) ;
+    // InternalPerspectiveDsl.g:16183: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:15990:1: ( ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) )
-            // InternalPerspectiveDsl.g:15991:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            // InternalPerspectiveDsl.g:16187:1: ( ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) )
+            // InternalPerspectiveDsl.g:16188:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
             {
-            // InternalPerspectiveDsl.g:15991:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
-            // InternalPerspectiveDsl.g:15992:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            // InternalPerspectiveDsl.g:16188:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            // InternalPerspectiveDsl.g:16189:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:15993:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
-            // InternalPerspectiveDsl.g:15993:3: rule__XVariableDeclaration__TypeAssignment_2_0_0_0
+            // InternalPerspectiveDsl.g:16190:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            // InternalPerspectiveDsl.g:16190:3: rule__XVariableDeclaration__TypeAssignment_2_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__TypeAssignment_2_0_0_0();
@@ -52620,14 +53245,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__1"
-    // InternalPerspectiveDsl.g:16001:1: rule__XVariableDeclaration__Group_2_0_0__1 : rule__XVariableDeclaration__Group_2_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:16198: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:16005:1: ( rule__XVariableDeclaration__Group_2_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:16006:2: rule__XVariableDeclaration__Group_2_0_0__1__Impl
+            // InternalPerspectiveDsl.g:16202:1: ( rule__XVariableDeclaration__Group_2_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:16203:2: rule__XVariableDeclaration__Group_2_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_2_0_0__1__Impl();
@@ -52653,23 +53278,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:16012:1: rule__XVariableDeclaration__Group_2_0_0__1__Impl : ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:16209: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:16016:1: ( ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:16017:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            // InternalPerspectiveDsl.g:16213:1: ( ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:16214:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:16017:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
-            // InternalPerspectiveDsl.g:16018:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            // InternalPerspectiveDsl.g:16214:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            // InternalPerspectiveDsl.g:16215:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:16019:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
-            // InternalPerspectiveDsl.g:16019:3: rule__XVariableDeclaration__NameAssignment_2_0_0_1
+            // InternalPerspectiveDsl.g:16216:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            // InternalPerspectiveDsl.g:16216:3: rule__XVariableDeclaration__NameAssignment_2_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__NameAssignment_2_0_0_1();
@@ -52704,16 +53329,16 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__0"
-    // InternalPerspectiveDsl.g:16028:1: rule__XVariableDeclaration__Group_3__0 : rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 ;
+    // InternalPerspectiveDsl.g:16225: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:16032:1: ( rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 )
-            // InternalPerspectiveDsl.g:16033:2: rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1
+            // InternalPerspectiveDsl.g:16229:1: ( rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 )
+            // InternalPerspectiveDsl.g:16230:2: rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XVariableDeclaration__Group_3__0__Impl();
 
             state._fsp--;
@@ -52742,17 +53367,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:16040:1: rule__XVariableDeclaration__Group_3__0__Impl : ( '=' ) ;
+    // InternalPerspectiveDsl.g:16237:1: rule__XVariableDeclaration__Group_3__0__Impl : ( '=' ) ;
     public final void rule__XVariableDeclaration__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16044:1: ( ( '=' ) )
-            // InternalPerspectiveDsl.g:16045:1: ( '=' )
+            // InternalPerspectiveDsl.g:16241:1: ( ( '=' ) )
+            // InternalPerspectiveDsl.g:16242:1: ( '=' )
             {
-            // InternalPerspectiveDsl.g:16045:1: ( '=' )
-            // InternalPerspectiveDsl.g:16046:2: '='
+            // InternalPerspectiveDsl.g:16242:1: ( '=' )
+            // InternalPerspectiveDsl.g:16243:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0()); 
@@ -52783,14 +53408,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__1"
-    // InternalPerspectiveDsl.g:16055:1: rule__XVariableDeclaration__Group_3__1 : rule__XVariableDeclaration__Group_3__1__Impl ;
+    // InternalPerspectiveDsl.g:16252: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:16059:1: ( rule__XVariableDeclaration__Group_3__1__Impl )
-            // InternalPerspectiveDsl.g:16060:2: rule__XVariableDeclaration__Group_3__1__Impl
+            // InternalPerspectiveDsl.g:16256:1: ( rule__XVariableDeclaration__Group_3__1__Impl )
+            // InternalPerspectiveDsl.g:16257:2: rule__XVariableDeclaration__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_3__1__Impl();
@@ -52816,23 +53441,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:16066:1: rule__XVariableDeclaration__Group_3__1__Impl : ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) ;
+    // InternalPerspectiveDsl.g:16263: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:16070:1: ( ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) )
-            // InternalPerspectiveDsl.g:16071:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            // InternalPerspectiveDsl.g:16267:1: ( ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) )
+            // InternalPerspectiveDsl.g:16268:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
             {
-            // InternalPerspectiveDsl.g:16071:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
-            // InternalPerspectiveDsl.g:16072:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            // InternalPerspectiveDsl.g:16268:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            // InternalPerspectiveDsl.g:16269:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1()); 
             }
-            // InternalPerspectiveDsl.g:16073:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
-            // InternalPerspectiveDsl.g:16073:3: rule__XVariableDeclaration__RightAssignment_3_1
+            // InternalPerspectiveDsl.g:16270:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            // InternalPerspectiveDsl.g:16270:3: rule__XVariableDeclaration__RightAssignment_3_1
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__RightAssignment_3_1();
@@ -52867,16 +53492,16 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__0"
-    // InternalPerspectiveDsl.g:16082:1: rule__JvmFormalParameter__Group__0 : rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 ;
+    // InternalPerspectiveDsl.g:16279: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:16086:1: ( rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 )
-            // InternalPerspectiveDsl.g:16087:2: rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1
+            // InternalPerspectiveDsl.g:16283:1: ( rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 )
+            // InternalPerspectiveDsl.g:16284:2: rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__JvmFormalParameter__Group__0__Impl();
 
             state._fsp--;
@@ -52905,38 +53530,38 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__0__Impl"
-    // InternalPerspectiveDsl.g:16094:1: rule__JvmFormalParameter__Group__0__Impl : ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) ;
+    // InternalPerspectiveDsl.g:16291: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:16098:1: ( ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) )
-            // InternalPerspectiveDsl.g:16099:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            // InternalPerspectiveDsl.g:16295:1: ( ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) )
+            // InternalPerspectiveDsl.g:16296:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
             {
-            // InternalPerspectiveDsl.g:16099:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
-            // InternalPerspectiveDsl.g:16100:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            // InternalPerspectiveDsl.g:16296:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            // InternalPerspectiveDsl.g:16297:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
             }
-            // InternalPerspectiveDsl.g:16101:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            // InternalPerspectiveDsl.g:16298:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
             int alt112=2;
             int LA112_0 = input.LA(1);
 
             if ( (LA112_0==RULE_ID) ) {
                 int LA112_1 = input.LA(2);
 
-                if ( (LA112_1==RULE_ID||LA112_1==27||LA112_1==43||LA112_1==94) ) {
+                if ( (LA112_1==RULE_ID||LA112_1==27||LA112_1==43||LA112_1==96) ) {
                     alt112=1;
                 }
             }
-            else if ( (LA112_0==31||LA112_0==89) ) {
+            else if ( (LA112_0==31||LA112_0==91) ) {
                 alt112=1;
             }
             switch (alt112) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:16101:3: rule__JvmFormalParameter__ParameterTypeAssignment_0
+                    // InternalPerspectiveDsl.g:16298:3: rule__JvmFormalParameter__ParameterTypeAssignment_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmFormalParameter__ParameterTypeAssignment_0();
@@ -52974,14 +53599,14 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__1"
-    // InternalPerspectiveDsl.g:16109:1: rule__JvmFormalParameter__Group__1 : rule__JvmFormalParameter__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:16306: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:16113:1: ( rule__JvmFormalParameter__Group__1__Impl )
-            // InternalPerspectiveDsl.g:16114:2: rule__JvmFormalParameter__Group__1__Impl
+            // InternalPerspectiveDsl.g:16310:1: ( rule__JvmFormalParameter__Group__1__Impl )
+            // InternalPerspectiveDsl.g:16311:2: rule__JvmFormalParameter__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmFormalParameter__Group__1__Impl();
@@ -53007,23 +53632,23 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__1__Impl"
-    // InternalPerspectiveDsl.g:16120:1: rule__JvmFormalParameter__Group__1__Impl : ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:16317: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:16124:1: ( ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:16125:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            // InternalPerspectiveDsl.g:16321:1: ( ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:16322:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:16125:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
-            // InternalPerspectiveDsl.g:16126:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            // InternalPerspectiveDsl.g:16322:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            // InternalPerspectiveDsl.g:16323:2: ( rule__JvmFormalParameter__NameAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:16127:2: ( rule__JvmFormalParameter__NameAssignment_1 )
-            // InternalPerspectiveDsl.g:16127:3: rule__JvmFormalParameter__NameAssignment_1
+            // InternalPerspectiveDsl.g:16324:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            // InternalPerspectiveDsl.g:16324:3: rule__JvmFormalParameter__NameAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmFormalParameter__NameAssignment_1();
@@ -53058,14 +53683,14 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__0"
-    // InternalPerspectiveDsl.g:16136:1: rule__FullJvmFormalParameter__Group__0 : rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 ;
+    // InternalPerspectiveDsl.g:16333: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:16140:1: ( rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 )
-            // InternalPerspectiveDsl.g:16141:2: rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1
+            // InternalPerspectiveDsl.g:16337:1: ( rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 )
+            // InternalPerspectiveDsl.g:16338:2: rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1
             {
             pushFollow(FOLLOW_7);
             rule__FullJvmFormalParameter__Group__0__Impl();
@@ -53096,23 +53721,23 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__0__Impl"
-    // InternalPerspectiveDsl.g:16148:1: rule__FullJvmFormalParameter__Group__0__Impl : ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) ;
+    // InternalPerspectiveDsl.g:16345: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:16152:1: ( ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) )
-            // InternalPerspectiveDsl.g:16153:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            // InternalPerspectiveDsl.g:16349:1: ( ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) )
+            // InternalPerspectiveDsl.g:16350:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
             {
-            // InternalPerspectiveDsl.g:16153:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
-            // InternalPerspectiveDsl.g:16154:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            // InternalPerspectiveDsl.g:16350:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            // InternalPerspectiveDsl.g:16351:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
             }
-            // InternalPerspectiveDsl.g:16155:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
-            // InternalPerspectiveDsl.g:16155:3: rule__FullJvmFormalParameter__ParameterTypeAssignment_0
+            // InternalPerspectiveDsl.g:16352:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            // InternalPerspectiveDsl.g:16352:3: rule__FullJvmFormalParameter__ParameterTypeAssignment_0
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__ParameterTypeAssignment_0();
@@ -53147,14 +53772,14 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__1"
-    // InternalPerspectiveDsl.g:16163:1: rule__FullJvmFormalParameter__Group__1 : rule__FullJvmFormalParameter__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:16360: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:16167:1: ( rule__FullJvmFormalParameter__Group__1__Impl )
-            // InternalPerspectiveDsl.g:16168:2: rule__FullJvmFormalParameter__Group__1__Impl
+            // InternalPerspectiveDsl.g:16364:1: ( rule__FullJvmFormalParameter__Group__1__Impl )
+            // InternalPerspectiveDsl.g:16365:2: rule__FullJvmFormalParameter__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__Group__1__Impl();
@@ -53180,23 +53805,23 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__1__Impl"
-    // InternalPerspectiveDsl.g:16174:1: rule__FullJvmFormalParameter__Group__1__Impl : ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:16371: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:16178:1: ( ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:16179:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            // InternalPerspectiveDsl.g:16375:1: ( ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:16376:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:16179:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
-            // InternalPerspectiveDsl.g:16180:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            // InternalPerspectiveDsl.g:16376:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            // InternalPerspectiveDsl.g:16377:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:16181:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
-            // InternalPerspectiveDsl.g:16181:3: rule__FullJvmFormalParameter__NameAssignment_1
+            // InternalPerspectiveDsl.g:16378:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            // InternalPerspectiveDsl.g:16378:3: rule__FullJvmFormalParameter__NameAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__NameAssignment_1();
@@ -53231,16 +53856,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__0"
-    // InternalPerspectiveDsl.g:16190:1: rule__XFeatureCall__Group__0 : rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 ;
+    // InternalPerspectiveDsl.g:16387: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:16194:1: ( rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 )
-            // InternalPerspectiveDsl.g:16195:2: rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1
+            // InternalPerspectiveDsl.g:16391:1: ( rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 )
+            // InternalPerspectiveDsl.g:16392:2: rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1
             {
-            pushFollow(FOLLOW_87);
+            pushFollow(FOLLOW_89);
             rule__XFeatureCall__Group__0__Impl();
 
             state._fsp--;
@@ -53269,23 +53894,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__0__Impl"
-    // InternalPerspectiveDsl.g:16202:1: rule__XFeatureCall__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:16399:1: rule__XFeatureCall__Group__0__Impl : ( () ) ;
     public final void rule__XFeatureCall__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16206:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:16207:1: ( () )
+            // InternalPerspectiveDsl.g:16403:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:16404:1: ( () )
             {
-            // InternalPerspectiveDsl.g:16207:1: ( () )
-            // InternalPerspectiveDsl.g:16208:2: ()
+            // InternalPerspectiveDsl.g:16404:1: ( () )
+            // InternalPerspectiveDsl.g:16405:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0()); 
             }
-            // InternalPerspectiveDsl.g:16209:2: ()
-            // InternalPerspectiveDsl.g:16209:3: 
+            // InternalPerspectiveDsl.g:16406:2: ()
+            // InternalPerspectiveDsl.g:16406:3: 
             {
             }
 
@@ -53310,16 +53935,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__1"
-    // InternalPerspectiveDsl.g:16217:1: rule__XFeatureCall__Group__1 : rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 ;
+    // InternalPerspectiveDsl.g:16414: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:16221:1: ( rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 )
-            // InternalPerspectiveDsl.g:16222:2: rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2
+            // InternalPerspectiveDsl.g:16418:1: ( rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 )
+            // InternalPerspectiveDsl.g:16419:2: rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2
             {
-            pushFollow(FOLLOW_87);
+            pushFollow(FOLLOW_89);
             rule__XFeatureCall__Group__1__Impl();
 
             state._fsp--;
@@ -53348,22 +53973,22 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__1__Impl"
-    // InternalPerspectiveDsl.g:16229:1: rule__XFeatureCall__Group__1__Impl : ( ( rule__XFeatureCall__Group_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:16426: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:16233:1: ( ( ( rule__XFeatureCall__Group_1__0 )? ) )
-            // InternalPerspectiveDsl.g:16234:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:16430:1: ( ( ( rule__XFeatureCall__Group_1__0 )? ) )
+            // InternalPerspectiveDsl.g:16431:1: ( ( rule__XFeatureCall__Group_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:16234:1: ( ( rule__XFeatureCall__Group_1__0 )? )
-            // InternalPerspectiveDsl.g:16235:2: ( rule__XFeatureCall__Group_1__0 )?
+            // InternalPerspectiveDsl.g:16431:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:16432:2: ( rule__XFeatureCall__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:16236:2: ( rule__XFeatureCall__Group_1__0 )?
+            // InternalPerspectiveDsl.g:16433:2: ( rule__XFeatureCall__Group_1__0 )?
             int alt113=2;
             int LA113_0 = input.LA(1);
 
@@ -53372,7 +53997,7 @@
             }
             switch (alt113) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:16236:3: rule__XFeatureCall__Group_1__0
+                    // InternalPerspectiveDsl.g:16433:3: rule__XFeatureCall__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Group_1__0();
@@ -53410,16 +54035,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__2"
-    // InternalPerspectiveDsl.g:16244:1: rule__XFeatureCall__Group__2 : rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 ;
+    // InternalPerspectiveDsl.g:16441: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:16248:1: ( rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 )
-            // InternalPerspectiveDsl.g:16249:2: rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3
+            // InternalPerspectiveDsl.g:16445:1: ( rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 )
+            // InternalPerspectiveDsl.g:16446:2: rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3
             {
-            pushFollow(FOLLOW_88);
+            pushFollow(FOLLOW_90);
             rule__XFeatureCall__Group__2__Impl();
 
             state._fsp--;
@@ -53448,23 +54073,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__2__Impl"
-    // InternalPerspectiveDsl.g:16256:1: rule__XFeatureCall__Group__2__Impl : ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:16453: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:16260:1: ( ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:16261:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            // InternalPerspectiveDsl.g:16457:1: ( ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:16458:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:16261:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
-            // InternalPerspectiveDsl.g:16262:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            // InternalPerspectiveDsl.g:16458:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            // InternalPerspectiveDsl.g:16459:2: ( rule__XFeatureCall__FeatureAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:16263:2: ( rule__XFeatureCall__FeatureAssignment_2 )
-            // InternalPerspectiveDsl.g:16263:3: rule__XFeatureCall__FeatureAssignment_2
+            // InternalPerspectiveDsl.g:16460:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            // InternalPerspectiveDsl.g:16460:3: rule__XFeatureCall__FeatureAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__FeatureAssignment_2();
@@ -53499,16 +54124,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__3"
-    // InternalPerspectiveDsl.g:16271:1: rule__XFeatureCall__Group__3 : rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 ;
+    // InternalPerspectiveDsl.g:16468: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:16275:1: ( rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 )
-            // InternalPerspectiveDsl.g:16276:2: rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4
+            // InternalPerspectiveDsl.g:16472:1: ( rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 )
+            // InternalPerspectiveDsl.g:16473:2: rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4
             {
-            pushFollow(FOLLOW_88);
+            pushFollow(FOLLOW_90);
             rule__XFeatureCall__Group__3__Impl();
 
             state._fsp--;
@@ -53537,27 +54162,27 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__3__Impl"
-    // InternalPerspectiveDsl.g:16283:1: rule__XFeatureCall__Group__3__Impl : ( ( rule__XFeatureCall__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:16480: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:16287:1: ( ( ( rule__XFeatureCall__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:16288:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:16484:1: ( ( ( rule__XFeatureCall__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:16485:1: ( ( rule__XFeatureCall__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:16288:1: ( ( rule__XFeatureCall__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:16289:2: ( rule__XFeatureCall__Group_3__0 )?
+            // InternalPerspectiveDsl.g:16485:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:16486:2: ( rule__XFeatureCall__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:16290:2: ( rule__XFeatureCall__Group_3__0 )?
+            // InternalPerspectiveDsl.g:16487:2: ( rule__XFeatureCall__Group_3__0 )?
             int alt114=2;
             alt114 = dfa114.predict(input);
             switch (alt114) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:16290:3: rule__XFeatureCall__Group_3__0
+                    // InternalPerspectiveDsl.g:16487:3: rule__XFeatureCall__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Group_3__0();
@@ -53595,14 +54220,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__4"
-    // InternalPerspectiveDsl.g:16298:1: rule__XFeatureCall__Group__4 : rule__XFeatureCall__Group__4__Impl ;
+    // InternalPerspectiveDsl.g:16495: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:16302:1: ( rule__XFeatureCall__Group__4__Impl )
-            // InternalPerspectiveDsl.g:16303:2: rule__XFeatureCall__Group__4__Impl
+            // InternalPerspectiveDsl.g:16499:1: ( rule__XFeatureCall__Group__4__Impl )
+            // InternalPerspectiveDsl.g:16500:2: rule__XFeatureCall__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group__4__Impl();
@@ -53628,27 +54253,27 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__4__Impl"
-    // InternalPerspectiveDsl.g:16309:1: rule__XFeatureCall__Group__4__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) ;
+    // InternalPerspectiveDsl.g:16506: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:16313:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) )
-            // InternalPerspectiveDsl.g:16314:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            // InternalPerspectiveDsl.g:16510:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) )
+            // InternalPerspectiveDsl.g:16511:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
             {
-            // InternalPerspectiveDsl.g:16314:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
-            // InternalPerspectiveDsl.g:16315:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            // InternalPerspectiveDsl.g:16511:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            // InternalPerspectiveDsl.g:16512:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4()); 
             }
-            // InternalPerspectiveDsl.g:16316:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            // InternalPerspectiveDsl.g:16513:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
             int alt115=2;
             alt115 = dfa115.predict(input);
             switch (alt115) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:16316:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
+                    // InternalPerspectiveDsl.g:16513:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__FeatureCallArgumentsAssignment_4();
@@ -53686,16 +54311,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__0"
-    // InternalPerspectiveDsl.g:16325:1: rule__XFeatureCall__Group_1__0 : rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 ;
+    // InternalPerspectiveDsl.g:16522: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:16329:1: ( rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 )
-            // InternalPerspectiveDsl.g:16330:2: rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1
+            // InternalPerspectiveDsl.g:16526:1: ( rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 )
+            // InternalPerspectiveDsl.g:16527:2: rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1
             {
-            pushFollow(FOLLOW_89);
+            pushFollow(FOLLOW_91);
             rule__XFeatureCall__Group_1__0__Impl();
 
             state._fsp--;
@@ -53724,17 +54349,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:16337:1: rule__XFeatureCall__Group_1__0__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:16534:1: rule__XFeatureCall__Group_1__0__Impl : ( '<' ) ;
     public final void rule__XFeatureCall__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16341:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:16342:1: ( '<' )
+            // InternalPerspectiveDsl.g:16538:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:16539:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:16342:1: ( '<' )
-            // InternalPerspectiveDsl.g:16343:2: '<'
+            // InternalPerspectiveDsl.g:16539:1: ( '<' )
+            // InternalPerspectiveDsl.g:16540:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0()); 
@@ -53765,16 +54390,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__1"
-    // InternalPerspectiveDsl.g:16352:1: rule__XFeatureCall__Group_1__1 : rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 ;
+    // InternalPerspectiveDsl.g:16549: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:16356:1: ( rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 )
-            // InternalPerspectiveDsl.g:16357:2: rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2
+            // InternalPerspectiveDsl.g:16553:1: ( rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 )
+            // InternalPerspectiveDsl.g:16554:2: rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2
             {
-            pushFollow(FOLLOW_90);
+            pushFollow(FOLLOW_92);
             rule__XFeatureCall__Group_1__1__Impl();
 
             state._fsp--;
@@ -53803,23 +54428,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:16364:1: rule__XFeatureCall__Group_1__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:16561: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:16368:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:16369:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:16565:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:16566:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:16369:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:16370:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            // InternalPerspectiveDsl.g:16566:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:16567:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:16371:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
-            // InternalPerspectiveDsl.g:16371:3: rule__XFeatureCall__TypeArgumentsAssignment_1_1
+            // InternalPerspectiveDsl.g:16568:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            // InternalPerspectiveDsl.g:16568:3: rule__XFeatureCall__TypeArgumentsAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__TypeArgumentsAssignment_1_1();
@@ -53854,16 +54479,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__2"
-    // InternalPerspectiveDsl.g:16379:1: rule__XFeatureCall__Group_1__2 : rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 ;
+    // InternalPerspectiveDsl.g:16576: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:16383:1: ( rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 )
-            // InternalPerspectiveDsl.g:16384:2: rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3
+            // InternalPerspectiveDsl.g:16580:1: ( rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 )
+            // InternalPerspectiveDsl.g:16581:2: rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3
             {
-            pushFollow(FOLLOW_90);
+            pushFollow(FOLLOW_92);
             rule__XFeatureCall__Group_1__2__Impl();
 
             state._fsp--;
@@ -53892,37 +54517,37 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__2__Impl"
-    // InternalPerspectiveDsl.g:16391:1: rule__XFeatureCall__Group_1__2__Impl : ( ( rule__XFeatureCall__Group_1_2__0 )* ) ;
+    // InternalPerspectiveDsl.g:16588: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:16395:1: ( ( ( rule__XFeatureCall__Group_1_2__0 )* ) )
-            // InternalPerspectiveDsl.g:16396:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            // InternalPerspectiveDsl.g:16592:1: ( ( ( rule__XFeatureCall__Group_1_2__0 )* ) )
+            // InternalPerspectiveDsl.g:16593:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
             {
-            // InternalPerspectiveDsl.g:16396:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
-            // InternalPerspectiveDsl.g:16397:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            // InternalPerspectiveDsl.g:16593:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            // InternalPerspectiveDsl.g:16594:2: ( rule__XFeatureCall__Group_1_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_1_2()); 
             }
-            // InternalPerspectiveDsl.g:16398:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            // InternalPerspectiveDsl.g:16595:2: ( rule__XFeatureCall__Group_1_2__0 )*
             loop116:
             do {
                 int alt116=2;
                 int LA116_0 = input.LA(1);
 
-                if ( (LA116_0==91) ) {
+                if ( (LA116_0==93) ) {
                     alt116=1;
                 }
 
 
                 switch (alt116) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:16398:3: rule__XFeatureCall__Group_1_2__0
+            	    // InternalPerspectiveDsl.g:16595:3: rule__XFeatureCall__Group_1_2__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XFeatureCall__Group_1_2__0();
 
             	    state._fsp--;
@@ -53961,14 +54586,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__3"
-    // InternalPerspectiveDsl.g:16406:1: rule__XFeatureCall__Group_1__3 : rule__XFeatureCall__Group_1__3__Impl ;
+    // InternalPerspectiveDsl.g:16603: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:16410:1: ( rule__XFeatureCall__Group_1__3__Impl )
-            // InternalPerspectiveDsl.g:16411:2: rule__XFeatureCall__Group_1__3__Impl
+            // InternalPerspectiveDsl.g:16607:1: ( rule__XFeatureCall__Group_1__3__Impl )
+            // InternalPerspectiveDsl.g:16608:2: rule__XFeatureCall__Group_1__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_1__3__Impl();
@@ -53994,17 +54619,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__3__Impl"
-    // InternalPerspectiveDsl.g:16417:1: rule__XFeatureCall__Group_1__3__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:16614:1: rule__XFeatureCall__Group_1__3__Impl : ( '>' ) ;
     public final void rule__XFeatureCall__Group_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16421:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:16422:1: ( '>' )
+            // InternalPerspectiveDsl.g:16618:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:16619:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:16422:1: ( '>' )
-            // InternalPerspectiveDsl.g:16423:2: '>'
+            // InternalPerspectiveDsl.g:16619:1: ( '>' )
+            // InternalPerspectiveDsl.g:16620:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3()); 
@@ -54035,16 +54660,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__0"
-    // InternalPerspectiveDsl.g:16433:1: rule__XFeatureCall__Group_1_2__0 : rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 ;
+    // InternalPerspectiveDsl.g:16630: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:16437:1: ( rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 )
-            // InternalPerspectiveDsl.g:16438:2: rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1
+            // InternalPerspectiveDsl.g:16634:1: ( rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 )
+            // InternalPerspectiveDsl.g:16635:2: rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1
             {
-            pushFollow(FOLLOW_89);
+            pushFollow(FOLLOW_91);
             rule__XFeatureCall__Group_1_2__0__Impl();
 
             state._fsp--;
@@ -54073,22 +54698,22 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__0__Impl"
-    // InternalPerspectiveDsl.g:16445:1: rule__XFeatureCall__Group_1_2__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:16642: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:16449:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:16450:1: ( ',' )
+            // InternalPerspectiveDsl.g:16646:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:16647:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:16450:1: ( ',' )
-            // InternalPerspectiveDsl.g:16451:2: ','
+            // InternalPerspectiveDsl.g:16647:1: ( ',' )
+            // InternalPerspectiveDsl.g:16648:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0()); 
             }
@@ -54114,14 +54739,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__1"
-    // InternalPerspectiveDsl.g:16460:1: rule__XFeatureCall__Group_1_2__1 : rule__XFeatureCall__Group_1_2__1__Impl ;
+    // InternalPerspectiveDsl.g:16657: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:16464:1: ( rule__XFeatureCall__Group_1_2__1__Impl )
-            // InternalPerspectiveDsl.g:16465:2: rule__XFeatureCall__Group_1_2__1__Impl
+            // InternalPerspectiveDsl.g:16661:1: ( rule__XFeatureCall__Group_1_2__1__Impl )
+            // InternalPerspectiveDsl.g:16662:2: rule__XFeatureCall__Group_1_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_1_2__1__Impl();
@@ -54147,23 +54772,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__1__Impl"
-    // InternalPerspectiveDsl.g:16471:1: rule__XFeatureCall__Group_1_2__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:16668: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:16475:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) )
-            // InternalPerspectiveDsl.g:16476:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            // InternalPerspectiveDsl.g:16672:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) )
+            // InternalPerspectiveDsl.g:16673:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:16476:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
-            // InternalPerspectiveDsl.g:16477:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            // InternalPerspectiveDsl.g:16673:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            // InternalPerspectiveDsl.g:16674:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1()); 
             }
-            // InternalPerspectiveDsl.g:16478:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
-            // InternalPerspectiveDsl.g:16478:3: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1
+            // InternalPerspectiveDsl.g:16675:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            // InternalPerspectiveDsl.g:16675:3: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__TypeArgumentsAssignment_1_2_1();
@@ -54198,16 +54823,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__0"
-    // InternalPerspectiveDsl.g:16487:1: rule__XFeatureCall__Group_3__0 : rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 ;
+    // InternalPerspectiveDsl.g:16684: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:16491:1: ( rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 )
-            // InternalPerspectiveDsl.g:16492:2: rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1
+            // InternalPerspectiveDsl.g:16688:1: ( rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 )
+            // InternalPerspectiveDsl.g:16689:2: rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1
             {
-            pushFollow(FOLLOW_91);
+            pushFollow(FOLLOW_93);
             rule__XFeatureCall__Group_3__0__Impl();
 
             state._fsp--;
@@ -54236,23 +54861,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:16499:1: rule__XFeatureCall__Group_3__0__Impl : ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) ;
+    // InternalPerspectiveDsl.g:16696: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:16503:1: ( ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) )
-            // InternalPerspectiveDsl.g:16504:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:16700:1: ( ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) )
+            // InternalPerspectiveDsl.g:16701:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
             {
-            // InternalPerspectiveDsl.g:16504:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
-            // InternalPerspectiveDsl.g:16505:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            // InternalPerspectiveDsl.g:16701:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:16702:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0()); 
             }
-            // InternalPerspectiveDsl.g:16506:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
-            // InternalPerspectiveDsl.g:16506:3: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0
+            // InternalPerspectiveDsl.g:16703:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            // InternalPerspectiveDsl.g:16703:3: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__ExplicitOperationCallAssignment_3_0();
@@ -54287,16 +54912,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__1"
-    // InternalPerspectiveDsl.g:16514:1: rule__XFeatureCall__Group_3__1 : rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 ;
+    // InternalPerspectiveDsl.g:16711: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:16518:1: ( rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 )
-            // InternalPerspectiveDsl.g:16519:2: rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2
+            // InternalPerspectiveDsl.g:16715:1: ( rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 )
+            // InternalPerspectiveDsl.g:16716:2: rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2
             {
-            pushFollow(FOLLOW_91);
+            pushFollow(FOLLOW_93);
             rule__XFeatureCall__Group_3__1__Impl();
 
             state._fsp--;
@@ -54325,31 +54950,31 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:16526:1: rule__XFeatureCall__Group_3__1__Impl : ( ( rule__XFeatureCall__Alternatives_3_1 )? ) ;
+    // InternalPerspectiveDsl.g:16723: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:16530:1: ( ( ( rule__XFeatureCall__Alternatives_3_1 )? ) )
-            // InternalPerspectiveDsl.g:16531:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            // InternalPerspectiveDsl.g:16727:1: ( ( ( rule__XFeatureCall__Alternatives_3_1 )? ) )
+            // InternalPerspectiveDsl.g:16728:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
             {
-            // InternalPerspectiveDsl.g:16531:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
-            // InternalPerspectiveDsl.g:16532:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            // InternalPerspectiveDsl.g:16728:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            // InternalPerspectiveDsl.g:16729:2: ( rule__XFeatureCall__Alternatives_3_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getAlternatives_3_1()); 
             }
-            // InternalPerspectiveDsl.g:16533:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            // InternalPerspectiveDsl.g:16730:2: ( rule__XFeatureCall__Alternatives_3_1 )?
             int alt117=2;
             int LA117_0 = input.LA(1);
 
-            if ( ((LA117_0>=RULE_ID && LA117_0<=RULE_DECIMAL)||LA117_0==27||LA117_0==31||(LA117_0>=34 && LA117_0<=35)||LA117_0==40||(LA117_0>=45 && LA117_0<=50)||LA117_0==54||LA117_0==89||(LA117_0>=93 && LA117_0<=94)||LA117_0==97||LA117_0==99||(LA117_0>=103 && LA117_0<=111)||LA117_0==113||LA117_0==122||LA117_0==124) ) {
+            if ( ((LA117_0>=RULE_ID && LA117_0<=RULE_DECIMAL)||LA117_0==27||LA117_0==31||(LA117_0>=34 && LA117_0<=35)||LA117_0==40||(LA117_0>=45 && LA117_0<=50)||LA117_0==54||LA117_0==91||(LA117_0>=95 && LA117_0<=96)||LA117_0==99||LA117_0==101||(LA117_0>=105 && LA117_0<=113)||LA117_0==115||LA117_0==124||LA117_0==126) ) {
                 alt117=1;
             }
             switch (alt117) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:16533:3: rule__XFeatureCall__Alternatives_3_1
+                    // InternalPerspectiveDsl.g:16730:3: rule__XFeatureCall__Alternatives_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Alternatives_3_1();
@@ -54387,14 +55012,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__2"
-    // InternalPerspectiveDsl.g:16541:1: rule__XFeatureCall__Group_3__2 : rule__XFeatureCall__Group_3__2__Impl ;
+    // InternalPerspectiveDsl.g:16738: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:16545:1: ( rule__XFeatureCall__Group_3__2__Impl )
-            // InternalPerspectiveDsl.g:16546:2: rule__XFeatureCall__Group_3__2__Impl
+            // InternalPerspectiveDsl.g:16742:1: ( rule__XFeatureCall__Group_3__2__Impl )
+            // InternalPerspectiveDsl.g:16743:2: rule__XFeatureCall__Group_3__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_3__2__Impl();
@@ -54420,22 +55045,22 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__2__Impl"
-    // InternalPerspectiveDsl.g:16552:1: rule__XFeatureCall__Group_3__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:16749:1: rule__XFeatureCall__Group_3__2__Impl : ( ')' ) ;
     public final void rule__XFeatureCall__Group_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16556:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:16557:1: ( ')' )
+            // InternalPerspectiveDsl.g:16753:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:16754:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:16557:1: ( ')' )
-            // InternalPerspectiveDsl.g:16558:2: ')'
+            // InternalPerspectiveDsl.g:16754:1: ( ')' )
+            // InternalPerspectiveDsl.g:16755:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2()); 
             }
@@ -54461,16 +55086,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__0"
-    // InternalPerspectiveDsl.g:16568: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:16765: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:16572:1: ( rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 )
-            // InternalPerspectiveDsl.g:16573:2: rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1
+            // InternalPerspectiveDsl.g:16769:1: ( rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 )
+            // InternalPerspectiveDsl.g:16770:2: rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__XFeatureCall__Group_3_1_1__0__Impl();
 
             state._fsp--;
@@ -54499,23 +55124,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:16580:1: rule__XFeatureCall__Group_3_1_1__0__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:16777: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:16584:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) )
-            // InternalPerspectiveDsl.g:16585:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            // InternalPerspectiveDsl.g:16781:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) )
+            // InternalPerspectiveDsl.g:16782:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:16585:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
-            // InternalPerspectiveDsl.g:16586:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            // InternalPerspectiveDsl.g:16782:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            // InternalPerspectiveDsl.g:16783:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:16587:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
-            // InternalPerspectiveDsl.g:16587:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0
+            // InternalPerspectiveDsl.g:16784:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            // InternalPerspectiveDsl.g:16784:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0();
@@ -54550,14 +55175,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__1"
-    // InternalPerspectiveDsl.g:16595:1: rule__XFeatureCall__Group_3_1_1__1 : rule__XFeatureCall__Group_3_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:16792: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:16599:1: ( rule__XFeatureCall__Group_3_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:16600:2: rule__XFeatureCall__Group_3_1_1__1__Impl
+            // InternalPerspectiveDsl.g:16796:1: ( rule__XFeatureCall__Group_3_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:16797:2: rule__XFeatureCall__Group_3_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_3_1_1__1__Impl();
@@ -54583,37 +55208,37 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:16606:1: rule__XFeatureCall__Group_3_1_1__1__Impl : ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:16803: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:16610:1: ( ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:16611:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:16807:1: ( ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:16808:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:16611:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
-            // InternalPerspectiveDsl.g:16612:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:16808:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:16809:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:16613:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:16810:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
             loop118:
             do {
                 int alt118=2;
                 int LA118_0 = input.LA(1);
 
-                if ( (LA118_0==91) ) {
+                if ( (LA118_0==93) ) {
                     alt118=1;
                 }
 
 
                 switch (alt118) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:16613:3: rule__XFeatureCall__Group_3_1_1_1__0
+            	    // InternalPerspectiveDsl.g:16810:3: rule__XFeatureCall__Group_3_1_1_1__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XFeatureCall__Group_3_1_1_1__0();
 
             	    state._fsp--;
@@ -54652,16 +55277,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__0"
-    // InternalPerspectiveDsl.g:16622: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:16819: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:16626:1: ( rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 )
-            // InternalPerspectiveDsl.g:16627:2: rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1
+            // InternalPerspectiveDsl.g:16823:1: ( rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 )
+            // InternalPerspectiveDsl.g:16824:2: rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XFeatureCall__Group_3_1_1_1__0__Impl();
 
             state._fsp--;
@@ -54690,22 +55315,22 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:16634:1: rule__XFeatureCall__Group_3_1_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:16831: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:16638:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:16639:1: ( ',' )
+            // InternalPerspectiveDsl.g:16835:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:16836:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:16639:1: ( ',' )
-            // InternalPerspectiveDsl.g:16640:2: ','
+            // InternalPerspectiveDsl.g:16836:1: ( ',' )
+            // InternalPerspectiveDsl.g:16837:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0()); 
             }
@@ -54731,14 +55356,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__1"
-    // InternalPerspectiveDsl.g:16649:1: rule__XFeatureCall__Group_3_1_1_1__1 : rule__XFeatureCall__Group_3_1_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:16846: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:16653:1: ( rule__XFeatureCall__Group_3_1_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:16654:2: rule__XFeatureCall__Group_3_1_1_1__1__Impl
+            // InternalPerspectiveDsl.g:16850:1: ( rule__XFeatureCall__Group_3_1_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:16851:2: rule__XFeatureCall__Group_3_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_3_1_1_1__1__Impl();
@@ -54764,23 +55389,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:16660:1: rule__XFeatureCall__Group_3_1_1_1__1__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:16857: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:16664:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:16665:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:16861:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:16862:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:16665:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
-            // InternalPerspectiveDsl.g:16666:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            // InternalPerspectiveDsl.g:16862:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:16863:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:16667:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
-            // InternalPerspectiveDsl.g:16667:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1
+            // InternalPerspectiveDsl.g:16864:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            // InternalPerspectiveDsl.g:16864:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1();
@@ -54815,16 +55440,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__0"
-    // InternalPerspectiveDsl.g:16676:1: rule__XConstructorCall__Group__0 : rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 ;
+    // InternalPerspectiveDsl.g:16873: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:16680:1: ( rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 )
-            // InternalPerspectiveDsl.g:16681:2: rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1
+            // InternalPerspectiveDsl.g:16877:1: ( rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 )
+            // InternalPerspectiveDsl.g:16878:2: rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1
             {
-            pushFollow(FOLLOW_114);
+            pushFollow(FOLLOW_116);
             rule__XConstructorCall__Group__0__Impl();
 
             state._fsp--;
@@ -54853,23 +55478,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__0__Impl"
-    // InternalPerspectiveDsl.g:16688:1: rule__XConstructorCall__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:16885:1: rule__XConstructorCall__Group__0__Impl : ( () ) ;
     public final void rule__XConstructorCall__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16692:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:16693:1: ( () )
+            // InternalPerspectiveDsl.g:16889:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:16890:1: ( () )
             {
-            // InternalPerspectiveDsl.g:16693:1: ( () )
-            // InternalPerspectiveDsl.g:16694:2: ()
+            // InternalPerspectiveDsl.g:16890:1: ( () )
+            // InternalPerspectiveDsl.g:16891:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0()); 
             }
-            // InternalPerspectiveDsl.g:16695:2: ()
-            // InternalPerspectiveDsl.g:16695:3: 
+            // InternalPerspectiveDsl.g:16892:2: ()
+            // InternalPerspectiveDsl.g:16892:3: 
             {
             }
 
@@ -54894,14 +55519,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__1"
-    // InternalPerspectiveDsl.g:16703:1: rule__XConstructorCall__Group__1 : rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 ;
+    // InternalPerspectiveDsl.g:16900: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:16707:1: ( rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 )
-            // InternalPerspectiveDsl.g:16708:2: rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2
+            // InternalPerspectiveDsl.g:16904:1: ( rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 )
+            // InternalPerspectiveDsl.g:16905:2: rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__XConstructorCall__Group__1__Impl();
@@ -54932,22 +55557,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__1__Impl"
-    // InternalPerspectiveDsl.g:16715:1: rule__XConstructorCall__Group__1__Impl : ( 'new' ) ;
+    // InternalPerspectiveDsl.g:16912:1: rule__XConstructorCall__Group__1__Impl : ( 'new' ) ;
     public final void rule__XConstructorCall__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16719:1: ( ( 'new' ) )
-            // InternalPerspectiveDsl.g:16720:1: ( 'new' )
+            // InternalPerspectiveDsl.g:16916:1: ( ( 'new' ) )
+            // InternalPerspectiveDsl.g:16917:1: ( 'new' )
             {
-            // InternalPerspectiveDsl.g:16720:1: ( 'new' )
-            // InternalPerspectiveDsl.g:16721:2: 'new'
+            // InternalPerspectiveDsl.g:16917:1: ( 'new' )
+            // InternalPerspectiveDsl.g:16918:2: 'new'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getNewKeyword_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.getXConstructorCallAccess().getNewKeyword_1()); 
             }
@@ -54973,16 +55598,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__2"
-    // InternalPerspectiveDsl.g:16730:1: rule__XConstructorCall__Group__2 : rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 ;
+    // InternalPerspectiveDsl.g:16927: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:16734:1: ( rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 )
-            // InternalPerspectiveDsl.g:16735:2: rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3
+            // InternalPerspectiveDsl.g:16931:1: ( rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 )
+            // InternalPerspectiveDsl.g:16932:2: rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3
             {
-            pushFollow(FOLLOW_115);
+            pushFollow(FOLLOW_117);
             rule__XConstructorCall__Group__2__Impl();
 
             state._fsp--;
@@ -55011,23 +55636,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__2__Impl"
-    // InternalPerspectiveDsl.g:16742:1: rule__XConstructorCall__Group__2__Impl : ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:16939: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:16746:1: ( ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:16747:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            // InternalPerspectiveDsl.g:16943:1: ( ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:16944:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:16747:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
-            // InternalPerspectiveDsl.g:16748:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            // InternalPerspectiveDsl.g:16944:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            // InternalPerspectiveDsl.g:16945:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:16749:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
-            // InternalPerspectiveDsl.g:16749:3: rule__XConstructorCall__ConstructorAssignment_2
+            // InternalPerspectiveDsl.g:16946:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            // InternalPerspectiveDsl.g:16946:3: rule__XConstructorCall__ConstructorAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ConstructorAssignment_2();
@@ -55062,16 +55687,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__3"
-    // InternalPerspectiveDsl.g:16757:1: rule__XConstructorCall__Group__3 : rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 ;
+    // InternalPerspectiveDsl.g:16954: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:16761:1: ( rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 )
-            // InternalPerspectiveDsl.g:16762:2: rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4
+            // InternalPerspectiveDsl.g:16958:1: ( rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 )
+            // InternalPerspectiveDsl.g:16959:2: rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4
             {
-            pushFollow(FOLLOW_115);
+            pushFollow(FOLLOW_117);
             rule__XConstructorCall__Group__3__Impl();
 
             state._fsp--;
@@ -55100,27 +55725,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__3__Impl"
-    // InternalPerspectiveDsl.g:16769:1: rule__XConstructorCall__Group__3__Impl : ( ( rule__XConstructorCall__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:16966: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:16773:1: ( ( ( rule__XConstructorCall__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:16774:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:16970:1: ( ( ( rule__XConstructorCall__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:16971:1: ( ( rule__XConstructorCall__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:16774:1: ( ( rule__XConstructorCall__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:16775:2: ( rule__XConstructorCall__Group_3__0 )?
+            // InternalPerspectiveDsl.g:16971:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:16972:2: ( rule__XConstructorCall__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:16776:2: ( rule__XConstructorCall__Group_3__0 )?
+            // InternalPerspectiveDsl.g:16973:2: ( rule__XConstructorCall__Group_3__0 )?
             int alt119=2;
             alt119 = dfa119.predict(input);
             switch (alt119) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:16776:3: rule__XConstructorCall__Group_3__0
+                    // InternalPerspectiveDsl.g:16973:3: rule__XConstructorCall__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Group_3__0();
@@ -55158,16 +55783,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__4"
-    // InternalPerspectiveDsl.g:16784:1: rule__XConstructorCall__Group__4 : rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 ;
+    // InternalPerspectiveDsl.g:16981: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:16788:1: ( rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 )
-            // InternalPerspectiveDsl.g:16789:2: rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5
+            // InternalPerspectiveDsl.g:16985:1: ( rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 )
+            // InternalPerspectiveDsl.g:16986:2: rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5
             {
-            pushFollow(FOLLOW_115);
+            pushFollow(FOLLOW_117);
             rule__XConstructorCall__Group__4__Impl();
 
             state._fsp--;
@@ -55196,27 +55821,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__4__Impl"
-    // InternalPerspectiveDsl.g:16796:1: rule__XConstructorCall__Group__4__Impl : ( ( rule__XConstructorCall__Group_4__0 )? ) ;
+    // InternalPerspectiveDsl.g:16993: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:16800:1: ( ( ( rule__XConstructorCall__Group_4__0 )? ) )
-            // InternalPerspectiveDsl.g:16801:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            // InternalPerspectiveDsl.g:16997:1: ( ( ( rule__XConstructorCall__Group_4__0 )? ) )
+            // InternalPerspectiveDsl.g:16998:1: ( ( rule__XConstructorCall__Group_4__0 )? )
             {
-            // InternalPerspectiveDsl.g:16801:1: ( ( rule__XConstructorCall__Group_4__0 )? )
-            // InternalPerspectiveDsl.g:16802:2: ( rule__XConstructorCall__Group_4__0 )?
+            // InternalPerspectiveDsl.g:16998:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            // InternalPerspectiveDsl.g:16999:2: ( rule__XConstructorCall__Group_4__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_4()); 
             }
-            // InternalPerspectiveDsl.g:16803:2: ( rule__XConstructorCall__Group_4__0 )?
+            // InternalPerspectiveDsl.g:17000:2: ( rule__XConstructorCall__Group_4__0 )?
             int alt120=2;
             alt120 = dfa120.predict(input);
             switch (alt120) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:16803:3: rule__XConstructorCall__Group_4__0
+                    // InternalPerspectiveDsl.g:17000:3: rule__XConstructorCall__Group_4__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Group_4__0();
@@ -55254,14 +55879,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__5"
-    // InternalPerspectiveDsl.g:16811:1: rule__XConstructorCall__Group__5 : rule__XConstructorCall__Group__5__Impl ;
+    // InternalPerspectiveDsl.g:17008: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:16815:1: ( rule__XConstructorCall__Group__5__Impl )
-            // InternalPerspectiveDsl.g:16816:2: rule__XConstructorCall__Group__5__Impl
+            // InternalPerspectiveDsl.g:17012:1: ( rule__XConstructorCall__Group__5__Impl )
+            // InternalPerspectiveDsl.g:17013:2: rule__XConstructorCall__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group__5__Impl();
@@ -55287,27 +55912,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__5__Impl"
-    // InternalPerspectiveDsl.g:16822:1: rule__XConstructorCall__Group__5__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) ;
+    // InternalPerspectiveDsl.g:17019: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:16826:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) )
-            // InternalPerspectiveDsl.g:16827:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            // InternalPerspectiveDsl.g:17023:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) )
+            // InternalPerspectiveDsl.g:17024:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
             {
-            // InternalPerspectiveDsl.g:16827:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
-            // InternalPerspectiveDsl.g:16828:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            // InternalPerspectiveDsl.g:17024:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            // InternalPerspectiveDsl.g:17025:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5()); 
             }
-            // InternalPerspectiveDsl.g:16829:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            // InternalPerspectiveDsl.g:17026:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
             int alt121=2;
             alt121 = dfa121.predict(input);
             switch (alt121) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:16829:3: rule__XConstructorCall__ArgumentsAssignment_5
+                    // InternalPerspectiveDsl.g:17026:3: rule__XConstructorCall__ArgumentsAssignment_5
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__ArgumentsAssignment_5();
@@ -55345,16 +55970,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__0"
-    // InternalPerspectiveDsl.g:16838:1: rule__XConstructorCall__Group_3__0 : rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 ;
+    // InternalPerspectiveDsl.g:17035: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:16842:1: ( rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 )
-            // InternalPerspectiveDsl.g:16843:2: rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1
+            // InternalPerspectiveDsl.g:17039:1: ( rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 )
+            // InternalPerspectiveDsl.g:17040:2: rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1
             {
-            pushFollow(FOLLOW_89);
+            pushFollow(FOLLOW_91);
             rule__XConstructorCall__Group_3__0__Impl();
 
             state._fsp--;
@@ -55383,23 +56008,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:16850:1: rule__XConstructorCall__Group_3__0__Impl : ( ( '<' ) ) ;
+    // InternalPerspectiveDsl.g:17047:1: rule__XConstructorCall__Group_3__0__Impl : ( ( '<' ) ) ;
     public final void rule__XConstructorCall__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16854:1: ( ( ( '<' ) ) )
-            // InternalPerspectiveDsl.g:16855:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:17051:1: ( ( ( '<' ) ) )
+            // InternalPerspectiveDsl.g:17052:1: ( ( '<' ) )
             {
-            // InternalPerspectiveDsl.g:16855:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:16856:2: ( '<' )
+            // InternalPerspectiveDsl.g:17052:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:17053:2: ( '<' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0()); 
             }
-            // InternalPerspectiveDsl.g:16857:2: ( '<' )
-            // InternalPerspectiveDsl.g:16857:3: '<'
+            // InternalPerspectiveDsl.g:17054:2: ( '<' )
+            // InternalPerspectiveDsl.g:17054:3: '<'
             {
             match(input,27,FOLLOW_2); if (state.failed) return ;
 
@@ -55430,16 +56055,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__1"
-    // InternalPerspectiveDsl.g:16865:1: rule__XConstructorCall__Group_3__1 : rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 ;
+    // InternalPerspectiveDsl.g:17062: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:16869:1: ( rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 )
-            // InternalPerspectiveDsl.g:16870:2: rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2
+            // InternalPerspectiveDsl.g:17066:1: ( rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 )
+            // InternalPerspectiveDsl.g:17067:2: rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2
             {
-            pushFollow(FOLLOW_90);
+            pushFollow(FOLLOW_92);
             rule__XConstructorCall__Group_3__1__Impl();
 
             state._fsp--;
@@ -55468,23 +56093,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:16877:1: rule__XConstructorCall__Group_3__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) ;
+    // InternalPerspectiveDsl.g:17074: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:16881:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) )
-            // InternalPerspectiveDsl.g:16882:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            // InternalPerspectiveDsl.g:17078:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) )
+            // InternalPerspectiveDsl.g:17079:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
             {
-            // InternalPerspectiveDsl.g:16882:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
-            // InternalPerspectiveDsl.g:16883:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            // InternalPerspectiveDsl.g:17079:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            // InternalPerspectiveDsl.g:17080:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1()); 
             }
-            // InternalPerspectiveDsl.g:16884:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
-            // InternalPerspectiveDsl.g:16884:3: rule__XConstructorCall__TypeArgumentsAssignment_3_1
+            // InternalPerspectiveDsl.g:17081:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            // InternalPerspectiveDsl.g:17081:3: rule__XConstructorCall__TypeArgumentsAssignment_3_1
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__TypeArgumentsAssignment_3_1();
@@ -55519,16 +56144,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__2"
-    // InternalPerspectiveDsl.g:16892:1: rule__XConstructorCall__Group_3__2 : rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 ;
+    // InternalPerspectiveDsl.g:17089: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:16896:1: ( rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 )
-            // InternalPerspectiveDsl.g:16897:2: rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3
+            // InternalPerspectiveDsl.g:17093:1: ( rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 )
+            // InternalPerspectiveDsl.g:17094:2: rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3
             {
-            pushFollow(FOLLOW_90);
+            pushFollow(FOLLOW_92);
             rule__XConstructorCall__Group_3__2__Impl();
 
             state._fsp--;
@@ -55557,37 +56182,37 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__2__Impl"
-    // InternalPerspectiveDsl.g:16904:1: rule__XConstructorCall__Group_3__2__Impl : ( ( rule__XConstructorCall__Group_3_2__0 )* ) ;
+    // InternalPerspectiveDsl.g:17101: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:16908:1: ( ( ( rule__XConstructorCall__Group_3_2__0 )* ) )
-            // InternalPerspectiveDsl.g:16909:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            // InternalPerspectiveDsl.g:17105:1: ( ( ( rule__XConstructorCall__Group_3_2__0 )* ) )
+            // InternalPerspectiveDsl.g:17106:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
             {
-            // InternalPerspectiveDsl.g:16909:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
-            // InternalPerspectiveDsl.g:16910:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            // InternalPerspectiveDsl.g:17106:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            // InternalPerspectiveDsl.g:17107:2: ( rule__XConstructorCall__Group_3_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_3_2()); 
             }
-            // InternalPerspectiveDsl.g:16911:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            // InternalPerspectiveDsl.g:17108:2: ( rule__XConstructorCall__Group_3_2__0 )*
             loop122:
             do {
                 int alt122=2;
                 int LA122_0 = input.LA(1);
 
-                if ( (LA122_0==91) ) {
+                if ( (LA122_0==93) ) {
                     alt122=1;
                 }
 
 
                 switch (alt122) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:16911:3: rule__XConstructorCall__Group_3_2__0
+            	    // InternalPerspectiveDsl.g:17108:3: rule__XConstructorCall__Group_3_2__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XConstructorCall__Group_3_2__0();
 
             	    state._fsp--;
@@ -55626,14 +56251,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__3"
-    // InternalPerspectiveDsl.g:16919:1: rule__XConstructorCall__Group_3__3 : rule__XConstructorCall__Group_3__3__Impl ;
+    // InternalPerspectiveDsl.g:17116: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:16923:1: ( rule__XConstructorCall__Group_3__3__Impl )
-            // InternalPerspectiveDsl.g:16924:2: rule__XConstructorCall__Group_3__3__Impl
+            // InternalPerspectiveDsl.g:17120:1: ( rule__XConstructorCall__Group_3__3__Impl )
+            // InternalPerspectiveDsl.g:17121:2: rule__XConstructorCall__Group_3__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_3__3__Impl();
@@ -55659,17 +56284,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__3__Impl"
-    // InternalPerspectiveDsl.g:16930:1: rule__XConstructorCall__Group_3__3__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:17127:1: rule__XConstructorCall__Group_3__3__Impl : ( '>' ) ;
     public final void rule__XConstructorCall__Group_3__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16934:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:16935:1: ( '>' )
+            // InternalPerspectiveDsl.g:17131:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:17132:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:16935:1: ( '>' )
-            // InternalPerspectiveDsl.g:16936:2: '>'
+            // InternalPerspectiveDsl.g:17132:1: ( '>' )
+            // InternalPerspectiveDsl.g:17133:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3()); 
@@ -55700,16 +56325,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__0"
-    // InternalPerspectiveDsl.g:16946:1: rule__XConstructorCall__Group_3_2__0 : rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 ;
+    // InternalPerspectiveDsl.g:17143: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:16950:1: ( rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 )
-            // InternalPerspectiveDsl.g:16951:2: rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1
+            // InternalPerspectiveDsl.g:17147:1: ( rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 )
+            // InternalPerspectiveDsl.g:17148:2: rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1
             {
-            pushFollow(FOLLOW_89);
+            pushFollow(FOLLOW_91);
             rule__XConstructorCall__Group_3_2__0__Impl();
 
             state._fsp--;
@@ -55738,22 +56363,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__0__Impl"
-    // InternalPerspectiveDsl.g:16958:1: rule__XConstructorCall__Group_3_2__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:17155: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:16962:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:16963:1: ( ',' )
+            // InternalPerspectiveDsl.g:17159:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:17160:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:16963:1: ( ',' )
-            // InternalPerspectiveDsl.g:16964:2: ','
+            // InternalPerspectiveDsl.g:17160:1: ( ',' )
+            // InternalPerspectiveDsl.g:17161:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0()); 
             }
@@ -55779,14 +56404,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__1"
-    // InternalPerspectiveDsl.g:16973:1: rule__XConstructorCall__Group_3_2__1 : rule__XConstructorCall__Group_3_2__1__Impl ;
+    // InternalPerspectiveDsl.g:17170: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:16977:1: ( rule__XConstructorCall__Group_3_2__1__Impl )
-            // InternalPerspectiveDsl.g:16978:2: rule__XConstructorCall__Group_3_2__1__Impl
+            // InternalPerspectiveDsl.g:17174:1: ( rule__XConstructorCall__Group_3_2__1__Impl )
+            // InternalPerspectiveDsl.g:17175:2: rule__XConstructorCall__Group_3_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_3_2__1__Impl();
@@ -55812,23 +56437,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__1__Impl"
-    // InternalPerspectiveDsl.g:16984:1: rule__XConstructorCall__Group_3_2__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:17181: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:16988:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) )
-            // InternalPerspectiveDsl.g:16989:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:17185:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) )
+            // InternalPerspectiveDsl.g:17186:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:16989:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
-            // InternalPerspectiveDsl.g:16990:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:17186:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:17187:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1()); 
             }
-            // InternalPerspectiveDsl.g:16991:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
-            // InternalPerspectiveDsl.g:16991:3: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1
+            // InternalPerspectiveDsl.g:17188:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:17188:3: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__TypeArgumentsAssignment_3_2_1();
@@ -55863,16 +56488,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__0"
-    // InternalPerspectiveDsl.g:17000:1: rule__XConstructorCall__Group_4__0 : rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 ;
+    // InternalPerspectiveDsl.g:17197: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:17004:1: ( rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 )
-            // InternalPerspectiveDsl.g:17005:2: rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1
+            // InternalPerspectiveDsl.g:17201:1: ( rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 )
+            // InternalPerspectiveDsl.g:17202:2: rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1
             {
-            pushFollow(FOLLOW_91);
+            pushFollow(FOLLOW_93);
             rule__XConstructorCall__Group_4__0__Impl();
 
             state._fsp--;
@@ -55901,23 +56526,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__0__Impl"
-    // InternalPerspectiveDsl.g:17012:1: rule__XConstructorCall__Group_4__0__Impl : ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) ;
+    // InternalPerspectiveDsl.g:17209: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:17016:1: ( ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) )
-            // InternalPerspectiveDsl.g:17017:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            // InternalPerspectiveDsl.g:17213:1: ( ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) )
+            // InternalPerspectiveDsl.g:17214:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
             {
-            // InternalPerspectiveDsl.g:17017:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
-            // InternalPerspectiveDsl.g:17018:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            // InternalPerspectiveDsl.g:17214:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            // InternalPerspectiveDsl.g:17215:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0()); 
             }
-            // InternalPerspectiveDsl.g:17019:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
-            // InternalPerspectiveDsl.g:17019:3: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0
+            // InternalPerspectiveDsl.g:17216:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            // InternalPerspectiveDsl.g:17216:3: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0();
@@ -55952,16 +56577,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__1"
-    // InternalPerspectiveDsl.g:17027:1: rule__XConstructorCall__Group_4__1 : rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 ;
+    // InternalPerspectiveDsl.g:17224: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:17031:1: ( rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 )
-            // InternalPerspectiveDsl.g:17032:2: rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2
+            // InternalPerspectiveDsl.g:17228:1: ( rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 )
+            // InternalPerspectiveDsl.g:17229:2: rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2
             {
-            pushFollow(FOLLOW_91);
+            pushFollow(FOLLOW_93);
             rule__XConstructorCall__Group_4__1__Impl();
 
             state._fsp--;
@@ -55990,31 +56615,31 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__1__Impl"
-    // InternalPerspectiveDsl.g:17039:1: rule__XConstructorCall__Group_4__1__Impl : ( ( rule__XConstructorCall__Alternatives_4_1 )? ) ;
+    // InternalPerspectiveDsl.g:17236: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:17043:1: ( ( ( rule__XConstructorCall__Alternatives_4_1 )? ) )
-            // InternalPerspectiveDsl.g:17044:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            // InternalPerspectiveDsl.g:17240:1: ( ( ( rule__XConstructorCall__Alternatives_4_1 )? ) )
+            // InternalPerspectiveDsl.g:17241:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
             {
-            // InternalPerspectiveDsl.g:17044:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
-            // InternalPerspectiveDsl.g:17045:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            // InternalPerspectiveDsl.g:17241:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            // InternalPerspectiveDsl.g:17242:2: ( rule__XConstructorCall__Alternatives_4_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getAlternatives_4_1()); 
             }
-            // InternalPerspectiveDsl.g:17046:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            // InternalPerspectiveDsl.g:17243:2: ( rule__XConstructorCall__Alternatives_4_1 )?
             int alt123=2;
             int LA123_0 = input.LA(1);
 
-            if ( ((LA123_0>=RULE_ID && LA123_0<=RULE_DECIMAL)||LA123_0==27||LA123_0==31||(LA123_0>=34 && LA123_0<=35)||LA123_0==40||(LA123_0>=45 && LA123_0<=50)||LA123_0==54||LA123_0==89||(LA123_0>=93 && LA123_0<=94)||LA123_0==97||LA123_0==99||(LA123_0>=103 && LA123_0<=111)||LA123_0==113||LA123_0==122||LA123_0==124) ) {
+            if ( ((LA123_0>=RULE_ID && LA123_0<=RULE_DECIMAL)||LA123_0==27||LA123_0==31||(LA123_0>=34 && LA123_0<=35)||LA123_0==40||(LA123_0>=45 && LA123_0<=50)||LA123_0==54||LA123_0==91||(LA123_0>=95 && LA123_0<=96)||LA123_0==99||LA123_0==101||(LA123_0>=105 && LA123_0<=113)||LA123_0==115||LA123_0==124||LA123_0==126) ) {
                 alt123=1;
             }
             switch (alt123) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:17046:3: rule__XConstructorCall__Alternatives_4_1
+                    // InternalPerspectiveDsl.g:17243:3: rule__XConstructorCall__Alternatives_4_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Alternatives_4_1();
@@ -56052,14 +56677,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__2"
-    // InternalPerspectiveDsl.g:17054:1: rule__XConstructorCall__Group_4__2 : rule__XConstructorCall__Group_4__2__Impl ;
+    // InternalPerspectiveDsl.g:17251: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:17058:1: ( rule__XConstructorCall__Group_4__2__Impl )
-            // InternalPerspectiveDsl.g:17059:2: rule__XConstructorCall__Group_4__2__Impl
+            // InternalPerspectiveDsl.g:17255:1: ( rule__XConstructorCall__Group_4__2__Impl )
+            // InternalPerspectiveDsl.g:17256:2: rule__XConstructorCall__Group_4__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_4__2__Impl();
@@ -56085,22 +56710,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__2__Impl"
-    // InternalPerspectiveDsl.g:17065:1: rule__XConstructorCall__Group_4__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:17262:1: rule__XConstructorCall__Group_4__2__Impl : ( ')' ) ;
     public final void rule__XConstructorCall__Group_4__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17069:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:17070:1: ( ')' )
+            // InternalPerspectiveDsl.g:17266:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:17267:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:17070:1: ( ')' )
-            // InternalPerspectiveDsl.g:17071:2: ')'
+            // InternalPerspectiveDsl.g:17267:1: ( ')' )
+            // InternalPerspectiveDsl.g:17268:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2()); 
             }
@@ -56126,16 +56751,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__0"
-    // InternalPerspectiveDsl.g:17081: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:17278: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:17085:1: ( rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 )
-            // InternalPerspectiveDsl.g:17086:2: rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1
+            // InternalPerspectiveDsl.g:17282:1: ( rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 )
+            // InternalPerspectiveDsl.g:17283:2: rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__XConstructorCall__Group_4_1_1__0__Impl();
 
             state._fsp--;
@@ -56164,23 +56789,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:17093:1: rule__XConstructorCall__Group_4_1_1__0__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:17290: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:17097:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) )
-            // InternalPerspectiveDsl.g:17098:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            // InternalPerspectiveDsl.g:17294:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) )
+            // InternalPerspectiveDsl.g:17295:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:17098:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
-            // InternalPerspectiveDsl.g:17099:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            // InternalPerspectiveDsl.g:17295:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            // InternalPerspectiveDsl.g:17296:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:17100:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
-            // InternalPerspectiveDsl.g:17100:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0
+            // InternalPerspectiveDsl.g:17297:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            // InternalPerspectiveDsl.g:17297:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ArgumentsAssignment_4_1_1_0();
@@ -56215,14 +56840,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__1"
-    // InternalPerspectiveDsl.g:17108:1: rule__XConstructorCall__Group_4_1_1__1 : rule__XConstructorCall__Group_4_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:17305: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:17112:1: ( rule__XConstructorCall__Group_4_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:17113:2: rule__XConstructorCall__Group_4_1_1__1__Impl
+            // InternalPerspectiveDsl.g:17309:1: ( rule__XConstructorCall__Group_4_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:17310:2: rule__XConstructorCall__Group_4_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_4_1_1__1__Impl();
@@ -56248,37 +56873,37 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:17119:1: rule__XConstructorCall__Group_4_1_1__1__Impl : ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:17316: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:17123:1: ( ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:17124:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:17320:1: ( ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:17321:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:17124:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
-            // InternalPerspectiveDsl.g:17125:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:17321:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:17322:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:17126:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:17323:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
             loop124:
             do {
                 int alt124=2;
                 int LA124_0 = input.LA(1);
 
-                if ( (LA124_0==91) ) {
+                if ( (LA124_0==93) ) {
                     alt124=1;
                 }
 
 
                 switch (alt124) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:17126:3: rule__XConstructorCall__Group_4_1_1_1__0
+            	    // InternalPerspectiveDsl.g:17323:3: rule__XConstructorCall__Group_4_1_1_1__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XConstructorCall__Group_4_1_1_1__0();
 
             	    state._fsp--;
@@ -56317,16 +56942,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__0"
-    // InternalPerspectiveDsl.g:17135: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:17332: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:17139:1: ( rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 )
-            // InternalPerspectiveDsl.g:17140:2: rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1
+            // InternalPerspectiveDsl.g:17336:1: ( rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 )
+            // InternalPerspectiveDsl.g:17337:2: rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XConstructorCall__Group_4_1_1_1__0__Impl();
 
             state._fsp--;
@@ -56355,22 +56980,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:17147:1: rule__XConstructorCall__Group_4_1_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:17344: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:17151:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:17152:1: ( ',' )
+            // InternalPerspectiveDsl.g:17348:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:17349:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:17152:1: ( ',' )
-            // InternalPerspectiveDsl.g:17153:2: ','
+            // InternalPerspectiveDsl.g:17349:1: ( ',' )
+            // InternalPerspectiveDsl.g:17350:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0()); 
             }
@@ -56396,14 +57021,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__1"
-    // InternalPerspectiveDsl.g:17162:1: rule__XConstructorCall__Group_4_1_1_1__1 : rule__XConstructorCall__Group_4_1_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:17359: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:17166:1: ( rule__XConstructorCall__Group_4_1_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:17167:2: rule__XConstructorCall__Group_4_1_1_1__1__Impl
+            // InternalPerspectiveDsl.g:17363:1: ( rule__XConstructorCall__Group_4_1_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:17364:2: rule__XConstructorCall__Group_4_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_4_1_1_1__1__Impl();
@@ -56429,23 +57054,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:17173:1: rule__XConstructorCall__Group_4_1_1_1__1__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:17370: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:17177:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:17178:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:17374:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:17375:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:17178:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
-            // InternalPerspectiveDsl.g:17179:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            // InternalPerspectiveDsl.g:17375:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:17376:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:17180:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
-            // InternalPerspectiveDsl.g:17180:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1
+            // InternalPerspectiveDsl.g:17377:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            // InternalPerspectiveDsl.g:17377:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1();
@@ -56480,16 +57105,16 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__0"
-    // InternalPerspectiveDsl.g:17189:1: rule__XBooleanLiteral__Group__0 : rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 ;
+    // InternalPerspectiveDsl.g:17386: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:17193:1: ( rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 )
-            // InternalPerspectiveDsl.g:17194:2: rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1
+            // InternalPerspectiveDsl.g:17390:1: ( rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:17391:2: rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1
             {
-            pushFollow(FOLLOW_116);
+            pushFollow(FOLLOW_118);
             rule__XBooleanLiteral__Group__0__Impl();
 
             state._fsp--;
@@ -56518,23 +57143,23 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__0__Impl"
-    // InternalPerspectiveDsl.g:17201:1: rule__XBooleanLiteral__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:17398:1: rule__XBooleanLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XBooleanLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17205:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:17206:1: ( () )
+            // InternalPerspectiveDsl.g:17402:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17403:1: ( () )
             {
-            // InternalPerspectiveDsl.g:17206:1: ( () )
-            // InternalPerspectiveDsl.g:17207:2: ()
+            // InternalPerspectiveDsl.g:17403:1: ( () )
+            // InternalPerspectiveDsl.g:17404:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0()); 
             }
-            // InternalPerspectiveDsl.g:17208:2: ()
-            // InternalPerspectiveDsl.g:17208:3: 
+            // InternalPerspectiveDsl.g:17405:2: ()
+            // InternalPerspectiveDsl.g:17405:3: 
             {
             }
 
@@ -56559,14 +57184,14 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__1"
-    // InternalPerspectiveDsl.g:17216:1: rule__XBooleanLiteral__Group__1 : rule__XBooleanLiteral__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:17413: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:17220:1: ( rule__XBooleanLiteral__Group__1__Impl )
-            // InternalPerspectiveDsl.g:17221:2: rule__XBooleanLiteral__Group__1__Impl
+            // InternalPerspectiveDsl.g:17417:1: ( rule__XBooleanLiteral__Group__1__Impl )
+            // InternalPerspectiveDsl.g:17418:2: rule__XBooleanLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBooleanLiteral__Group__1__Impl();
@@ -56592,23 +57217,23 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__1__Impl"
-    // InternalPerspectiveDsl.g:17227:1: rule__XBooleanLiteral__Group__1__Impl : ( ( rule__XBooleanLiteral__Alternatives_1 ) ) ;
+    // InternalPerspectiveDsl.g:17424: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:17231:1: ( ( ( rule__XBooleanLiteral__Alternatives_1 ) ) )
-            // InternalPerspectiveDsl.g:17232:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            // InternalPerspectiveDsl.g:17428:1: ( ( ( rule__XBooleanLiteral__Alternatives_1 ) ) )
+            // InternalPerspectiveDsl.g:17429:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
             {
-            // InternalPerspectiveDsl.g:17232:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
-            // InternalPerspectiveDsl.g:17233:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            // InternalPerspectiveDsl.g:17429:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            // InternalPerspectiveDsl.g:17430:2: ( rule__XBooleanLiteral__Alternatives_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getAlternatives_1()); 
             }
-            // InternalPerspectiveDsl.g:17234:2: ( rule__XBooleanLiteral__Alternatives_1 )
-            // InternalPerspectiveDsl.g:17234:3: rule__XBooleanLiteral__Alternatives_1
+            // InternalPerspectiveDsl.g:17431:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            // InternalPerspectiveDsl.g:17431:3: rule__XBooleanLiteral__Alternatives_1
             {
             pushFollow(FOLLOW_2);
             rule__XBooleanLiteral__Alternatives_1();
@@ -56643,16 +57268,16 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__0"
-    // InternalPerspectiveDsl.g:17243:1: rule__XNullLiteral__Group__0 : rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 ;
+    // InternalPerspectiveDsl.g:17440: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:17247:1: ( rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 )
-            // InternalPerspectiveDsl.g:17248:2: rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1
+            // InternalPerspectiveDsl.g:17444:1: ( rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:17445:2: rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1
             {
-            pushFollow(FOLLOW_117);
+            pushFollow(FOLLOW_119);
             rule__XNullLiteral__Group__0__Impl();
 
             state._fsp--;
@@ -56681,23 +57306,23 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__0__Impl"
-    // InternalPerspectiveDsl.g:17255:1: rule__XNullLiteral__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:17452:1: rule__XNullLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XNullLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17259:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:17260:1: ( () )
+            // InternalPerspectiveDsl.g:17456:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17457:1: ( () )
             {
-            // InternalPerspectiveDsl.g:17260:1: ( () )
-            // InternalPerspectiveDsl.g:17261:2: ()
+            // InternalPerspectiveDsl.g:17457:1: ( () )
+            // InternalPerspectiveDsl.g:17458:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0()); 
             }
-            // InternalPerspectiveDsl.g:17262:2: ()
-            // InternalPerspectiveDsl.g:17262:3: 
+            // InternalPerspectiveDsl.g:17459:2: ()
+            // InternalPerspectiveDsl.g:17459:3: 
             {
             }
 
@@ -56722,14 +57347,14 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__1"
-    // InternalPerspectiveDsl.g:17270:1: rule__XNullLiteral__Group__1 : rule__XNullLiteral__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:17467: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:17274:1: ( rule__XNullLiteral__Group__1__Impl )
-            // InternalPerspectiveDsl.g:17275:2: rule__XNullLiteral__Group__1__Impl
+            // InternalPerspectiveDsl.g:17471:1: ( rule__XNullLiteral__Group__1__Impl )
+            // InternalPerspectiveDsl.g:17472:2: rule__XNullLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XNullLiteral__Group__1__Impl();
@@ -56755,22 +57380,22 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__1__Impl"
-    // InternalPerspectiveDsl.g:17281:1: rule__XNullLiteral__Group__1__Impl : ( 'null' ) ;
+    // InternalPerspectiveDsl.g:17478:1: rule__XNullLiteral__Group__1__Impl : ( 'null' ) ;
     public final void rule__XNullLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17285:1: ( ( 'null' ) )
-            // InternalPerspectiveDsl.g:17286:1: ( 'null' )
+            // InternalPerspectiveDsl.g:17482:1: ( ( 'null' ) )
+            // InternalPerspectiveDsl.g:17483:1: ( 'null' )
             {
-            // InternalPerspectiveDsl.g:17286:1: ( 'null' )
-            // InternalPerspectiveDsl.g:17287:2: 'null'
+            // InternalPerspectiveDsl.g:17483:1: ( 'null' )
+            // InternalPerspectiveDsl.g:17484:2: 'null'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralAccess().getNullKeyword_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.getXNullLiteralAccess().getNullKeyword_1()); 
             }
@@ -56796,16 +57421,16 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__0"
-    // InternalPerspectiveDsl.g:17297:1: rule__XNumberLiteral__Group__0 : rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 ;
+    // InternalPerspectiveDsl.g:17494: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:17301:1: ( rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 )
-            // InternalPerspectiveDsl.g:17302:2: rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1
+            // InternalPerspectiveDsl.g:17498:1: ( rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:17499:2: rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1
             {
-            pushFollow(FOLLOW_118);
+            pushFollow(FOLLOW_120);
             rule__XNumberLiteral__Group__0__Impl();
 
             state._fsp--;
@@ -56834,23 +57459,23 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__0__Impl"
-    // InternalPerspectiveDsl.g:17309:1: rule__XNumberLiteral__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:17506:1: rule__XNumberLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XNumberLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17313:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:17314:1: ( () )
+            // InternalPerspectiveDsl.g:17510:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17511:1: ( () )
             {
-            // InternalPerspectiveDsl.g:17314:1: ( () )
-            // InternalPerspectiveDsl.g:17315:2: ()
+            // InternalPerspectiveDsl.g:17511:1: ( () )
+            // InternalPerspectiveDsl.g:17512:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0()); 
             }
-            // InternalPerspectiveDsl.g:17316:2: ()
-            // InternalPerspectiveDsl.g:17316:3: 
+            // InternalPerspectiveDsl.g:17513:2: ()
+            // InternalPerspectiveDsl.g:17513:3: 
             {
             }
 
@@ -56875,14 +57500,14 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__1"
-    // InternalPerspectiveDsl.g:17324:1: rule__XNumberLiteral__Group__1 : rule__XNumberLiteral__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:17521: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:17328:1: ( rule__XNumberLiteral__Group__1__Impl )
-            // InternalPerspectiveDsl.g:17329:2: rule__XNumberLiteral__Group__1__Impl
+            // InternalPerspectiveDsl.g:17525:1: ( rule__XNumberLiteral__Group__1__Impl )
+            // InternalPerspectiveDsl.g:17526:2: rule__XNumberLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XNumberLiteral__Group__1__Impl();
@@ -56908,23 +57533,23 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__1__Impl"
-    // InternalPerspectiveDsl.g:17335:1: rule__XNumberLiteral__Group__1__Impl : ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:17532: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:17339:1: ( ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:17340:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            // InternalPerspectiveDsl.g:17536:1: ( ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:17537:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:17340:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
-            // InternalPerspectiveDsl.g:17341:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            // InternalPerspectiveDsl.g:17537:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            // InternalPerspectiveDsl.g:17538:2: ( rule__XNumberLiteral__ValueAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:17342:2: ( rule__XNumberLiteral__ValueAssignment_1 )
-            // InternalPerspectiveDsl.g:17342:3: rule__XNumberLiteral__ValueAssignment_1
+            // InternalPerspectiveDsl.g:17539:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            // InternalPerspectiveDsl.g:17539:3: rule__XNumberLiteral__ValueAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XNumberLiteral__ValueAssignment_1();
@@ -56959,14 +57584,14 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__0"
-    // InternalPerspectiveDsl.g:17351:1: rule__XStringLiteral__Group__0 : rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 ;
+    // InternalPerspectiveDsl.g:17548: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:17355:1: ( rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 )
-            // InternalPerspectiveDsl.g:17356:2: rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1
+            // InternalPerspectiveDsl.g:17552:1: ( rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:17553:2: rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1
             {
             pushFollow(FOLLOW_15);
             rule__XStringLiteral__Group__0__Impl();
@@ -56997,23 +57622,23 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__0__Impl"
-    // InternalPerspectiveDsl.g:17363:1: rule__XStringLiteral__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:17560:1: rule__XStringLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XStringLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17367:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:17368:1: ( () )
+            // InternalPerspectiveDsl.g:17564:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17565:1: ( () )
             {
-            // InternalPerspectiveDsl.g:17368:1: ( () )
-            // InternalPerspectiveDsl.g:17369:2: ()
+            // InternalPerspectiveDsl.g:17565:1: ( () )
+            // InternalPerspectiveDsl.g:17566:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0()); 
             }
-            // InternalPerspectiveDsl.g:17370:2: ()
-            // InternalPerspectiveDsl.g:17370:3: 
+            // InternalPerspectiveDsl.g:17567:2: ()
+            // InternalPerspectiveDsl.g:17567:3: 
             {
             }
 
@@ -57038,14 +57663,14 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__1"
-    // InternalPerspectiveDsl.g:17378:1: rule__XStringLiteral__Group__1 : rule__XStringLiteral__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:17575: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:17382:1: ( rule__XStringLiteral__Group__1__Impl )
-            // InternalPerspectiveDsl.g:17383:2: rule__XStringLiteral__Group__1__Impl
+            // InternalPerspectiveDsl.g:17579:1: ( rule__XStringLiteral__Group__1__Impl )
+            // InternalPerspectiveDsl.g:17580:2: rule__XStringLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XStringLiteral__Group__1__Impl();
@@ -57071,23 +57696,23 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__1__Impl"
-    // InternalPerspectiveDsl.g:17389:1: rule__XStringLiteral__Group__1__Impl : ( ( rule__XStringLiteral__ValueAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:17586: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:17393:1: ( ( ( rule__XStringLiteral__ValueAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:17394:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            // InternalPerspectiveDsl.g:17590:1: ( ( ( rule__XStringLiteral__ValueAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:17591:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:17394:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
-            // InternalPerspectiveDsl.g:17395:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            // InternalPerspectiveDsl.g:17591:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            // InternalPerspectiveDsl.g:17592:2: ( rule__XStringLiteral__ValueAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getValueAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:17396:2: ( rule__XStringLiteral__ValueAssignment_1 )
-            // InternalPerspectiveDsl.g:17396:3: rule__XStringLiteral__ValueAssignment_1
+            // InternalPerspectiveDsl.g:17593:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            // InternalPerspectiveDsl.g:17593:3: rule__XStringLiteral__ValueAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XStringLiteral__ValueAssignment_1();
@@ -57122,16 +57747,16 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__0"
-    // InternalPerspectiveDsl.g:17405:1: rule__XTypeLiteral__Group__0 : rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 ;
+    // InternalPerspectiveDsl.g:17602: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:17409:1: ( rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 )
-            // InternalPerspectiveDsl.g:17410:2: rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1
+            // InternalPerspectiveDsl.g:17606:1: ( rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:17607:2: rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1
             {
-            pushFollow(FOLLOW_119);
+            pushFollow(FOLLOW_121);
             rule__XTypeLiteral__Group__0__Impl();
 
             state._fsp--;
@@ -57160,23 +57785,23 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__0__Impl"
-    // InternalPerspectiveDsl.g:17417:1: rule__XTypeLiteral__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:17614:1: rule__XTypeLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XTypeLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17421:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:17422:1: ( () )
+            // InternalPerspectiveDsl.g:17618:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17619:1: ( () )
             {
-            // InternalPerspectiveDsl.g:17422:1: ( () )
-            // InternalPerspectiveDsl.g:17423:2: ()
+            // InternalPerspectiveDsl.g:17619:1: ( () )
+            // InternalPerspectiveDsl.g:17620:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0()); 
             }
-            // InternalPerspectiveDsl.g:17424:2: ()
-            // InternalPerspectiveDsl.g:17424:3: 
+            // InternalPerspectiveDsl.g:17621:2: ()
+            // InternalPerspectiveDsl.g:17621:3: 
             {
             }
 
@@ -57201,16 +57826,16 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__1"
-    // InternalPerspectiveDsl.g:17432:1: rule__XTypeLiteral__Group__1 : rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 ;
+    // InternalPerspectiveDsl.g:17629: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:17436:1: ( rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 )
-            // InternalPerspectiveDsl.g:17437:2: rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2
+            // InternalPerspectiveDsl.g:17633:1: ( rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 )
+            // InternalPerspectiveDsl.g:17634:2: rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2
             {
-            pushFollow(FOLLOW_48);
+            pushFollow(FOLLOW_50);
             rule__XTypeLiteral__Group__1__Impl();
 
             state._fsp--;
@@ -57239,22 +57864,22 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__1__Impl"
-    // InternalPerspectiveDsl.g:17444:1: rule__XTypeLiteral__Group__1__Impl : ( 'typeof' ) ;
+    // InternalPerspectiveDsl.g:17641:1: rule__XTypeLiteral__Group__1__Impl : ( 'typeof' ) ;
     public final void rule__XTypeLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17448:1: ( ( 'typeof' ) )
-            // InternalPerspectiveDsl.g:17449:1: ( 'typeof' )
+            // InternalPerspectiveDsl.g:17645:1: ( ( 'typeof' ) )
+            // InternalPerspectiveDsl.g:17646:1: ( 'typeof' )
             {
-            // InternalPerspectiveDsl.g:17449:1: ( 'typeof' )
-            // InternalPerspectiveDsl.g:17450:2: 'typeof'
+            // InternalPerspectiveDsl.g:17646:1: ( 'typeof' )
+            // InternalPerspectiveDsl.g:17647:2: 'typeof'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1()); 
             }
-            match(input,108,FOLLOW_2); if (state.failed) return ;
+            match(input,110,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1()); 
             }
@@ -57280,14 +57905,14 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__2"
-    // InternalPerspectiveDsl.g:17459:1: rule__XTypeLiteral__Group__2 : rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 ;
+    // InternalPerspectiveDsl.g:17656: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:17463:1: ( rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 )
-            // InternalPerspectiveDsl.g:17464:2: rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3
+            // InternalPerspectiveDsl.g:17660:1: ( rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 )
+            // InternalPerspectiveDsl.g:17661:2: rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3
             {
             pushFollow(FOLLOW_7);
             rule__XTypeLiteral__Group__2__Impl();
@@ -57318,22 +57943,22 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__2__Impl"
-    // InternalPerspectiveDsl.g:17471:1: rule__XTypeLiteral__Group__2__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:17668:1: rule__XTypeLiteral__Group__2__Impl : ( '(' ) ;
     public final void rule__XTypeLiteral__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17475:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:17476:1: ( '(' )
+            // InternalPerspectiveDsl.g:17672:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:17673:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:17476:1: ( '(' )
-            // InternalPerspectiveDsl.g:17477:2: '('
+            // InternalPerspectiveDsl.g:17673:1: ( '(' )
+            // InternalPerspectiveDsl.g:17674:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -57359,16 +57984,16 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__3"
-    // InternalPerspectiveDsl.g:17486:1: rule__XTypeLiteral__Group__3 : rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 ;
+    // InternalPerspectiveDsl.g:17683: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:17490:1: ( rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 )
-            // InternalPerspectiveDsl.g:17491:2: rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4
+            // InternalPerspectiveDsl.g:17687:1: ( rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 )
+            // InternalPerspectiveDsl.g:17688:2: rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4
             {
-            pushFollow(FOLLOW_120);
+            pushFollow(FOLLOW_122);
             rule__XTypeLiteral__Group__3__Impl();
 
             state._fsp--;
@@ -57397,23 +58022,23 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__3__Impl"
-    // InternalPerspectiveDsl.g:17498:1: rule__XTypeLiteral__Group__3__Impl : ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) ;
+    // InternalPerspectiveDsl.g:17695: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:17502:1: ( ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) )
-            // InternalPerspectiveDsl.g:17503:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            // InternalPerspectiveDsl.g:17699:1: ( ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:17700:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
             {
-            // InternalPerspectiveDsl.g:17503:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
-            // InternalPerspectiveDsl.g:17504:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            // InternalPerspectiveDsl.g:17700:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            // InternalPerspectiveDsl.g:17701:2: ( rule__XTypeLiteral__TypeAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:17505:2: ( rule__XTypeLiteral__TypeAssignment_3 )
-            // InternalPerspectiveDsl.g:17505:3: rule__XTypeLiteral__TypeAssignment_3
+            // InternalPerspectiveDsl.g:17702:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            // InternalPerspectiveDsl.g:17702:3: rule__XTypeLiteral__TypeAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XTypeLiteral__TypeAssignment_3();
@@ -57448,16 +58073,16 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__4"
-    // InternalPerspectiveDsl.g:17513:1: rule__XTypeLiteral__Group__4 : rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 ;
+    // InternalPerspectiveDsl.g:17710: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:17517:1: ( rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 )
-            // InternalPerspectiveDsl.g:17518:2: rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5
+            // InternalPerspectiveDsl.g:17714:1: ( rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 )
+            // InternalPerspectiveDsl.g:17715:2: rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5
             {
-            pushFollow(FOLLOW_120);
+            pushFollow(FOLLOW_122);
             rule__XTypeLiteral__Group__4__Impl();
 
             state._fsp--;
@@ -57486,37 +58111,37 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__4__Impl"
-    // InternalPerspectiveDsl.g:17525:1: rule__XTypeLiteral__Group__4__Impl : ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) ;
+    // InternalPerspectiveDsl.g:17722: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:17529:1: ( ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) )
-            // InternalPerspectiveDsl.g:17530:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            // InternalPerspectiveDsl.g:17726:1: ( ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) )
+            // InternalPerspectiveDsl.g:17727:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
             {
-            // InternalPerspectiveDsl.g:17530:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
-            // InternalPerspectiveDsl.g:17531:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            // InternalPerspectiveDsl.g:17727:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            // InternalPerspectiveDsl.g:17728:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4()); 
             }
-            // InternalPerspectiveDsl.g:17532:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            // InternalPerspectiveDsl.g:17729:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
             loop125:
             do {
                 int alt125=2;
                 int LA125_0 = input.LA(1);
 
-                if ( (LA125_0==94) ) {
+                if ( (LA125_0==96) ) {
                     alt125=1;
                 }
 
 
                 switch (alt125) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:17532:3: rule__XTypeLiteral__ArrayDimensionsAssignment_4
+            	    // InternalPerspectiveDsl.g:17729:3: rule__XTypeLiteral__ArrayDimensionsAssignment_4
             	    {
-            	    pushFollow(FOLLOW_121);
+            	    pushFollow(FOLLOW_123);
             	    rule__XTypeLiteral__ArrayDimensionsAssignment_4();
 
             	    state._fsp--;
@@ -57555,14 +58180,14 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__5"
-    // InternalPerspectiveDsl.g:17540:1: rule__XTypeLiteral__Group__5 : rule__XTypeLiteral__Group__5__Impl ;
+    // InternalPerspectiveDsl.g:17737: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:17544:1: ( rule__XTypeLiteral__Group__5__Impl )
-            // InternalPerspectiveDsl.g:17545:2: rule__XTypeLiteral__Group__5__Impl
+            // InternalPerspectiveDsl.g:17741:1: ( rule__XTypeLiteral__Group__5__Impl )
+            // InternalPerspectiveDsl.g:17742:2: rule__XTypeLiteral__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTypeLiteral__Group__5__Impl();
@@ -57588,22 +58213,22 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__5__Impl"
-    // InternalPerspectiveDsl.g:17551:1: rule__XTypeLiteral__Group__5__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:17748:1: rule__XTypeLiteral__Group__5__Impl : ( ')' ) ;
     public final void rule__XTypeLiteral__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17555:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:17556:1: ( ')' )
+            // InternalPerspectiveDsl.g:17752:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:17753:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:17556:1: ( ')' )
-            // InternalPerspectiveDsl.g:17557:2: ')'
+            // InternalPerspectiveDsl.g:17753:1: ( ')' )
+            // InternalPerspectiveDsl.g:17754:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5()); 
             }
@@ -57629,16 +58254,16 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__0"
-    // InternalPerspectiveDsl.g:17567:1: rule__XThrowExpression__Group__0 : rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:17764: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:17571:1: ( rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 )
-            // InternalPerspectiveDsl.g:17572:2: rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1
+            // InternalPerspectiveDsl.g:17768:1: ( rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 )
+            // InternalPerspectiveDsl.g:17769:2: rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1
             {
-            pushFollow(FOLLOW_122);
+            pushFollow(FOLLOW_124);
             rule__XThrowExpression__Group__0__Impl();
 
             state._fsp--;
@@ -57667,23 +58292,23 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:17579:1: rule__XThrowExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:17776:1: rule__XThrowExpression__Group__0__Impl : ( () ) ;
     public final void rule__XThrowExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17583:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:17584:1: ( () )
+            // InternalPerspectiveDsl.g:17780:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17781:1: ( () )
             {
-            // InternalPerspectiveDsl.g:17584:1: ( () )
-            // InternalPerspectiveDsl.g:17585:2: ()
+            // InternalPerspectiveDsl.g:17781:1: ( () )
+            // InternalPerspectiveDsl.g:17782:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:17586:2: ()
-            // InternalPerspectiveDsl.g:17586:3: 
+            // InternalPerspectiveDsl.g:17783:2: ()
+            // InternalPerspectiveDsl.g:17783:3: 
             {
             }
 
@@ -57708,16 +58333,16 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__1"
-    // InternalPerspectiveDsl.g:17594:1: rule__XThrowExpression__Group__1 : rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:17791: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:17598:1: ( rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 )
-            // InternalPerspectiveDsl.g:17599:2: rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2
+            // InternalPerspectiveDsl.g:17795:1: ( rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 )
+            // InternalPerspectiveDsl.g:17796:2: rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XThrowExpression__Group__1__Impl();
 
             state._fsp--;
@@ -57746,22 +58371,22 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:17606:1: rule__XThrowExpression__Group__1__Impl : ( 'throw' ) ;
+    // InternalPerspectiveDsl.g:17803:1: rule__XThrowExpression__Group__1__Impl : ( 'throw' ) ;
     public final void rule__XThrowExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17610:1: ( ( 'throw' ) )
-            // InternalPerspectiveDsl.g:17611:1: ( 'throw' )
+            // InternalPerspectiveDsl.g:17807:1: ( ( 'throw' ) )
+            // InternalPerspectiveDsl.g:17808:1: ( 'throw' )
             {
-            // InternalPerspectiveDsl.g:17611:1: ( 'throw' )
-            // InternalPerspectiveDsl.g:17612:2: 'throw'
+            // InternalPerspectiveDsl.g:17808:1: ( 'throw' )
+            // InternalPerspectiveDsl.g:17809:2: 'throw'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1()); 
             }
-            match(input,109,FOLLOW_2); if (state.failed) return ;
+            match(input,111,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1()); 
             }
@@ -57787,14 +58412,14 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__2"
-    // InternalPerspectiveDsl.g:17621:1: rule__XThrowExpression__Group__2 : rule__XThrowExpression__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:17818: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:17625:1: ( rule__XThrowExpression__Group__2__Impl )
-            // InternalPerspectiveDsl.g:17626:2: rule__XThrowExpression__Group__2__Impl
+            // InternalPerspectiveDsl.g:17822:1: ( rule__XThrowExpression__Group__2__Impl )
+            // InternalPerspectiveDsl.g:17823:2: rule__XThrowExpression__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XThrowExpression__Group__2__Impl();
@@ -57820,23 +58445,23 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:17632:1: rule__XThrowExpression__Group__2__Impl : ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:17829: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:17636:1: ( ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:17637:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            // InternalPerspectiveDsl.g:17833:1: ( ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:17834:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:17637:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
-            // InternalPerspectiveDsl.g:17638:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            // InternalPerspectiveDsl.g:17834:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            // InternalPerspectiveDsl.g:17835:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:17639:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
-            // InternalPerspectiveDsl.g:17639:3: rule__XThrowExpression__ExpressionAssignment_2
+            // InternalPerspectiveDsl.g:17836:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            // InternalPerspectiveDsl.g:17836:3: rule__XThrowExpression__ExpressionAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XThrowExpression__ExpressionAssignment_2();
@@ -57871,16 +58496,16 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__0"
-    // InternalPerspectiveDsl.g:17648:1: rule__XReturnExpression__Group__0 : rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:17845: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:17652:1: ( rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 )
-            // InternalPerspectiveDsl.g:17653:2: rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1
+            // InternalPerspectiveDsl.g:17849:1: ( rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 )
+            // InternalPerspectiveDsl.g:17850:2: rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1
             {
-            pushFollow(FOLLOW_123);
+            pushFollow(FOLLOW_125);
             rule__XReturnExpression__Group__0__Impl();
 
             state._fsp--;
@@ -57909,23 +58534,23 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:17660:1: rule__XReturnExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:17857:1: rule__XReturnExpression__Group__0__Impl : ( () ) ;
     public final void rule__XReturnExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17664:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:17665:1: ( () )
+            // InternalPerspectiveDsl.g:17861:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17862:1: ( () )
             {
-            // InternalPerspectiveDsl.g:17665:1: ( () )
-            // InternalPerspectiveDsl.g:17666:2: ()
+            // InternalPerspectiveDsl.g:17862:1: ( () )
+            // InternalPerspectiveDsl.g:17863:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:17667:2: ()
-            // InternalPerspectiveDsl.g:17667:3: 
+            // InternalPerspectiveDsl.g:17864:2: ()
+            // InternalPerspectiveDsl.g:17864:3: 
             {
             }
 
@@ -57950,16 +58575,16 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__1"
-    // InternalPerspectiveDsl.g:17675:1: rule__XReturnExpression__Group__1 : rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:17872: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:17679:1: ( rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 )
-            // InternalPerspectiveDsl.g:17680:2: rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2
+            // InternalPerspectiveDsl.g:17876:1: ( rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 )
+            // InternalPerspectiveDsl.g:17877:2: rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XReturnExpression__Group__1__Impl();
 
             state._fsp--;
@@ -57988,22 +58613,22 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:17687:1: rule__XReturnExpression__Group__1__Impl : ( 'return' ) ;
+    // InternalPerspectiveDsl.g:17884:1: rule__XReturnExpression__Group__1__Impl : ( 'return' ) ;
     public final void rule__XReturnExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17691:1: ( ( 'return' ) )
-            // InternalPerspectiveDsl.g:17692:1: ( 'return' )
+            // InternalPerspectiveDsl.g:17888:1: ( ( 'return' ) )
+            // InternalPerspectiveDsl.g:17889:1: ( 'return' )
             {
-            // InternalPerspectiveDsl.g:17692:1: ( 'return' )
-            // InternalPerspectiveDsl.g:17693:2: 'return'
+            // InternalPerspectiveDsl.g:17889:1: ( 'return' )
+            // InternalPerspectiveDsl.g:17890:2: 'return'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getReturnKeyword_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.getXReturnExpressionAccess().getReturnKeyword_1()); 
             }
@@ -58029,14 +58654,14 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__2"
-    // InternalPerspectiveDsl.g:17702:1: rule__XReturnExpression__Group__2 : rule__XReturnExpression__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:17899: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:17706:1: ( rule__XReturnExpression__Group__2__Impl )
-            // InternalPerspectiveDsl.g:17707:2: rule__XReturnExpression__Group__2__Impl
+            // InternalPerspectiveDsl.g:17903:1: ( rule__XReturnExpression__Group__2__Impl )
+            // InternalPerspectiveDsl.g:17904:2: rule__XReturnExpression__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XReturnExpression__Group__2__Impl();
@@ -58062,27 +58687,27 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:17713:1: rule__XReturnExpression__Group__2__Impl : ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) ;
+    // InternalPerspectiveDsl.g:17910: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:17717:1: ( ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) )
-            // InternalPerspectiveDsl.g:17718:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            // InternalPerspectiveDsl.g:17914:1: ( ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) )
+            // InternalPerspectiveDsl.g:17915:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
             {
-            // InternalPerspectiveDsl.g:17718:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
-            // InternalPerspectiveDsl.g:17719:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            // InternalPerspectiveDsl.g:17915:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            // InternalPerspectiveDsl.g:17916:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:17720:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            // InternalPerspectiveDsl.g:17917:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
             int alt126=2;
             alt126 = dfa126.predict(input);
             switch (alt126) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:17720:3: rule__XReturnExpression__ExpressionAssignment_2
+                    // InternalPerspectiveDsl.g:17917:3: rule__XReturnExpression__ExpressionAssignment_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XReturnExpression__ExpressionAssignment_2();
@@ -58120,16 +58745,16 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__0"
-    // InternalPerspectiveDsl.g:17729:1: rule__XTryCatchFinallyExpression__Group__0 : rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:17926: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:17733:1: ( rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 )
-            // InternalPerspectiveDsl.g:17734:2: rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1
+            // InternalPerspectiveDsl.g:17930:1: ( rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 )
+            // InternalPerspectiveDsl.g:17931:2: rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1
             {
-            pushFollow(FOLLOW_124);
+            pushFollow(FOLLOW_126);
             rule__XTryCatchFinallyExpression__Group__0__Impl();
 
             state._fsp--;
@@ -58158,23 +58783,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:17741:1: rule__XTryCatchFinallyExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:17938:1: rule__XTryCatchFinallyExpression__Group__0__Impl : ( () ) ;
     public final void rule__XTryCatchFinallyExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17745:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:17746:1: ( () )
+            // InternalPerspectiveDsl.g:17942:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17943:1: ( () )
             {
-            // InternalPerspectiveDsl.g:17746:1: ( () )
-            // InternalPerspectiveDsl.g:17747:2: ()
+            // InternalPerspectiveDsl.g:17943:1: ( () )
+            // InternalPerspectiveDsl.g:17944:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:17748:2: ()
-            // InternalPerspectiveDsl.g:17748:3: 
+            // InternalPerspectiveDsl.g:17945:2: ()
+            // InternalPerspectiveDsl.g:17945:3: 
             {
             }
 
@@ -58199,16 +58824,16 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__1"
-    // InternalPerspectiveDsl.g:17756:1: rule__XTryCatchFinallyExpression__Group__1 : rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:17953: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:17760:1: ( rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 )
-            // InternalPerspectiveDsl.g:17761:2: rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2
+            // InternalPerspectiveDsl.g:17957:1: ( rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 )
+            // InternalPerspectiveDsl.g:17958:2: rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XTryCatchFinallyExpression__Group__1__Impl();
 
             state._fsp--;
@@ -58237,22 +58862,22 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:17768:1: rule__XTryCatchFinallyExpression__Group__1__Impl : ( 'try' ) ;
+    // InternalPerspectiveDsl.g:17965:1: rule__XTryCatchFinallyExpression__Group__1__Impl : ( 'try' ) ;
     public final void rule__XTryCatchFinallyExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17772:1: ( ( 'try' ) )
-            // InternalPerspectiveDsl.g:17773:1: ( 'try' )
+            // InternalPerspectiveDsl.g:17969:1: ( ( 'try' ) )
+            // InternalPerspectiveDsl.g:17970:1: ( 'try' )
             {
-            // InternalPerspectiveDsl.g:17773:1: ( 'try' )
-            // InternalPerspectiveDsl.g:17774:2: 'try'
+            // InternalPerspectiveDsl.g:17970:1: ( 'try' )
+            // InternalPerspectiveDsl.g:17971:2: 'try'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_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.getXTryCatchFinallyExpressionAccess().getTryKeyword_1()); 
             }
@@ -58278,16 +58903,16 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__2"
-    // InternalPerspectiveDsl.g:17783:1: rule__XTryCatchFinallyExpression__Group__2 : rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:17980: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:17787:1: ( rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 )
-            // InternalPerspectiveDsl.g:17788:2: rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3
+            // InternalPerspectiveDsl.g:17984:1: ( rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 )
+            // InternalPerspectiveDsl.g:17985:2: rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3
             {
-            pushFollow(FOLLOW_125);
+            pushFollow(FOLLOW_127);
             rule__XTryCatchFinallyExpression__Group__2__Impl();
 
             state._fsp--;
@@ -58316,23 +58941,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:17795:1: rule__XTryCatchFinallyExpression__Group__2__Impl : ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:17992: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:17799:1: ( ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:17800:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            // InternalPerspectiveDsl.g:17996:1: ( ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:17997:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:17800:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
-            // InternalPerspectiveDsl.g:17801:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            // InternalPerspectiveDsl.g:17997:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            // InternalPerspectiveDsl.g:17998:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:17802:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
-            // InternalPerspectiveDsl.g:17802:3: rule__XTryCatchFinallyExpression__ExpressionAssignment_2
+            // InternalPerspectiveDsl.g:17999:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            // InternalPerspectiveDsl.g:17999:3: rule__XTryCatchFinallyExpression__ExpressionAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__ExpressionAssignment_2();
@@ -58367,14 +58992,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__3"
-    // InternalPerspectiveDsl.g:17810:1: rule__XTryCatchFinallyExpression__Group__3 : rule__XTryCatchFinallyExpression__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:18007: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:17814:1: ( rule__XTryCatchFinallyExpression__Group__3__Impl )
-            // InternalPerspectiveDsl.g:17815:2: rule__XTryCatchFinallyExpression__Group__3__Impl
+            // InternalPerspectiveDsl.g:18011:1: ( rule__XTryCatchFinallyExpression__Group__3__Impl )
+            // InternalPerspectiveDsl.g:18012:2: rule__XTryCatchFinallyExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group__3__Impl();
@@ -58400,23 +59025,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:17821:1: rule__XTryCatchFinallyExpression__Group__3__Impl : ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) ;
+    // InternalPerspectiveDsl.g:18018: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:17825:1: ( ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) )
-            // InternalPerspectiveDsl.g:17826:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            // InternalPerspectiveDsl.g:18022:1: ( ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) )
+            // InternalPerspectiveDsl.g:18023:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
             {
-            // InternalPerspectiveDsl.g:17826:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
-            // InternalPerspectiveDsl.g:17827:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            // InternalPerspectiveDsl.g:18023:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            // InternalPerspectiveDsl.g:18024:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getAlternatives_3()); 
             }
-            // InternalPerspectiveDsl.g:17828:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
-            // InternalPerspectiveDsl.g:17828:3: rule__XTryCatchFinallyExpression__Alternatives_3
+            // InternalPerspectiveDsl.g:18025:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            // InternalPerspectiveDsl.g:18025:3: rule__XTryCatchFinallyExpression__Alternatives_3
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Alternatives_3();
@@ -58451,16 +59076,16 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__0"
-    // InternalPerspectiveDsl.g:17837:1: rule__XTryCatchFinallyExpression__Group_3_0__0 : rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 ;
+    // InternalPerspectiveDsl.g:18034: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:17841:1: ( rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 )
-            // InternalPerspectiveDsl.g:17842:2: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1
+            // InternalPerspectiveDsl.g:18038:1: ( rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 )
+            // InternalPerspectiveDsl.g:18039:2: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1
             {
-            pushFollow(FOLLOW_126);
+            pushFollow(FOLLOW_128);
             rule__XTryCatchFinallyExpression__Group_3_0__0__Impl();
 
             state._fsp--;
@@ -58489,28 +59114,28 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__0__Impl"
-    // InternalPerspectiveDsl.g:17849:1: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl : ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) ;
+    // InternalPerspectiveDsl.g:18046: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:17853:1: ( ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) )
-            // InternalPerspectiveDsl.g:17854:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            // InternalPerspectiveDsl.g:18050:1: ( ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) )
+            // InternalPerspectiveDsl.g:18051:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
             {
-            // InternalPerspectiveDsl.g:17854:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
-            // InternalPerspectiveDsl.g:17855:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            // InternalPerspectiveDsl.g:18051:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            // InternalPerspectiveDsl.g:18052:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
             {
-            // InternalPerspectiveDsl.g:17855:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) )
-            // InternalPerspectiveDsl.g:17856:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            // InternalPerspectiveDsl.g:18052:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) )
+            // InternalPerspectiveDsl.g:18053:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
             }
-            // InternalPerspectiveDsl.g:17857:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
-            // InternalPerspectiveDsl.g:17857:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            // InternalPerspectiveDsl.g:18054:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            // InternalPerspectiveDsl.g:18054:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
             {
-            pushFollow(FOLLOW_127);
+            pushFollow(FOLLOW_129);
             rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
 
             state._fsp--;
@@ -58524,22 +59149,22 @@
 
             }
 
-            // InternalPerspectiveDsl.g:17860:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
-            // InternalPerspectiveDsl.g:17861:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            // InternalPerspectiveDsl.g:18057:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            // InternalPerspectiveDsl.g:18058:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
             }
-            // InternalPerspectiveDsl.g:17862:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            // InternalPerspectiveDsl.g:18059:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
             loop127:
             do {
                 int alt127=2;
                 int LA127_0 = input.LA(1);
 
-                if ( (LA127_0==114) ) {
+                if ( (LA127_0==116) ) {
                     int LA127_2 = input.LA(2);
 
-                    if ( (synpred183_InternalPerspectiveDsl()) ) {
+                    if ( (synpred185_InternalPerspectiveDsl()) ) {
                         alt127=1;
                     }
 
@@ -58549,9 +59174,9 @@
 
                 switch (alt127) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:17862:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            	    // InternalPerspectiveDsl.g:18059:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
             	    {
-            	    pushFollow(FOLLOW_127);
+            	    pushFollow(FOLLOW_129);
             	    rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
 
             	    state._fsp--;
@@ -58593,14 +59218,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__1"
-    // InternalPerspectiveDsl.g:17871:1: rule__XTryCatchFinallyExpression__Group_3_0__1 : rule__XTryCatchFinallyExpression__Group_3_0__1__Impl ;
+    // InternalPerspectiveDsl.g:18068: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:17875:1: ( rule__XTryCatchFinallyExpression__Group_3_0__1__Impl )
-            // InternalPerspectiveDsl.g:17876:2: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl
+            // InternalPerspectiveDsl.g:18072:1: ( rule__XTryCatchFinallyExpression__Group_3_0__1__Impl )
+            // InternalPerspectiveDsl.g:18073:2: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group_3_0__1__Impl();
@@ -58626,35 +59251,35 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__1__Impl"
-    // InternalPerspectiveDsl.g:17882:1: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl : ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:18079: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:17886:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) )
-            // InternalPerspectiveDsl.g:17887:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            // InternalPerspectiveDsl.g:18083:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) )
+            // InternalPerspectiveDsl.g:18084:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:17887:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
-            // InternalPerspectiveDsl.g:17888:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            // InternalPerspectiveDsl.g:18084:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            // InternalPerspectiveDsl.g:18085:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1()); 
             }
-            // InternalPerspectiveDsl.g:17889:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            // InternalPerspectiveDsl.g:18086:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
             int alt128=2;
             int LA128_0 = input.LA(1);
 
-            if ( (LA128_0==112) ) {
+            if ( (LA128_0==114) ) {
                 int LA128_1 = input.LA(2);
 
-                if ( (synpred184_InternalPerspectiveDsl()) ) {
+                if ( (synpred186_InternalPerspectiveDsl()) ) {
                     alt128=1;
                 }
             }
             switch (alt128) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:17889:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
+                    // InternalPerspectiveDsl.g:18086:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XTryCatchFinallyExpression__Group_3_0_1__0();
@@ -58692,16 +59317,16 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__0"
-    // InternalPerspectiveDsl.g:17898: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:18095: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:17902:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 )
-            // InternalPerspectiveDsl.g:17903:2: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1
+            // InternalPerspectiveDsl.g:18099:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 )
+            // InternalPerspectiveDsl.g:18100:2: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl();
 
             state._fsp--;
@@ -58730,25 +59355,25 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:17910:1: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl : ( ( 'finally' ) ) ;
+    // InternalPerspectiveDsl.g:18107: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:17914:1: ( ( ( 'finally' ) ) )
-            // InternalPerspectiveDsl.g:17915:1: ( ( 'finally' ) )
+            // InternalPerspectiveDsl.g:18111:1: ( ( ( 'finally' ) ) )
+            // InternalPerspectiveDsl.g:18112:1: ( ( 'finally' ) )
             {
-            // InternalPerspectiveDsl.g:17915:1: ( ( 'finally' ) )
-            // InternalPerspectiveDsl.g:17916:2: ( 'finally' )
+            // InternalPerspectiveDsl.g:18112:1: ( ( 'finally' ) )
+            // InternalPerspectiveDsl.g:18113:2: ( 'finally' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:17917:2: ( 'finally' )
-            // InternalPerspectiveDsl.g:17917:3: 'finally'
+            // InternalPerspectiveDsl.g:18114:2: ( 'finally' )
+            // InternalPerspectiveDsl.g:18114:3: 'finally'
             {
-            match(input,112,FOLLOW_2); if (state.failed) return ;
+            match(input,114,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -58777,14 +59402,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__1"
-    // InternalPerspectiveDsl.g:17925:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1 : rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl ;
+    // InternalPerspectiveDsl.g:18122: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:17929:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl )
-            // InternalPerspectiveDsl.g:17930:2: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl
+            // InternalPerspectiveDsl.g:18126:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:18127:2: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl();
@@ -58810,23 +59435,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl"
-    // InternalPerspectiveDsl.g:17936:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:18133: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:17940:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) )
-            // InternalPerspectiveDsl.g:17941:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            // InternalPerspectiveDsl.g:18137:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) )
+            // InternalPerspectiveDsl.g:18138:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:17941:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
-            // InternalPerspectiveDsl.g:17942:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            // InternalPerspectiveDsl.g:18138:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            // InternalPerspectiveDsl.g:18139:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1()); 
             }
-            // InternalPerspectiveDsl.g:17943:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
-            // InternalPerspectiveDsl.g:17943:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1
+            // InternalPerspectiveDsl.g:18140:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            // InternalPerspectiveDsl.g:18140:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1();
@@ -58861,16 +59486,16 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__0"
-    // InternalPerspectiveDsl.g:17952:1: rule__XTryCatchFinallyExpression__Group_3_1__0 : rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 ;
+    // InternalPerspectiveDsl.g:18149: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:17956:1: ( rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 )
-            // InternalPerspectiveDsl.g:17957:2: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1
+            // InternalPerspectiveDsl.g:18153:1: ( rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:18154:2: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XTryCatchFinallyExpression__Group_3_1__0__Impl();
 
             state._fsp--;
@@ -58899,22 +59524,22 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__0__Impl"
-    // InternalPerspectiveDsl.g:17964:1: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl : ( 'finally' ) ;
+    // InternalPerspectiveDsl.g:18161: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:17968:1: ( ( 'finally' ) )
-            // InternalPerspectiveDsl.g:17969:1: ( 'finally' )
+            // InternalPerspectiveDsl.g:18165:1: ( ( 'finally' ) )
+            // InternalPerspectiveDsl.g:18166:1: ( 'finally' )
             {
-            // InternalPerspectiveDsl.g:17969:1: ( 'finally' )
-            // InternalPerspectiveDsl.g:17970:2: 'finally'
+            // InternalPerspectiveDsl.g:18166:1: ( 'finally' )
+            // InternalPerspectiveDsl.g:18167:2: 'finally'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0()); 
             }
-            match(input,112,FOLLOW_2); if (state.failed) return ;
+            match(input,114,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0()); 
             }
@@ -58940,14 +59565,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__1"
-    // InternalPerspectiveDsl.g:17979:1: rule__XTryCatchFinallyExpression__Group_3_1__1 : rule__XTryCatchFinallyExpression__Group_3_1__1__Impl ;
+    // InternalPerspectiveDsl.g:18176: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:17983:1: ( rule__XTryCatchFinallyExpression__Group_3_1__1__Impl )
-            // InternalPerspectiveDsl.g:17984:2: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl
+            // InternalPerspectiveDsl.g:18180:1: ( rule__XTryCatchFinallyExpression__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:18181:2: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group_3_1__1__Impl();
@@ -58973,23 +59598,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__1__Impl"
-    // InternalPerspectiveDsl.g:17990:1: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:18187: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:17994:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) )
-            // InternalPerspectiveDsl.g:17995:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:18191:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:18192:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:17995:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
-            // InternalPerspectiveDsl.g:17996:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:18192:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:18193:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1()); 
             }
-            // InternalPerspectiveDsl.g:17997:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
-            // InternalPerspectiveDsl.g:17997:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1
+            // InternalPerspectiveDsl.g:18194:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:18194:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1();
@@ -59024,16 +59649,16 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__0"
-    // InternalPerspectiveDsl.g:18006:1: rule__XSynchronizedExpression__Group__0 : rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:18203: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:18010:1: ( rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 )
-            // InternalPerspectiveDsl.g:18011:2: rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1
+            // InternalPerspectiveDsl.g:18207:1: ( rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 )
+            // InternalPerspectiveDsl.g:18208:2: rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XSynchronizedExpression__Group__0__Impl();
 
             state._fsp--;
@@ -59062,23 +59687,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:18018:1: rule__XSynchronizedExpression__Group__0__Impl : ( ( rule__XSynchronizedExpression__Group_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:18215: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:18022:1: ( ( ( rule__XSynchronizedExpression__Group_0__0 ) ) )
-            // InternalPerspectiveDsl.g:18023:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:18219:1: ( ( ( rule__XSynchronizedExpression__Group_0__0 ) ) )
+            // InternalPerspectiveDsl.g:18220:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:18023:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
-            // InternalPerspectiveDsl.g:18024:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            // InternalPerspectiveDsl.g:18220:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:18221:2: ( rule__XSynchronizedExpression__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0()); 
             }
-            // InternalPerspectiveDsl.g:18025:2: ( rule__XSynchronizedExpression__Group_0__0 )
-            // InternalPerspectiveDsl.g:18025:3: rule__XSynchronizedExpression__Group_0__0
+            // InternalPerspectiveDsl.g:18222:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            // InternalPerspectiveDsl.g:18222:3: rule__XSynchronizedExpression__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0__0();
@@ -59113,16 +59738,16 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__1"
-    // InternalPerspectiveDsl.g:18033:1: rule__XSynchronizedExpression__Group__1 : rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:18230: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:18037:1: ( rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 )
-            // InternalPerspectiveDsl.g:18038:2: rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2
+            // InternalPerspectiveDsl.g:18234:1: ( rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 )
+            // InternalPerspectiveDsl.g:18235:2: rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2
             {
-            pushFollow(FOLLOW_97);
+            pushFollow(FOLLOW_99);
             rule__XSynchronizedExpression__Group__1__Impl();
 
             state._fsp--;
@@ -59151,23 +59776,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:18045:1: rule__XSynchronizedExpression__Group__1__Impl : ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:18242: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:18049:1: ( ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:18050:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            // InternalPerspectiveDsl.g:18246:1: ( ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:18247:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:18050:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
-            // InternalPerspectiveDsl.g:18051:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            // InternalPerspectiveDsl.g:18247:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            // InternalPerspectiveDsl.g:18248:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:18052:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
-            // InternalPerspectiveDsl.g:18052:3: rule__XSynchronizedExpression__ParamAssignment_1
+            // InternalPerspectiveDsl.g:18249:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            // InternalPerspectiveDsl.g:18249:3: rule__XSynchronizedExpression__ParamAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__ParamAssignment_1();
@@ -59202,16 +59827,16 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__2"
-    // InternalPerspectiveDsl.g:18060:1: rule__XSynchronizedExpression__Group__2 : rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:18257: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:18064:1: ( rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 )
-            // InternalPerspectiveDsl.g:18065:2: rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3
+            // InternalPerspectiveDsl.g:18261:1: ( rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 )
+            // InternalPerspectiveDsl.g:18262:2: rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XSynchronizedExpression__Group__2__Impl();
 
             state._fsp--;
@@ -59240,22 +59865,22 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:18072:1: rule__XSynchronizedExpression__Group__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:18269:1: rule__XSynchronizedExpression__Group__2__Impl : ( ')' ) ;
     public final void rule__XSynchronizedExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18076:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:18077:1: ( ')' )
+            // InternalPerspectiveDsl.g:18273:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:18274:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:18077:1: ( ')' )
-            // InternalPerspectiveDsl.g:18078:2: ')'
+            // InternalPerspectiveDsl.g:18274:1: ( ')' )
+            // InternalPerspectiveDsl.g:18275:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
@@ -59281,14 +59906,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__3"
-    // InternalPerspectiveDsl.g:18087:1: rule__XSynchronizedExpression__Group__3 : rule__XSynchronizedExpression__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:18284: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:18091:1: ( rule__XSynchronizedExpression__Group__3__Impl )
-            // InternalPerspectiveDsl.g:18092:2: rule__XSynchronizedExpression__Group__3__Impl
+            // InternalPerspectiveDsl.g:18288:1: ( rule__XSynchronizedExpression__Group__3__Impl )
+            // InternalPerspectiveDsl.g:18289:2: rule__XSynchronizedExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group__3__Impl();
@@ -59314,23 +59939,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:18098:1: rule__XSynchronizedExpression__Group__3__Impl : ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) ;
+    // InternalPerspectiveDsl.g:18295: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:18102:1: ( ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) )
-            // InternalPerspectiveDsl.g:18103:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            // InternalPerspectiveDsl.g:18299:1: ( ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:18300:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
             {
-            // InternalPerspectiveDsl.g:18103:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
-            // InternalPerspectiveDsl.g:18104:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            // InternalPerspectiveDsl.g:18300:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            // InternalPerspectiveDsl.g:18301:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:18105:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
-            // InternalPerspectiveDsl.g:18105:3: rule__XSynchronizedExpression__ExpressionAssignment_3
+            // InternalPerspectiveDsl.g:18302:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            // InternalPerspectiveDsl.g:18302:3: rule__XSynchronizedExpression__ExpressionAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__ExpressionAssignment_3();
@@ -59365,14 +59990,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0__0"
-    // InternalPerspectiveDsl.g:18114:1: rule__XSynchronizedExpression__Group_0__0 : rule__XSynchronizedExpression__Group_0__0__Impl ;
+    // InternalPerspectiveDsl.g:18311: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:18118:1: ( rule__XSynchronizedExpression__Group_0__0__Impl )
-            // InternalPerspectiveDsl.g:18119:2: rule__XSynchronizedExpression__Group_0__0__Impl
+            // InternalPerspectiveDsl.g:18315:1: ( rule__XSynchronizedExpression__Group_0__0__Impl )
+            // InternalPerspectiveDsl.g:18316:2: rule__XSynchronizedExpression__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0__0__Impl();
@@ -59398,23 +60023,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:18125:1: rule__XSynchronizedExpression__Group_0__0__Impl : ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:18322: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:18129:1: ( ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:18130:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:18326:1: ( ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:18327:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:18130:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
-            // InternalPerspectiveDsl.g:18131:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:18327:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:18328:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0()); 
             }
-            // InternalPerspectiveDsl.g:18132:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
-            // InternalPerspectiveDsl.g:18132:3: rule__XSynchronizedExpression__Group_0_0__0
+            // InternalPerspectiveDsl.g:18329:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:18329:3: rule__XSynchronizedExpression__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0_0__0();
@@ -59449,16 +60074,16 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__0"
-    // InternalPerspectiveDsl.g:18141:1: rule__XSynchronizedExpression__Group_0_0__0 : rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 ;
+    // InternalPerspectiveDsl.g:18338: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:18145:1: ( rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 )
-            // InternalPerspectiveDsl.g:18146:2: rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1
+            // InternalPerspectiveDsl.g:18342:1: ( rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 )
+            // InternalPerspectiveDsl.g:18343:2: rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1
             {
-            pushFollow(FOLLOW_128);
+            pushFollow(FOLLOW_130);
             rule__XSynchronizedExpression__Group_0_0__0__Impl();
 
             state._fsp--;
@@ -59487,23 +60112,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:18153:1: rule__XSynchronizedExpression__Group_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:18350: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:18157:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:18158:1: ( () )
+            // InternalPerspectiveDsl.g:18354:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:18355:1: ( () )
             {
-            // InternalPerspectiveDsl.g:18158:1: ( () )
-            // InternalPerspectiveDsl.g:18159:2: ()
+            // InternalPerspectiveDsl.g:18355:1: ( () )
+            // InternalPerspectiveDsl.g:18356:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:18160:2: ()
-            // InternalPerspectiveDsl.g:18160:3: 
+            // InternalPerspectiveDsl.g:18357:2: ()
+            // InternalPerspectiveDsl.g:18357:3: 
             {
             }
 
@@ -59528,16 +60153,16 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__1"
-    // InternalPerspectiveDsl.g:18168:1: rule__XSynchronizedExpression__Group_0_0__1 : rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 ;
+    // InternalPerspectiveDsl.g:18365: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:18172:1: ( rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 )
-            // InternalPerspectiveDsl.g:18173:2: rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2
+            // InternalPerspectiveDsl.g:18369:1: ( rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 )
+            // InternalPerspectiveDsl.g:18370:2: rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2
             {
-            pushFollow(FOLLOW_48);
+            pushFollow(FOLLOW_50);
             rule__XSynchronizedExpression__Group_0_0__1__Impl();
 
             state._fsp--;
@@ -59566,22 +60191,22 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:18180:1: rule__XSynchronizedExpression__Group_0_0__1__Impl : ( 'synchronized' ) ;
+    // InternalPerspectiveDsl.g:18377: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:18184:1: ( ( 'synchronized' ) )
-            // InternalPerspectiveDsl.g:18185:1: ( 'synchronized' )
+            // InternalPerspectiveDsl.g:18381:1: ( ( 'synchronized' ) )
+            // InternalPerspectiveDsl.g:18382:1: ( 'synchronized' )
             {
-            // InternalPerspectiveDsl.g:18185:1: ( 'synchronized' )
-            // InternalPerspectiveDsl.g:18186:2: 'synchronized'
+            // InternalPerspectiveDsl.g:18382:1: ( 'synchronized' )
+            // InternalPerspectiveDsl.g:18383:2: 'synchronized'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_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.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1()); 
             }
@@ -59607,14 +60232,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__2"
-    // InternalPerspectiveDsl.g:18195:1: rule__XSynchronizedExpression__Group_0_0__2 : rule__XSynchronizedExpression__Group_0_0__2__Impl ;
+    // InternalPerspectiveDsl.g:18392: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:18199:1: ( rule__XSynchronizedExpression__Group_0_0__2__Impl )
-            // InternalPerspectiveDsl.g:18200:2: rule__XSynchronizedExpression__Group_0_0__2__Impl
+            // InternalPerspectiveDsl.g:18396:1: ( rule__XSynchronizedExpression__Group_0_0__2__Impl )
+            // InternalPerspectiveDsl.g:18397:2: rule__XSynchronizedExpression__Group_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0_0__2__Impl();
@@ -59640,22 +60265,22 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__2__Impl"
-    // InternalPerspectiveDsl.g:18206:1: rule__XSynchronizedExpression__Group_0_0__2__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:18403: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:18210:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:18211:1: ( '(' )
+            // InternalPerspectiveDsl.g:18407:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:18408:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:18211:1: ( '(' )
-            // InternalPerspectiveDsl.g:18212:2: '('
+            // InternalPerspectiveDsl.g:18408:1: ( '(' )
+            // InternalPerspectiveDsl.g:18409:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
@@ -59681,16 +60306,16 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__0"
-    // InternalPerspectiveDsl.g:18222:1: rule__XCatchClause__Group__0 : rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 ;
+    // InternalPerspectiveDsl.g:18419: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:18226:1: ( rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 )
-            // InternalPerspectiveDsl.g:18227:2: rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1
+            // InternalPerspectiveDsl.g:18423:1: ( rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 )
+            // InternalPerspectiveDsl.g:18424:2: rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1
             {
-            pushFollow(FOLLOW_48);
+            pushFollow(FOLLOW_50);
             rule__XCatchClause__Group__0__Impl();
 
             state._fsp--;
@@ -59719,25 +60344,25 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__0__Impl"
-    // InternalPerspectiveDsl.g:18234:1: rule__XCatchClause__Group__0__Impl : ( ( 'catch' ) ) ;
+    // InternalPerspectiveDsl.g:18431:1: rule__XCatchClause__Group__0__Impl : ( ( 'catch' ) ) ;
     public final void rule__XCatchClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18238:1: ( ( ( 'catch' ) ) )
-            // InternalPerspectiveDsl.g:18239:1: ( ( 'catch' ) )
+            // InternalPerspectiveDsl.g:18435:1: ( ( ( 'catch' ) ) )
+            // InternalPerspectiveDsl.g:18436:1: ( ( 'catch' ) )
             {
-            // InternalPerspectiveDsl.g:18239:1: ( ( 'catch' ) )
-            // InternalPerspectiveDsl.g:18240:2: ( 'catch' )
+            // InternalPerspectiveDsl.g:18436:1: ( ( 'catch' ) )
+            // InternalPerspectiveDsl.g:18437:2: ( 'catch' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getCatchKeyword_0()); 
             }
-            // InternalPerspectiveDsl.g:18241:2: ( 'catch' )
-            // InternalPerspectiveDsl.g:18241:3: 'catch'
+            // InternalPerspectiveDsl.g:18438:2: ( 'catch' )
+            // InternalPerspectiveDsl.g:18438:3: 'catch'
             {
-            match(input,114,FOLLOW_2); if (state.failed) return ;
+            match(input,116,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -59766,16 +60391,16 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__1"
-    // InternalPerspectiveDsl.g:18249:1: rule__XCatchClause__Group__1 : rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 ;
+    // InternalPerspectiveDsl.g:18446: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:18253:1: ( rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 )
-            // InternalPerspectiveDsl.g:18254:2: rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2
+            // InternalPerspectiveDsl.g:18450:1: ( rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 )
+            // InternalPerspectiveDsl.g:18451:2: rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__XCatchClause__Group__1__Impl();
 
             state._fsp--;
@@ -59804,22 +60429,22 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__1__Impl"
-    // InternalPerspectiveDsl.g:18261:1: rule__XCatchClause__Group__1__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:18458:1: rule__XCatchClause__Group__1__Impl : ( '(' ) ;
     public final void rule__XCatchClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18265:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:18266:1: ( '(' )
+            // InternalPerspectiveDsl.g:18462:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:18463:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:18266:1: ( '(' )
-            // InternalPerspectiveDsl.g:18267:2: '('
+            // InternalPerspectiveDsl.g:18463:1: ( '(' )
+            // InternalPerspectiveDsl.g:18464:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_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.getXCatchClauseAccess().getLeftParenthesisKeyword_1()); 
             }
@@ -59845,16 +60470,16 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__2"
-    // InternalPerspectiveDsl.g:18276:1: rule__XCatchClause__Group__2 : rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 ;
+    // InternalPerspectiveDsl.g:18473: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:18280:1: ( rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 )
-            // InternalPerspectiveDsl.g:18281:2: rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3
+            // InternalPerspectiveDsl.g:18477:1: ( rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 )
+            // InternalPerspectiveDsl.g:18478:2: rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3
             {
-            pushFollow(FOLLOW_97);
+            pushFollow(FOLLOW_99);
             rule__XCatchClause__Group__2__Impl();
 
             state._fsp--;
@@ -59883,23 +60508,23 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__2__Impl"
-    // InternalPerspectiveDsl.g:18288:1: rule__XCatchClause__Group__2__Impl : ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:18485: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:18292:1: ( ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:18293:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            // InternalPerspectiveDsl.g:18489:1: ( ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:18490:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:18293:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
-            // InternalPerspectiveDsl.g:18294:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            // InternalPerspectiveDsl.g:18490:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            // InternalPerspectiveDsl.g:18491:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:18295:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
-            // InternalPerspectiveDsl.g:18295:3: rule__XCatchClause__DeclaredParamAssignment_2
+            // InternalPerspectiveDsl.g:18492:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            // InternalPerspectiveDsl.g:18492:3: rule__XCatchClause__DeclaredParamAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__DeclaredParamAssignment_2();
@@ -59934,16 +60559,16 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__3"
-    // InternalPerspectiveDsl.g:18303:1: rule__XCatchClause__Group__3 : rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 ;
+    // InternalPerspectiveDsl.g:18500: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:18307:1: ( rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 )
-            // InternalPerspectiveDsl.g:18308:2: rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4
+            // InternalPerspectiveDsl.g:18504:1: ( rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 )
+            // InternalPerspectiveDsl.g:18505:2: rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__XCatchClause__Group__3__Impl();
 
             state._fsp--;
@@ -59972,22 +60597,22 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__3__Impl"
-    // InternalPerspectiveDsl.g:18315:1: rule__XCatchClause__Group__3__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:18512:1: rule__XCatchClause__Group__3__Impl : ( ')' ) ;
     public final void rule__XCatchClause__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18319:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:18320:1: ( ')' )
+            // InternalPerspectiveDsl.g:18516:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:18517:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:18320:1: ( ')' )
-            // InternalPerspectiveDsl.g:18321:2: ')'
+            // InternalPerspectiveDsl.g:18517:1: ( ')' )
+            // InternalPerspectiveDsl.g:18518:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3()); 
             }
@@ -60013,14 +60638,14 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__4"
-    // InternalPerspectiveDsl.g:18330:1: rule__XCatchClause__Group__4 : rule__XCatchClause__Group__4__Impl ;
+    // InternalPerspectiveDsl.g:18527: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:18334:1: ( rule__XCatchClause__Group__4__Impl )
-            // InternalPerspectiveDsl.g:18335:2: rule__XCatchClause__Group__4__Impl
+            // InternalPerspectiveDsl.g:18531:1: ( rule__XCatchClause__Group__4__Impl )
+            // InternalPerspectiveDsl.g:18532:2: rule__XCatchClause__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__Group__4__Impl();
@@ -60046,23 +60671,23 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__4__Impl"
-    // InternalPerspectiveDsl.g:18341:1: rule__XCatchClause__Group__4__Impl : ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) ;
+    // InternalPerspectiveDsl.g:18538: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:18345:1: ( ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) )
-            // InternalPerspectiveDsl.g:18346:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            // InternalPerspectiveDsl.g:18542:1: ( ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) )
+            // InternalPerspectiveDsl.g:18543:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
             {
-            // InternalPerspectiveDsl.g:18346:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
-            // InternalPerspectiveDsl.g:18347:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            // InternalPerspectiveDsl.g:18543:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            // InternalPerspectiveDsl.g:18544:2: ( rule__XCatchClause__ExpressionAssignment_4 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4()); 
             }
-            // InternalPerspectiveDsl.g:18348:2: ( rule__XCatchClause__ExpressionAssignment_4 )
-            // InternalPerspectiveDsl.g:18348:3: rule__XCatchClause__ExpressionAssignment_4
+            // InternalPerspectiveDsl.g:18545:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            // InternalPerspectiveDsl.g:18545:3: rule__XCatchClause__ExpressionAssignment_4
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__ExpressionAssignment_4();
@@ -60097,16 +60722,16 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__0"
-    // InternalPerspectiveDsl.g:18357:1: rule__QualifiedName__Group__0 : rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 ;
+    // InternalPerspectiveDsl.g:18554: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:18361:1: ( rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 )
-            // InternalPerspectiveDsl.g:18362:2: rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1
+            // InternalPerspectiveDsl.g:18558:1: ( rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 )
+            // InternalPerspectiveDsl.g:18559:2: rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1
             {
-            pushFollow(FOLLOW_129);
+            pushFollow(FOLLOW_131);
             rule__QualifiedName__Group__0__Impl();
 
             state._fsp--;
@@ -60135,17 +60760,17 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__0__Impl"
-    // InternalPerspectiveDsl.g:18369:1: rule__QualifiedName__Group__0__Impl : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:18566:1: rule__QualifiedName__Group__0__Impl : ( ruleValidID ) ;
     public final void rule__QualifiedName__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18373:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:18374:1: ( ruleValidID )
+            // InternalPerspectiveDsl.g:18570:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:18571:1: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:18374:1: ( ruleValidID )
-            // InternalPerspectiveDsl.g:18375:2: ruleValidID
+            // InternalPerspectiveDsl.g:18571:1: ( ruleValidID )
+            // InternalPerspectiveDsl.g:18572:2: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
@@ -60180,14 +60805,14 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__1"
-    // InternalPerspectiveDsl.g:18384:1: rule__QualifiedName__Group__1 : rule__QualifiedName__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:18581: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:18388:1: ( rule__QualifiedName__Group__1__Impl )
-            // InternalPerspectiveDsl.g:18389:2: rule__QualifiedName__Group__1__Impl
+            // InternalPerspectiveDsl.g:18585:1: ( rule__QualifiedName__Group__1__Impl )
+            // InternalPerspectiveDsl.g:18586:2: rule__QualifiedName__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedName__Group__1__Impl();
@@ -60213,22 +60838,22 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__1__Impl"
-    // InternalPerspectiveDsl.g:18395:1: rule__QualifiedName__Group__1__Impl : ( ( rule__QualifiedName__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:18592: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:18399:1: ( ( ( rule__QualifiedName__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:18400:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:18596:1: ( ( ( rule__QualifiedName__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:18597:1: ( ( rule__QualifiedName__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:18400:1: ( ( rule__QualifiedName__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:18401:2: ( rule__QualifiedName__Group_1__0 )*
+            // InternalPerspectiveDsl.g:18597:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:18598:2: ( rule__QualifiedName__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:18402:2: ( rule__QualifiedName__Group_1__0 )*
+            // InternalPerspectiveDsl.g:18599:2: ( rule__QualifiedName__Group_1__0 )*
             loop129:
             do {
                 int alt129=2;
@@ -60240,7 +60865,7 @@
                     if ( (LA129_2==RULE_ID) ) {
                         int LA129_3 = input.LA(3);
 
-                        if ( (synpred185_InternalPerspectiveDsl()) ) {
+                        if ( (synpred187_InternalPerspectiveDsl()) ) {
                             alt129=1;
                         }
 
@@ -60253,9 +60878,9 @@
 
                 switch (alt129) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:18402:3: rule__QualifiedName__Group_1__0
+            	    // InternalPerspectiveDsl.g:18599:3: rule__QualifiedName__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_130);
+            	    pushFollow(FOLLOW_132);
             	    rule__QualifiedName__Group_1__0();
 
             	    state._fsp--;
@@ -60294,14 +60919,14 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__0"
-    // InternalPerspectiveDsl.g:18411:1: rule__QualifiedName__Group_1__0 : rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 ;
+    // InternalPerspectiveDsl.g:18608: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:18415:1: ( rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 )
-            // InternalPerspectiveDsl.g:18416:2: rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1
+            // InternalPerspectiveDsl.g:18612:1: ( rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 )
+            // InternalPerspectiveDsl.g:18613:2: rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1
             {
             pushFollow(FOLLOW_7);
             rule__QualifiedName__Group_1__0__Impl();
@@ -60332,23 +60957,23 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:18423:1: rule__QualifiedName__Group_1__0__Impl : ( ( '.' ) ) ;
+    // InternalPerspectiveDsl.g:18620:1: rule__QualifiedName__Group_1__0__Impl : ( ( '.' ) ) ;
     public final void rule__QualifiedName__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18427:1: ( ( ( '.' ) ) )
-            // InternalPerspectiveDsl.g:18428:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:18624:1: ( ( ( '.' ) ) )
+            // InternalPerspectiveDsl.g:18625:1: ( ( '.' ) )
             {
-            // InternalPerspectiveDsl.g:18428:1: ( ( '.' ) )
-            // InternalPerspectiveDsl.g:18429:2: ( '.' )
+            // InternalPerspectiveDsl.g:18625:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:18626:2: ( '.' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
             }
-            // InternalPerspectiveDsl.g:18430:2: ( '.' )
-            // InternalPerspectiveDsl.g:18430:3: '.'
+            // InternalPerspectiveDsl.g:18627:2: ( '.' )
+            // InternalPerspectiveDsl.g:18627:3: '.'
             {
             match(input,43,FOLLOW_2); if (state.failed) return ;
 
@@ -60379,14 +61004,14 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__1"
-    // InternalPerspectiveDsl.g:18438:1: rule__QualifiedName__Group_1__1 : rule__QualifiedName__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:18635: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:18442:1: ( rule__QualifiedName__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:18443:2: rule__QualifiedName__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:18639:1: ( rule__QualifiedName__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:18640:2: rule__QualifiedName__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedName__Group_1__1__Impl();
@@ -60412,17 +61037,17 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:18449:1: rule__QualifiedName__Group_1__1__Impl : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:18646: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:18453:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:18454:1: ( ruleValidID )
+            // InternalPerspectiveDsl.g:18650:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:18651:1: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:18454:1: ( ruleValidID )
-            // InternalPerspectiveDsl.g:18455:2: ruleValidID
+            // InternalPerspectiveDsl.g:18651:1: ( ruleValidID )
+            // InternalPerspectiveDsl.g:18652:2: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
@@ -60457,16 +61082,16 @@
 
 
     // $ANTLR start "rule__Number__Group_1__0"
-    // InternalPerspectiveDsl.g:18465:1: rule__Number__Group_1__0 : rule__Number__Group_1__0__Impl rule__Number__Group_1__1 ;
+    // InternalPerspectiveDsl.g:18662: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:18469:1: ( rule__Number__Group_1__0__Impl rule__Number__Group_1__1 )
-            // InternalPerspectiveDsl.g:18470:2: rule__Number__Group_1__0__Impl rule__Number__Group_1__1
+            // InternalPerspectiveDsl.g:18666:1: ( rule__Number__Group_1__0__Impl rule__Number__Group_1__1 )
+            // InternalPerspectiveDsl.g:18667:2: rule__Number__Group_1__0__Impl rule__Number__Group_1__1
             {
-            pushFollow(FOLLOW_129);
+            pushFollow(FOLLOW_131);
             rule__Number__Group_1__0__Impl();
 
             state._fsp--;
@@ -60495,23 +61120,23 @@
 
 
     // $ANTLR start "rule__Number__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:18477:1: rule__Number__Group_1__0__Impl : ( ( rule__Number__Alternatives_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:18674: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:18481:1: ( ( ( rule__Number__Alternatives_1_0 ) ) )
-            // InternalPerspectiveDsl.g:18482:1: ( ( rule__Number__Alternatives_1_0 ) )
+            // InternalPerspectiveDsl.g:18678:1: ( ( ( rule__Number__Alternatives_1_0 ) ) )
+            // InternalPerspectiveDsl.g:18679:1: ( ( rule__Number__Alternatives_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:18482:1: ( ( rule__Number__Alternatives_1_0 ) )
-            // InternalPerspectiveDsl.g:18483:2: ( rule__Number__Alternatives_1_0 )
+            // InternalPerspectiveDsl.g:18679:1: ( ( rule__Number__Alternatives_1_0 ) )
+            // InternalPerspectiveDsl.g:18680:2: ( rule__Number__Alternatives_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getAlternatives_1_0()); 
             }
-            // InternalPerspectiveDsl.g:18484:2: ( rule__Number__Alternatives_1_0 )
-            // InternalPerspectiveDsl.g:18484:3: rule__Number__Alternatives_1_0
+            // InternalPerspectiveDsl.g:18681:2: ( rule__Number__Alternatives_1_0 )
+            // InternalPerspectiveDsl.g:18681:3: rule__Number__Alternatives_1_0
             {
             pushFollow(FOLLOW_2);
             rule__Number__Alternatives_1_0();
@@ -60546,14 +61171,14 @@
 
 
     // $ANTLR start "rule__Number__Group_1__1"
-    // InternalPerspectiveDsl.g:18492:1: rule__Number__Group_1__1 : rule__Number__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:18689: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:18496:1: ( rule__Number__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:18497:2: rule__Number__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:18693:1: ( rule__Number__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:18694:2: rule__Number__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Number__Group_1__1__Impl();
@@ -60579,22 +61204,22 @@
 
 
     // $ANTLR start "rule__Number__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:18503:1: rule__Number__Group_1__1__Impl : ( ( rule__Number__Group_1_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:18700: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:18507:1: ( ( ( rule__Number__Group_1_1__0 )? ) )
-            // InternalPerspectiveDsl.g:18508:1: ( ( rule__Number__Group_1_1__0 )? )
+            // InternalPerspectiveDsl.g:18704:1: ( ( ( rule__Number__Group_1_1__0 )? ) )
+            // InternalPerspectiveDsl.g:18705:1: ( ( rule__Number__Group_1_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:18508:1: ( ( rule__Number__Group_1_1__0 )? )
-            // InternalPerspectiveDsl.g:18509:2: ( rule__Number__Group_1_1__0 )?
+            // InternalPerspectiveDsl.g:18705:1: ( ( rule__Number__Group_1_1__0 )? )
+            // InternalPerspectiveDsl.g:18706:2: ( rule__Number__Group_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getGroup_1_1()); 
             }
-            // InternalPerspectiveDsl.g:18510:2: ( rule__Number__Group_1_1__0 )?
+            // InternalPerspectiveDsl.g:18707:2: ( rule__Number__Group_1_1__0 )?
             int alt130=2;
             int LA130_0 = input.LA(1);
 
@@ -60607,7 +61232,7 @@
             }
             switch (alt130) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:18510:3: rule__Number__Group_1_1__0
+                    // InternalPerspectiveDsl.g:18707:3: rule__Number__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Number__Group_1_1__0();
@@ -60645,16 +61270,16 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__0"
-    // InternalPerspectiveDsl.g:18519:1: rule__Number__Group_1_1__0 : rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 ;
+    // InternalPerspectiveDsl.g:18716: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:18523:1: ( rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 )
-            // InternalPerspectiveDsl.g:18524:2: rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1
+            // InternalPerspectiveDsl.g:18720:1: ( rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 )
+            // InternalPerspectiveDsl.g:18721:2: rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1
             {
-            pushFollow(FOLLOW_131);
+            pushFollow(FOLLOW_133);
             rule__Number__Group_1_1__0__Impl();
 
             state._fsp--;
@@ -60683,17 +61308,17 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:18531:1: rule__Number__Group_1_1__0__Impl : ( '.' ) ;
+    // InternalPerspectiveDsl.g:18728: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:18535:1: ( ( '.' ) )
-            // InternalPerspectiveDsl.g:18536:1: ( '.' )
+            // InternalPerspectiveDsl.g:18732:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:18733:1: ( '.' )
             {
-            // InternalPerspectiveDsl.g:18536:1: ( '.' )
-            // InternalPerspectiveDsl.g:18537:2: '.'
+            // InternalPerspectiveDsl.g:18733:1: ( '.' )
+            // InternalPerspectiveDsl.g:18734:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); 
@@ -60724,14 +61349,14 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__1"
-    // InternalPerspectiveDsl.g:18546:1: rule__Number__Group_1_1__1 : rule__Number__Group_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:18743: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:18550:1: ( rule__Number__Group_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:18551:2: rule__Number__Group_1_1__1__Impl
+            // InternalPerspectiveDsl.g:18747:1: ( rule__Number__Group_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:18748:2: rule__Number__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Number__Group_1_1__1__Impl();
@@ -60757,23 +61382,23 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:18557:1: rule__Number__Group_1_1__1__Impl : ( ( rule__Number__Alternatives_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:18754: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:18561:1: ( ( ( rule__Number__Alternatives_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:18562:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            // InternalPerspectiveDsl.g:18758:1: ( ( ( rule__Number__Alternatives_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:18759:1: ( ( rule__Number__Alternatives_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:18562:1: ( ( rule__Number__Alternatives_1_1_1 ) )
-            // InternalPerspectiveDsl.g:18563:2: ( rule__Number__Alternatives_1_1_1 )
+            // InternalPerspectiveDsl.g:18759:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            // InternalPerspectiveDsl.g:18760:2: ( rule__Number__Alternatives_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getAlternatives_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:18564:2: ( rule__Number__Alternatives_1_1_1 )
-            // InternalPerspectiveDsl.g:18564:3: rule__Number__Alternatives_1_1_1
+            // InternalPerspectiveDsl.g:18761:2: ( rule__Number__Alternatives_1_1_1 )
+            // InternalPerspectiveDsl.g:18761:3: rule__Number__Alternatives_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__Number__Alternatives_1_1_1();
@@ -60808,16 +61433,16 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__0"
-    // InternalPerspectiveDsl.g:18573:1: rule__JvmTypeReference__Group_0__0 : rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 ;
+    // InternalPerspectiveDsl.g:18770: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:18577:1: ( rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 )
-            // InternalPerspectiveDsl.g:18578:2: rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1
+            // InternalPerspectiveDsl.g:18774:1: ( rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 )
+            // InternalPerspectiveDsl.g:18775:2: rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1
             {
-            pushFollow(FOLLOW_56);
+            pushFollow(FOLLOW_58);
             rule__JvmTypeReference__Group_0__0__Impl();
 
             state._fsp--;
@@ -60846,17 +61471,17 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:18585:1: rule__JvmTypeReference__Group_0__0__Impl : ( ruleJvmParameterizedTypeReference ) ;
+    // InternalPerspectiveDsl.g:18782: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:18589:1: ( ( ruleJvmParameterizedTypeReference ) )
-            // InternalPerspectiveDsl.g:18590:1: ( ruleJvmParameterizedTypeReference )
+            // InternalPerspectiveDsl.g:18786:1: ( ( ruleJvmParameterizedTypeReference ) )
+            // InternalPerspectiveDsl.g:18787:1: ( ruleJvmParameterizedTypeReference )
             {
-            // InternalPerspectiveDsl.g:18590:1: ( ruleJvmParameterizedTypeReference )
-            // InternalPerspectiveDsl.g:18591:2: ruleJvmParameterizedTypeReference
+            // InternalPerspectiveDsl.g:18787:1: ( ruleJvmParameterizedTypeReference )
+            // InternalPerspectiveDsl.g:18788:2: ruleJvmParameterizedTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); 
@@ -60891,14 +61516,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__1"
-    // InternalPerspectiveDsl.g:18600:1: rule__JvmTypeReference__Group_0__1 : rule__JvmTypeReference__Group_0__1__Impl ;
+    // InternalPerspectiveDsl.g:18797: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:18604:1: ( rule__JvmTypeReference__Group_0__1__Impl )
-            // InternalPerspectiveDsl.g:18605:2: rule__JvmTypeReference__Group_0__1__Impl
+            // InternalPerspectiveDsl.g:18801:1: ( rule__JvmTypeReference__Group_0__1__Impl )
+            // InternalPerspectiveDsl.g:18802:2: rule__JvmTypeReference__Group_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0__1__Impl();
@@ -60924,34 +61549,34 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__1__Impl"
-    // InternalPerspectiveDsl.g:18611:1: rule__JvmTypeReference__Group_0__1__Impl : ( ( rule__JvmTypeReference__Group_0_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:18808: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:18615:1: ( ( ( rule__JvmTypeReference__Group_0_1__0 )* ) )
-            // InternalPerspectiveDsl.g:18616:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            // InternalPerspectiveDsl.g:18812:1: ( ( ( rule__JvmTypeReference__Group_0_1__0 )* ) )
+            // InternalPerspectiveDsl.g:18813:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:18616:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
-            // InternalPerspectiveDsl.g:18617:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            // InternalPerspectiveDsl.g:18813:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            // InternalPerspectiveDsl.g:18814:2: ( rule__JvmTypeReference__Group_0_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1()); 
             }
-            // InternalPerspectiveDsl.g:18618:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            // InternalPerspectiveDsl.g:18815:2: ( rule__JvmTypeReference__Group_0_1__0 )*
             loop131:
             do {
                 int alt131=2;
                 int LA131_0 = input.LA(1);
 
-                if ( (LA131_0==94) ) {
+                if ( (LA131_0==96) ) {
                     int LA131_2 = input.LA(2);
 
-                    if ( (LA131_2==92) ) {
+                    if ( (LA131_2==94) ) {
                         int LA131_3 = input.LA(3);
 
-                        if ( (synpred187_InternalPerspectiveDsl()) ) {
+                        if ( (synpred189_InternalPerspectiveDsl()) ) {
                             alt131=1;
                         }
 
@@ -60964,9 +61589,9 @@
 
                 switch (alt131) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:18618:3: rule__JvmTypeReference__Group_0_1__0
+            	    // InternalPerspectiveDsl.g:18815:3: rule__JvmTypeReference__Group_0_1__0
             	    {
-            	    pushFollow(FOLLOW_121);
+            	    pushFollow(FOLLOW_123);
             	    rule__JvmTypeReference__Group_0_1__0();
 
             	    state._fsp--;
@@ -61005,14 +61630,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1__0"
-    // InternalPerspectiveDsl.g:18627:1: rule__JvmTypeReference__Group_0_1__0 : rule__JvmTypeReference__Group_0_1__0__Impl ;
+    // InternalPerspectiveDsl.g:18824: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:18631:1: ( rule__JvmTypeReference__Group_0_1__0__Impl )
-            // InternalPerspectiveDsl.g:18632:2: rule__JvmTypeReference__Group_0_1__0__Impl
+            // InternalPerspectiveDsl.g:18828:1: ( rule__JvmTypeReference__Group_0_1__0__Impl )
+            // InternalPerspectiveDsl.g:18829:2: rule__JvmTypeReference__Group_0_1__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0_1__0__Impl();
@@ -61038,23 +61663,23 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:18638:1: rule__JvmTypeReference__Group_0_1__0__Impl : ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:18835: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:18642:1: ( ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:18643:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            // InternalPerspectiveDsl.g:18839:1: ( ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:18840:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:18643:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
-            // InternalPerspectiveDsl.g:18644:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            // InternalPerspectiveDsl.g:18840:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            // InternalPerspectiveDsl.g:18841:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:18645:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
-            // InternalPerspectiveDsl.g:18645:3: rule__JvmTypeReference__Group_0_1_0__0
+            // InternalPerspectiveDsl.g:18842:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            // InternalPerspectiveDsl.g:18842:3: rule__JvmTypeReference__Group_0_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0_1_0__0();
@@ -61089,16 +61714,16 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__0"
-    // InternalPerspectiveDsl.g:18654: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:18851: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:18658:1: ( rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 )
-            // InternalPerspectiveDsl.g:18659:2: rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1
+            // InternalPerspectiveDsl.g:18855:1: ( rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 )
+            // InternalPerspectiveDsl.g:18856:2: rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1
             {
-            pushFollow(FOLLOW_56);
+            pushFollow(FOLLOW_58);
             rule__JvmTypeReference__Group_0_1_0__0__Impl();
 
             state._fsp--;
@@ -61127,23 +61752,23 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:18666:1: rule__JvmTypeReference__Group_0_1_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:18863: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:18670:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:18671:1: ( () )
+            // InternalPerspectiveDsl.g:18867:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:18868:1: ( () )
             {
-            // InternalPerspectiveDsl.g:18671:1: ( () )
-            // InternalPerspectiveDsl.g:18672:2: ()
+            // InternalPerspectiveDsl.g:18868:1: ( () )
+            // InternalPerspectiveDsl.g:18869:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:18673:2: ()
-            // InternalPerspectiveDsl.g:18673:3: 
+            // InternalPerspectiveDsl.g:18870:2: ()
+            // InternalPerspectiveDsl.g:18870:3: 
             {
             }
 
@@ -61168,14 +61793,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__1"
-    // InternalPerspectiveDsl.g:18681:1: rule__JvmTypeReference__Group_0_1_0__1 : rule__JvmTypeReference__Group_0_1_0__1__Impl ;
+    // InternalPerspectiveDsl.g:18878: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:18685:1: ( rule__JvmTypeReference__Group_0_1_0__1__Impl )
-            // InternalPerspectiveDsl.g:18686:2: rule__JvmTypeReference__Group_0_1_0__1__Impl
+            // InternalPerspectiveDsl.g:18882:1: ( rule__JvmTypeReference__Group_0_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:18883:2: rule__JvmTypeReference__Group_0_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0_1_0__1__Impl();
@@ -61201,17 +61826,17 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__1__Impl"
-    // InternalPerspectiveDsl.g:18692:1: rule__JvmTypeReference__Group_0_1_0__1__Impl : ( ruleArrayBrackets ) ;
+    // InternalPerspectiveDsl.g:18889: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:18696:1: ( ( ruleArrayBrackets ) )
-            // InternalPerspectiveDsl.g:18697:1: ( ruleArrayBrackets )
+            // InternalPerspectiveDsl.g:18893:1: ( ( ruleArrayBrackets ) )
+            // InternalPerspectiveDsl.g:18894:1: ( ruleArrayBrackets )
             {
-            // InternalPerspectiveDsl.g:18697:1: ( ruleArrayBrackets )
-            // InternalPerspectiveDsl.g:18698:2: ruleArrayBrackets
+            // InternalPerspectiveDsl.g:18894:1: ( ruleArrayBrackets )
+            // InternalPerspectiveDsl.g:18895:2: ruleArrayBrackets
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1()); 
@@ -61246,16 +61871,16 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__0"
-    // InternalPerspectiveDsl.g:18708:1: rule__ArrayBrackets__Group__0 : rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 ;
+    // InternalPerspectiveDsl.g:18905: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:18712:1: ( rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 )
-            // InternalPerspectiveDsl.g:18713:2: rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1
+            // InternalPerspectiveDsl.g:18909:1: ( rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 )
+            // InternalPerspectiveDsl.g:18910:2: rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1
             {
-            pushFollow(FOLLOW_94);
+            pushFollow(FOLLOW_96);
             rule__ArrayBrackets__Group__0__Impl();
 
             state._fsp--;
@@ -61284,22 +61909,22 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__0__Impl"
-    // InternalPerspectiveDsl.g:18720:1: rule__ArrayBrackets__Group__0__Impl : ( '[' ) ;
+    // InternalPerspectiveDsl.g:18917:1: rule__ArrayBrackets__Group__0__Impl : ( '[' ) ;
     public final void rule__ArrayBrackets__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18724:1: ( ( '[' ) )
-            // InternalPerspectiveDsl.g:18725:1: ( '[' )
+            // InternalPerspectiveDsl.g:18921:1: ( ( '[' ) )
+            // InternalPerspectiveDsl.g:18922:1: ( '[' )
             {
-            // InternalPerspectiveDsl.g:18725:1: ( '[' )
-            // InternalPerspectiveDsl.g:18726:2: '['
+            // InternalPerspectiveDsl.g:18922:1: ( '[' )
+            // InternalPerspectiveDsl.g:18923:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
             }
-            match(input,94,FOLLOW_2); if (state.failed) return ;
+            match(input,96,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
             }
@@ -61325,14 +61950,14 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__1"
-    // InternalPerspectiveDsl.g:18735:1: rule__ArrayBrackets__Group__1 : rule__ArrayBrackets__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:18932: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:18739:1: ( rule__ArrayBrackets__Group__1__Impl )
-            // InternalPerspectiveDsl.g:18740:2: rule__ArrayBrackets__Group__1__Impl
+            // InternalPerspectiveDsl.g:18936:1: ( rule__ArrayBrackets__Group__1__Impl )
+            // InternalPerspectiveDsl.g:18937:2: rule__ArrayBrackets__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ArrayBrackets__Group__1__Impl();
@@ -61358,22 +61983,22 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__1__Impl"
-    // InternalPerspectiveDsl.g:18746:1: rule__ArrayBrackets__Group__1__Impl : ( ']' ) ;
+    // InternalPerspectiveDsl.g:18943:1: rule__ArrayBrackets__Group__1__Impl : ( ']' ) ;
     public final void rule__ArrayBrackets__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18750:1: ( ( ']' ) )
-            // InternalPerspectiveDsl.g:18751:1: ( ']' )
+            // InternalPerspectiveDsl.g:18947:1: ( ( ']' ) )
+            // InternalPerspectiveDsl.g:18948:1: ( ']' )
             {
-            // InternalPerspectiveDsl.g:18751:1: ( ']' )
-            // InternalPerspectiveDsl.g:18752:2: ']'
+            // InternalPerspectiveDsl.g:18948:1: ( ']' )
+            // InternalPerspectiveDsl.g:18949:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_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.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
             }
@@ -61399,16 +62024,16 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__0"
-    // InternalPerspectiveDsl.g:18762:1: rule__XFunctionTypeRef__Group__0 : rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 ;
+    // InternalPerspectiveDsl.g:18959: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:18766:1: ( rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 )
-            // InternalPerspectiveDsl.g:18767:2: rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1
+            // InternalPerspectiveDsl.g:18963:1: ( rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 )
+            // InternalPerspectiveDsl.g:18964:2: rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__XFunctionTypeRef__Group__0__Impl();
 
             state._fsp--;
@@ -61437,31 +62062,31 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__0__Impl"
-    // InternalPerspectiveDsl.g:18774:1: rule__XFunctionTypeRef__Group__0__Impl : ( ( rule__XFunctionTypeRef__Group_0__0 )? ) ;
+    // InternalPerspectiveDsl.g:18971: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:18778:1: ( ( ( rule__XFunctionTypeRef__Group_0__0 )? ) )
-            // InternalPerspectiveDsl.g:18779:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            // InternalPerspectiveDsl.g:18975:1: ( ( ( rule__XFunctionTypeRef__Group_0__0 )? ) )
+            // InternalPerspectiveDsl.g:18976:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
             {
-            // InternalPerspectiveDsl.g:18779:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
-            // InternalPerspectiveDsl.g:18780:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            // InternalPerspectiveDsl.g:18976:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            // InternalPerspectiveDsl.g:18977:2: ( rule__XFunctionTypeRef__Group_0__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0()); 
             }
-            // InternalPerspectiveDsl.g:18781:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            // InternalPerspectiveDsl.g:18978:2: ( rule__XFunctionTypeRef__Group_0__0 )?
             int alt132=2;
             int LA132_0 = input.LA(1);
 
-            if ( (LA132_0==89) ) {
+            if ( (LA132_0==91) ) {
                 alt132=1;
             }
             switch (alt132) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:18781:3: rule__XFunctionTypeRef__Group_0__0
+                    // InternalPerspectiveDsl.g:18978:3: rule__XFunctionTypeRef__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFunctionTypeRef__Group_0__0();
@@ -61499,16 +62124,16 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__1"
-    // InternalPerspectiveDsl.g:18789:1: rule__XFunctionTypeRef__Group__1 : rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 ;
+    // InternalPerspectiveDsl.g:18986: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:18793:1: ( rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 )
-            // InternalPerspectiveDsl.g:18794:2: rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2
+            // InternalPerspectiveDsl.g:18990:1: ( rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 )
+            // InternalPerspectiveDsl.g:18991:2: rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__XFunctionTypeRef__Group__1__Impl();
 
             state._fsp--;
@@ -61537,17 +62162,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__1__Impl"
-    // InternalPerspectiveDsl.g:18801:1: rule__XFunctionTypeRef__Group__1__Impl : ( '=>' ) ;
+    // InternalPerspectiveDsl.g:18998:1: rule__XFunctionTypeRef__Group__1__Impl : ( '=>' ) ;
     public final void rule__XFunctionTypeRef__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18805:1: ( ( '=>' ) )
-            // InternalPerspectiveDsl.g:18806:1: ( '=>' )
+            // InternalPerspectiveDsl.g:19002:1: ( ( '=>' ) )
+            // InternalPerspectiveDsl.g:19003:1: ( '=>' )
             {
-            // InternalPerspectiveDsl.g:18806:1: ( '=>' )
-            // InternalPerspectiveDsl.g:18807:2: '=>'
+            // InternalPerspectiveDsl.g:19003:1: ( '=>' )
+            // InternalPerspectiveDsl.g:19004:2: '=>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1()); 
@@ -61578,14 +62203,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__2"
-    // InternalPerspectiveDsl.g:18816:1: rule__XFunctionTypeRef__Group__2 : rule__XFunctionTypeRef__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:19013: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:18820:1: ( rule__XFunctionTypeRef__Group__2__Impl )
-            // InternalPerspectiveDsl.g:18821:2: rule__XFunctionTypeRef__Group__2__Impl
+            // InternalPerspectiveDsl.g:19017:1: ( rule__XFunctionTypeRef__Group__2__Impl )
+            // InternalPerspectiveDsl.g:19018:2: rule__XFunctionTypeRef__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group__2__Impl();
@@ -61611,23 +62236,23 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__2__Impl"
-    // InternalPerspectiveDsl.g:18827:1: rule__XFunctionTypeRef__Group__2__Impl : ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:19024: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:18831:1: ( ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:18832:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            // InternalPerspectiveDsl.g:19028:1: ( ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:19029:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:18832:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
-            // InternalPerspectiveDsl.g:18833:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            // InternalPerspectiveDsl.g:19029:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            // InternalPerspectiveDsl.g:19030:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:18834:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
-            // InternalPerspectiveDsl.g:18834:3: rule__XFunctionTypeRef__ReturnTypeAssignment_2
+            // InternalPerspectiveDsl.g:19031:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            // InternalPerspectiveDsl.g:19031:3: rule__XFunctionTypeRef__ReturnTypeAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__ReturnTypeAssignment_2();
@@ -61662,16 +62287,16 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__0"
-    // InternalPerspectiveDsl.g:18843:1: rule__XFunctionTypeRef__Group_0__0 : rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 ;
+    // InternalPerspectiveDsl.g:19040: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:18847:1: ( rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 )
-            // InternalPerspectiveDsl.g:18848:2: rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1
+            // InternalPerspectiveDsl.g:19044:1: ( rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 )
+            // InternalPerspectiveDsl.g:19045:2: rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1
             {
-            pushFollow(FOLLOW_132);
+            pushFollow(FOLLOW_134);
             rule__XFunctionTypeRef__Group_0__0__Impl();
 
             state._fsp--;
@@ -61700,22 +62325,22 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:18855:1: rule__XFunctionTypeRef__Group_0__0__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:19052:1: rule__XFunctionTypeRef__Group_0__0__Impl : ( '(' ) ;
     public final void rule__XFunctionTypeRef__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18859:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:18860:1: ( '(' )
+            // InternalPerspectiveDsl.g:19056:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:19057:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:18860:1: ( '(' )
-            // InternalPerspectiveDsl.g:18861:2: '('
+            // InternalPerspectiveDsl.g:19057:1: ( '(' )
+            // InternalPerspectiveDsl.g:19058:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()); 
             }
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()); 
             }
@@ -61741,16 +62366,16 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__1"
-    // InternalPerspectiveDsl.g:18870:1: rule__XFunctionTypeRef__Group_0__1 : rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 ;
+    // InternalPerspectiveDsl.g:19067: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:18874:1: ( rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 )
-            // InternalPerspectiveDsl.g:18875:2: rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2
+            // InternalPerspectiveDsl.g:19071:1: ( rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 )
+            // InternalPerspectiveDsl.g:19072:2: rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2
             {
-            pushFollow(FOLLOW_132);
+            pushFollow(FOLLOW_134);
             rule__XFunctionTypeRef__Group_0__1__Impl();
 
             state._fsp--;
@@ -61779,31 +62404,31 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__1__Impl"
-    // InternalPerspectiveDsl.g:18882:1: rule__XFunctionTypeRef__Group_0__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:19079: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:18886:1: ( ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) )
-            // InternalPerspectiveDsl.g:18887:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            // InternalPerspectiveDsl.g:19083:1: ( ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) )
+            // InternalPerspectiveDsl.g:19084:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:18887:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
-            // InternalPerspectiveDsl.g:18888:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            // InternalPerspectiveDsl.g:19084:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            // InternalPerspectiveDsl.g:19085:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1()); 
             }
-            // InternalPerspectiveDsl.g:18889:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            // InternalPerspectiveDsl.g:19086:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
             int alt133=2;
             int LA133_0 = input.LA(1);
 
-            if ( (LA133_0==RULE_ID||LA133_0==31||LA133_0==89) ) {
+            if ( (LA133_0==RULE_ID||LA133_0==31||LA133_0==91) ) {
                 alt133=1;
             }
             switch (alt133) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:18889:3: rule__XFunctionTypeRef__Group_0_1__0
+                    // InternalPerspectiveDsl.g:19086:3: rule__XFunctionTypeRef__Group_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFunctionTypeRef__Group_0_1__0();
@@ -61841,14 +62466,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__2"
-    // InternalPerspectiveDsl.g:18897:1: rule__XFunctionTypeRef__Group_0__2 : rule__XFunctionTypeRef__Group_0__2__Impl ;
+    // InternalPerspectiveDsl.g:19094: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:18901:1: ( rule__XFunctionTypeRef__Group_0__2__Impl )
-            // InternalPerspectiveDsl.g:18902:2: rule__XFunctionTypeRef__Group_0__2__Impl
+            // InternalPerspectiveDsl.g:19098:1: ( rule__XFunctionTypeRef__Group_0__2__Impl )
+            // InternalPerspectiveDsl.g:19099:2: rule__XFunctionTypeRef__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group_0__2__Impl();
@@ -61874,22 +62499,22 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__2__Impl"
-    // InternalPerspectiveDsl.g:18908:1: rule__XFunctionTypeRef__Group_0__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:19105:1: rule__XFunctionTypeRef__Group_0__2__Impl : ( ')' ) ;
     public final void rule__XFunctionTypeRef__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18912:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:18913:1: ( ')' )
+            // InternalPerspectiveDsl.g:19109:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:19110:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:18913:1: ( ')' )
-            // InternalPerspectiveDsl.g:18914:2: ')'
+            // InternalPerspectiveDsl.g:19110:1: ( ')' )
+            // InternalPerspectiveDsl.g:19111:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()); 
             }
@@ -61915,16 +62540,16 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__0"
-    // InternalPerspectiveDsl.g:18924:1: rule__XFunctionTypeRef__Group_0_1__0 : rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 ;
+    // InternalPerspectiveDsl.g:19121: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:18928:1: ( rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 )
-            // InternalPerspectiveDsl.g:18929:2: rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1
+            // InternalPerspectiveDsl.g:19125:1: ( rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 )
+            // InternalPerspectiveDsl.g:19126:2: rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__XFunctionTypeRef__Group_0_1__0__Impl();
 
             state._fsp--;
@@ -61953,23 +62578,23 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:18936:1: rule__XFunctionTypeRef__Group_0_1__0__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:19133: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:18940:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) )
-            // InternalPerspectiveDsl.g:18941:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            // InternalPerspectiveDsl.g:19137:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) )
+            // InternalPerspectiveDsl.g:19138:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:18941:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
-            // InternalPerspectiveDsl.g:18942:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            // InternalPerspectiveDsl.g:19138:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            // InternalPerspectiveDsl.g:19139:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:18943:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
-            // InternalPerspectiveDsl.g:18943:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0
+            // InternalPerspectiveDsl.g:19140:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            // InternalPerspectiveDsl.g:19140:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0();
@@ -62004,14 +62629,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__1"
-    // InternalPerspectiveDsl.g:18951:1: rule__XFunctionTypeRef__Group_0_1__1 : rule__XFunctionTypeRef__Group_0_1__1__Impl ;
+    // InternalPerspectiveDsl.g:19148: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:18955:1: ( rule__XFunctionTypeRef__Group_0_1__1__Impl )
-            // InternalPerspectiveDsl.g:18956:2: rule__XFunctionTypeRef__Group_0_1__1__Impl
+            // InternalPerspectiveDsl.g:19152:1: ( rule__XFunctionTypeRef__Group_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:19153:2: rule__XFunctionTypeRef__Group_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group_0_1__1__Impl();
@@ -62037,37 +62662,37 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__1__Impl"
-    // InternalPerspectiveDsl.g:18962:1: rule__XFunctionTypeRef__Group_0_1__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:19159: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:18966:1: ( ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:18967:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:19163:1: ( ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:19164:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:18967:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
-            // InternalPerspectiveDsl.g:18968:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:19164:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:19165:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1()); 
             }
-            // InternalPerspectiveDsl.g:18969:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:19166:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
             loop134:
             do {
                 int alt134=2;
                 int LA134_0 = input.LA(1);
 
-                if ( (LA134_0==91) ) {
+                if ( (LA134_0==93) ) {
                     alt134=1;
                 }
 
 
                 switch (alt134) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:18969:3: rule__XFunctionTypeRef__Group_0_1_1__0
+            	    // InternalPerspectiveDsl.g:19166:3: rule__XFunctionTypeRef__Group_0_1_1__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__XFunctionTypeRef__Group_0_1_1__0();
 
             	    state._fsp--;
@@ -62106,16 +62731,16 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__0"
-    // InternalPerspectiveDsl.g:18978: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:19175: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:18982:1: ( rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 )
-            // InternalPerspectiveDsl.g:18983:2: rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1
+            // InternalPerspectiveDsl.g:19179:1: ( rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 )
+            // InternalPerspectiveDsl.g:19180:2: rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__XFunctionTypeRef__Group_0_1_1__0__Impl();
 
             state._fsp--;
@@ -62144,22 +62769,22 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:18990:1: rule__XFunctionTypeRef__Group_0_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:19187: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:18994:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:18995:1: ( ',' )
+            // InternalPerspectiveDsl.g:19191:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:19192:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:18995:1: ( ',' )
-            // InternalPerspectiveDsl.g:18996:2: ','
+            // InternalPerspectiveDsl.g:19192:1: ( ',' )
+            // InternalPerspectiveDsl.g:19193:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0()); 
             }
@@ -62185,14 +62810,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__1"
-    // InternalPerspectiveDsl.g:19005:1: rule__XFunctionTypeRef__Group_0_1_1__1 : rule__XFunctionTypeRef__Group_0_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:19202: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:19009:1: ( rule__XFunctionTypeRef__Group_0_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:19010:2: rule__XFunctionTypeRef__Group_0_1_1__1__Impl
+            // InternalPerspectiveDsl.g:19206:1: ( rule__XFunctionTypeRef__Group_0_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:19207:2: rule__XFunctionTypeRef__Group_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group_0_1_1__1__Impl();
@@ -62218,23 +62843,23 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:19016:1: rule__XFunctionTypeRef__Group_0_1_1__1__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:19213: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:19020:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:19021:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:19217:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:19218:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:19021:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
-            // InternalPerspectiveDsl.g:19022:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            // InternalPerspectiveDsl.g:19218:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:19219:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:19023:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
-            // InternalPerspectiveDsl.g:19023:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1
+            // InternalPerspectiveDsl.g:19220:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            // InternalPerspectiveDsl.g:19220:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1();
@@ -62269,16 +62894,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__0"
-    // InternalPerspectiveDsl.g:19032:1: rule__JvmParameterizedTypeReference__Group__0 : rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 ;
+    // InternalPerspectiveDsl.g:19229: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:19036:1: ( rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 )
-            // InternalPerspectiveDsl.g:19037:2: rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1
+            // InternalPerspectiveDsl.g:19233:1: ( rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 )
+            // InternalPerspectiveDsl.g:19234:2: rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1
             {
-            pushFollow(FOLLOW_59);
+            pushFollow(FOLLOW_61);
             rule__JvmParameterizedTypeReference__Group__0__Impl();
 
             state._fsp--;
@@ -62307,23 +62932,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__0__Impl"
-    // InternalPerspectiveDsl.g:19044:1: rule__JvmParameterizedTypeReference__Group__0__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) ;
+    // InternalPerspectiveDsl.g:19241: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:19048:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) )
-            // InternalPerspectiveDsl.g:19049:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            // InternalPerspectiveDsl.g:19245:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) )
+            // InternalPerspectiveDsl.g:19246:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
             {
-            // InternalPerspectiveDsl.g:19049:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
-            // InternalPerspectiveDsl.g:19050:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            // InternalPerspectiveDsl.g:19246:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            // InternalPerspectiveDsl.g:19247:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0()); 
             }
-            // InternalPerspectiveDsl.g:19051:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
-            // InternalPerspectiveDsl.g:19051:3: rule__JvmParameterizedTypeReference__TypeAssignment_0
+            // InternalPerspectiveDsl.g:19248:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            // InternalPerspectiveDsl.g:19248:3: rule__JvmParameterizedTypeReference__TypeAssignment_0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__TypeAssignment_0();
@@ -62358,14 +62983,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__1"
-    // InternalPerspectiveDsl.g:19059:1: rule__JvmParameterizedTypeReference__Group__1 : rule__JvmParameterizedTypeReference__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:19256: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:19063:1: ( rule__JvmParameterizedTypeReference__Group__1__Impl )
-            // InternalPerspectiveDsl.g:19064:2: rule__JvmParameterizedTypeReference__Group__1__Impl
+            // InternalPerspectiveDsl.g:19260:1: ( rule__JvmParameterizedTypeReference__Group__1__Impl )
+            // InternalPerspectiveDsl.g:19261:2: rule__JvmParameterizedTypeReference__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group__1__Impl();
@@ -62391,27 +63016,27 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__1__Impl"
-    // InternalPerspectiveDsl.g:19070:1: rule__JvmParameterizedTypeReference__Group__1__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:19267: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:19074:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) )
-            // InternalPerspectiveDsl.g:19075:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:19271:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) )
+            // InternalPerspectiveDsl.g:19272:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:19075:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
-            // InternalPerspectiveDsl.g:19076:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            // InternalPerspectiveDsl.g:19272:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:19273:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:19077:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            // InternalPerspectiveDsl.g:19274:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
             int alt135=2;
             alt135 = dfa135.predict(input);
             switch (alt135) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:19077:3: rule__JvmParameterizedTypeReference__Group_1__0
+                    // InternalPerspectiveDsl.g:19274:3: rule__JvmParameterizedTypeReference__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmParameterizedTypeReference__Group_1__0();
@@ -62449,16 +63074,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__0"
-    // InternalPerspectiveDsl.g:19086:1: rule__JvmParameterizedTypeReference__Group_1__0 : rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 ;
+    // InternalPerspectiveDsl.g:19283: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:19090:1: ( rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 )
-            // InternalPerspectiveDsl.g:19091:2: rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1
+            // InternalPerspectiveDsl.g:19287:1: ( rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 )
+            // InternalPerspectiveDsl.g:19288:2: rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1
             {
-            pushFollow(FOLLOW_89);
+            pushFollow(FOLLOW_91);
             rule__JvmParameterizedTypeReference__Group_1__0__Impl();
 
             state._fsp--;
@@ -62487,23 +63112,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:19098:1: rule__JvmParameterizedTypeReference__Group_1__0__Impl : ( ( '<' ) ) ;
+    // InternalPerspectiveDsl.g:19295:1: rule__JvmParameterizedTypeReference__Group_1__0__Impl : ( ( '<' ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19102:1: ( ( ( '<' ) ) )
-            // InternalPerspectiveDsl.g:19103:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:19299:1: ( ( ( '<' ) ) )
+            // InternalPerspectiveDsl.g:19300:1: ( ( '<' ) )
             {
-            // InternalPerspectiveDsl.g:19103:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:19104:2: ( '<' )
+            // InternalPerspectiveDsl.g:19300:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:19301:2: ( '<' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0()); 
             }
-            // InternalPerspectiveDsl.g:19105:2: ( '<' )
-            // InternalPerspectiveDsl.g:19105:3: '<'
+            // InternalPerspectiveDsl.g:19302:2: ( '<' )
+            // InternalPerspectiveDsl.g:19302:3: '<'
             {
             match(input,27,FOLLOW_2); if (state.failed) return ;
 
@@ -62534,16 +63159,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__1"
-    // InternalPerspectiveDsl.g:19113:1: rule__JvmParameterizedTypeReference__Group_1__1 : rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 ;
+    // InternalPerspectiveDsl.g:19310: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:19117:1: ( rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 )
-            // InternalPerspectiveDsl.g:19118:2: rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2
+            // InternalPerspectiveDsl.g:19314:1: ( rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 )
+            // InternalPerspectiveDsl.g:19315:2: rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2
             {
-            pushFollow(FOLLOW_90);
+            pushFollow(FOLLOW_92);
             rule__JvmParameterizedTypeReference__Group_1__1__Impl();
 
             state._fsp--;
@@ -62572,23 +63197,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:19125:1: rule__JvmParameterizedTypeReference__Group_1__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:19322: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:19129:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:19130:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:19326:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:19327:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:19130:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:19131:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            // InternalPerspectiveDsl.g:19327:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:19328:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:19132:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
-            // InternalPerspectiveDsl.g:19132:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1
+            // InternalPerspectiveDsl.g:19329:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            // InternalPerspectiveDsl.g:19329:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1();
@@ -62623,16 +63248,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__2"
-    // InternalPerspectiveDsl.g:19140:1: rule__JvmParameterizedTypeReference__Group_1__2 : rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 ;
+    // InternalPerspectiveDsl.g:19337: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:19144:1: ( rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 )
-            // InternalPerspectiveDsl.g:19145:2: rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3
+            // InternalPerspectiveDsl.g:19341:1: ( rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 )
+            // InternalPerspectiveDsl.g:19342:2: rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3
             {
-            pushFollow(FOLLOW_90);
+            pushFollow(FOLLOW_92);
             rule__JvmParameterizedTypeReference__Group_1__2__Impl();
 
             state._fsp--;
@@ -62661,37 +63286,37 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__2__Impl"
-    // InternalPerspectiveDsl.g:19152:1: rule__JvmParameterizedTypeReference__Group_1__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) ;
+    // InternalPerspectiveDsl.g:19349: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:19156:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) )
-            // InternalPerspectiveDsl.g:19157:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            // InternalPerspectiveDsl.g:19353:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) )
+            // InternalPerspectiveDsl.g:19354:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
             {
-            // InternalPerspectiveDsl.g:19157:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
-            // InternalPerspectiveDsl.g:19158:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            // InternalPerspectiveDsl.g:19354:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            // InternalPerspectiveDsl.g:19355:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2()); 
             }
-            // InternalPerspectiveDsl.g:19159:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            // InternalPerspectiveDsl.g:19356:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
             loop136:
             do {
                 int alt136=2;
                 int LA136_0 = input.LA(1);
 
-                if ( (LA136_0==91) ) {
+                if ( (LA136_0==93) ) {
                     alt136=1;
                 }
 
 
                 switch (alt136) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:19159:3: rule__JvmParameterizedTypeReference__Group_1_2__0
+            	    // InternalPerspectiveDsl.g:19356:3: rule__JvmParameterizedTypeReference__Group_1_2__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__JvmParameterizedTypeReference__Group_1_2__0();
 
             	    state._fsp--;
@@ -62730,16 +63355,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__3"
-    // InternalPerspectiveDsl.g:19167:1: rule__JvmParameterizedTypeReference__Group_1__3 : rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 ;
+    // InternalPerspectiveDsl.g:19364: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:19171:1: ( rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 )
-            // InternalPerspectiveDsl.g:19172:2: rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4
+            // InternalPerspectiveDsl.g:19368:1: ( rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 )
+            // InternalPerspectiveDsl.g:19369:2: rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4
             {
-            pushFollow(FOLLOW_129);
+            pushFollow(FOLLOW_131);
             rule__JvmParameterizedTypeReference__Group_1__3__Impl();
 
             state._fsp--;
@@ -62768,17 +63393,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__3__Impl"
-    // InternalPerspectiveDsl.g:19179:1: rule__JvmParameterizedTypeReference__Group_1__3__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:19376:1: rule__JvmParameterizedTypeReference__Group_1__3__Impl : ( '>' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19183:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:19184:1: ( '>' )
+            // InternalPerspectiveDsl.g:19380:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:19381:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:19184:1: ( '>' )
-            // InternalPerspectiveDsl.g:19185:2: '>'
+            // InternalPerspectiveDsl.g:19381:1: ( '>' )
+            // InternalPerspectiveDsl.g:19382:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3()); 
@@ -62809,14 +63434,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__4"
-    // InternalPerspectiveDsl.g:19194:1: rule__JvmParameterizedTypeReference__Group_1__4 : rule__JvmParameterizedTypeReference__Group_1__4__Impl ;
+    // InternalPerspectiveDsl.g:19391: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:19198:1: ( rule__JvmParameterizedTypeReference__Group_1__4__Impl )
-            // InternalPerspectiveDsl.g:19199:2: rule__JvmParameterizedTypeReference__Group_1__4__Impl
+            // InternalPerspectiveDsl.g:19395:1: ( rule__JvmParameterizedTypeReference__Group_1__4__Impl )
+            // InternalPerspectiveDsl.g:19396:2: rule__JvmParameterizedTypeReference__Group_1__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1__4__Impl();
@@ -62842,22 +63467,22 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__4__Impl"
-    // InternalPerspectiveDsl.g:19205:1: rule__JvmParameterizedTypeReference__Group_1__4__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) ;
+    // InternalPerspectiveDsl.g:19402: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:19209:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) )
-            // InternalPerspectiveDsl.g:19210:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            // InternalPerspectiveDsl.g:19406:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) )
+            // InternalPerspectiveDsl.g:19407:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
             {
-            // InternalPerspectiveDsl.g:19210:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
-            // InternalPerspectiveDsl.g:19211:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            // InternalPerspectiveDsl.g:19407:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            // InternalPerspectiveDsl.g:19408:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4()); 
             }
-            // InternalPerspectiveDsl.g:19212:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            // InternalPerspectiveDsl.g:19409:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
             loop137:
             do {
                 int alt137=2;
@@ -62869,7 +63494,7 @@
                     if ( (LA137_2==RULE_ID) ) {
                         int LA137_3 = input.LA(3);
 
-                        if ( (synpred193_InternalPerspectiveDsl()) ) {
+                        if ( (synpred195_InternalPerspectiveDsl()) ) {
                             alt137=1;
                         }
 
@@ -62882,9 +63507,9 @@
 
                 switch (alt137) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:19212:3: rule__JvmParameterizedTypeReference__Group_1_4__0
+            	    // InternalPerspectiveDsl.g:19409:3: rule__JvmParameterizedTypeReference__Group_1_4__0
             	    {
-            	    pushFollow(FOLLOW_130);
+            	    pushFollow(FOLLOW_132);
             	    rule__JvmParameterizedTypeReference__Group_1_4__0();
 
             	    state._fsp--;
@@ -62923,16 +63548,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__0"
-    // InternalPerspectiveDsl.g:19221:1: rule__JvmParameterizedTypeReference__Group_1_2__0 : rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 ;
+    // InternalPerspectiveDsl.g:19418: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:19225:1: ( rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 )
-            // InternalPerspectiveDsl.g:19226:2: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1
+            // InternalPerspectiveDsl.g:19422:1: ( rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 )
+            // InternalPerspectiveDsl.g:19423:2: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1
             {
-            pushFollow(FOLLOW_89);
+            pushFollow(FOLLOW_91);
             rule__JvmParameterizedTypeReference__Group_1_2__0__Impl();
 
             state._fsp--;
@@ -62961,22 +63586,22 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__0__Impl"
-    // InternalPerspectiveDsl.g:19233:1: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:19430: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:19237:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:19238:1: ( ',' )
+            // InternalPerspectiveDsl.g:19434:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:19435:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:19238:1: ( ',' )
-            // InternalPerspectiveDsl.g:19239:2: ','
+            // InternalPerspectiveDsl.g:19435:1: ( ',' )
+            // InternalPerspectiveDsl.g:19436:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0()); 
             }
@@ -63002,14 +63627,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__1"
-    // InternalPerspectiveDsl.g:19248:1: rule__JvmParameterizedTypeReference__Group_1_2__1 : rule__JvmParameterizedTypeReference__Group_1_2__1__Impl ;
+    // InternalPerspectiveDsl.g:19445: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:19252:1: ( rule__JvmParameterizedTypeReference__Group_1_2__1__Impl )
-            // InternalPerspectiveDsl.g:19253:2: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl
+            // InternalPerspectiveDsl.g:19449:1: ( rule__JvmParameterizedTypeReference__Group_1_2__1__Impl )
+            // InternalPerspectiveDsl.g:19450:2: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_2__1__Impl();
@@ -63035,23 +63660,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__1__Impl"
-    // InternalPerspectiveDsl.g:19259:1: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:19456: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:19263:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) )
-            // InternalPerspectiveDsl.g:19264:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            // InternalPerspectiveDsl.g:19460:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) )
+            // InternalPerspectiveDsl.g:19461:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:19264:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
-            // InternalPerspectiveDsl.g:19265:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            // InternalPerspectiveDsl.g:19461:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            // InternalPerspectiveDsl.g:19462:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1()); 
             }
-            // InternalPerspectiveDsl.g:19266:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
-            // InternalPerspectiveDsl.g:19266:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1
+            // InternalPerspectiveDsl.g:19463:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            // InternalPerspectiveDsl.g:19463:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1();
@@ -63086,14 +63711,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__0"
-    // InternalPerspectiveDsl.g:19275:1: rule__JvmParameterizedTypeReference__Group_1_4__0 : rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 ;
+    // InternalPerspectiveDsl.g:19472: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:19279:1: ( rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 )
-            // InternalPerspectiveDsl.g:19280:2: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1
+            // InternalPerspectiveDsl.g:19476:1: ( rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 )
+            // InternalPerspectiveDsl.g:19477:2: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1
             {
             pushFollow(FOLLOW_7);
             rule__JvmParameterizedTypeReference__Group_1_4__0__Impl();
@@ -63124,23 +63749,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__0__Impl"
-    // InternalPerspectiveDsl.g:19287:1: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:19484: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:19291:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) )
-            // InternalPerspectiveDsl.g:19292:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            // InternalPerspectiveDsl.g:19488:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) )
+            // InternalPerspectiveDsl.g:19489:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:19292:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
-            // InternalPerspectiveDsl.g:19293:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            // InternalPerspectiveDsl.g:19489:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            // InternalPerspectiveDsl.g:19490:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0()); 
             }
-            // InternalPerspectiveDsl.g:19294:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
-            // InternalPerspectiveDsl.g:19294:3: rule__JvmParameterizedTypeReference__Group_1_4_0__0
+            // InternalPerspectiveDsl.g:19491:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            // InternalPerspectiveDsl.g:19491:3: rule__JvmParameterizedTypeReference__Group_1_4_0__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0__0();
@@ -63175,16 +63800,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__1"
-    // InternalPerspectiveDsl.g:19302:1: rule__JvmParameterizedTypeReference__Group_1_4__1 : rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 ;
+    // InternalPerspectiveDsl.g:19499: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:19306:1: ( rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 )
-            // InternalPerspectiveDsl.g:19307:2: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2
+            // InternalPerspectiveDsl.g:19503:1: ( rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 )
+            // InternalPerspectiveDsl.g:19504:2: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2
             {
-            pushFollow(FOLLOW_59);
+            pushFollow(FOLLOW_61);
             rule__JvmParameterizedTypeReference__Group_1_4__1__Impl();
 
             state._fsp--;
@@ -63213,23 +63838,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__1__Impl"
-    // InternalPerspectiveDsl.g:19314:1: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) ;
+    // InternalPerspectiveDsl.g:19511: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:19318:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) )
-            // InternalPerspectiveDsl.g:19319:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            // InternalPerspectiveDsl.g:19515:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) )
+            // InternalPerspectiveDsl.g:19516:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
             {
-            // InternalPerspectiveDsl.g:19319:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
-            // InternalPerspectiveDsl.g:19320:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            // InternalPerspectiveDsl.g:19516:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            // InternalPerspectiveDsl.g:19517:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1()); 
             }
-            // InternalPerspectiveDsl.g:19321:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
-            // InternalPerspectiveDsl.g:19321:3: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1
+            // InternalPerspectiveDsl.g:19518:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            // InternalPerspectiveDsl.g:19518:3: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1();
@@ -63264,14 +63889,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__2"
-    // InternalPerspectiveDsl.g:19329:1: rule__JvmParameterizedTypeReference__Group_1_4__2 : rule__JvmParameterizedTypeReference__Group_1_4__2__Impl ;
+    // InternalPerspectiveDsl.g:19526: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:19333:1: ( rule__JvmParameterizedTypeReference__Group_1_4__2__Impl )
-            // InternalPerspectiveDsl.g:19334:2: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl
+            // InternalPerspectiveDsl.g:19530:1: ( rule__JvmParameterizedTypeReference__Group_1_4__2__Impl )
+            // InternalPerspectiveDsl.g:19531:2: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4__2__Impl();
@@ -63297,27 +63922,27 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__2__Impl"
-    // InternalPerspectiveDsl.g:19340:1: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) ;
+    // InternalPerspectiveDsl.g:19537: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:19344:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) )
-            // InternalPerspectiveDsl.g:19345:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            // InternalPerspectiveDsl.g:19541:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) )
+            // InternalPerspectiveDsl.g:19542:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
             {
-            // InternalPerspectiveDsl.g:19345:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
-            // InternalPerspectiveDsl.g:19346:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            // InternalPerspectiveDsl.g:19542:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            // InternalPerspectiveDsl.g:19543:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2()); 
             }
-            // InternalPerspectiveDsl.g:19347:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            // InternalPerspectiveDsl.g:19544:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
             int alt138=2;
             alt138 = dfa138.predict(input);
             switch (alt138) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:19347:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
+                    // InternalPerspectiveDsl.g:19544:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmParameterizedTypeReference__Group_1_4_2__0();
@@ -63355,14 +63980,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0__0"
-    // InternalPerspectiveDsl.g:19356:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0 : rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl ;
+    // InternalPerspectiveDsl.g:19553: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:19360:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl )
-            // InternalPerspectiveDsl.g:19361:2: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl
+            // InternalPerspectiveDsl.g:19557:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl )
+            // InternalPerspectiveDsl.g:19558:2: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl();
@@ -63388,23 +64013,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl"
-    // InternalPerspectiveDsl.g:19367:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:19564: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:19371:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:19372:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            // InternalPerspectiveDsl.g:19568:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:19569:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:19372:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
-            // InternalPerspectiveDsl.g:19373:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            // InternalPerspectiveDsl.g:19569:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            // InternalPerspectiveDsl.g:19570:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0()); 
             }
-            // InternalPerspectiveDsl.g:19374:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
-            // InternalPerspectiveDsl.g:19374:3: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0
+            // InternalPerspectiveDsl.g:19571:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            // InternalPerspectiveDsl.g:19571:3: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0_0__0();
@@ -63439,16 +64064,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0"
-    // InternalPerspectiveDsl.g:19383: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:19580: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:19387:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 )
-            // InternalPerspectiveDsl.g:19388:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1
+            // InternalPerspectiveDsl.g:19584:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 )
+            // InternalPerspectiveDsl.g:19585:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1
             {
-            pushFollow(FOLLOW_129);
+            pushFollow(FOLLOW_131);
             rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl();
 
             state._fsp--;
@@ -63477,23 +64102,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:19395:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:19592: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:19399:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:19400:1: ( () )
+            // InternalPerspectiveDsl.g:19596:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:19597:1: ( () )
             {
-            // InternalPerspectiveDsl.g:19400:1: ( () )
-            // InternalPerspectiveDsl.g:19401:2: ()
+            // InternalPerspectiveDsl.g:19597:1: ( () )
+            // InternalPerspectiveDsl.g:19598:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:19402:2: ()
-            // InternalPerspectiveDsl.g:19402:3: 
+            // InternalPerspectiveDsl.g:19599:2: ()
+            // InternalPerspectiveDsl.g:19599:3: 
             {
             }
 
@@ -63518,14 +64143,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__1"
-    // InternalPerspectiveDsl.g:19410:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 : rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:19607: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:19414:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:19415:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl
+            // InternalPerspectiveDsl.g:19611:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:19612:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl();
@@ -63551,17 +64176,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:19421:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl : ( '.' ) ;
+    // InternalPerspectiveDsl.g:19618: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:19425:1: ( ( '.' ) )
-            // InternalPerspectiveDsl.g:19426:1: ( '.' )
+            // InternalPerspectiveDsl.g:19622:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:19623:1: ( '.' )
             {
-            // InternalPerspectiveDsl.g:19426:1: ( '.' )
-            // InternalPerspectiveDsl.g:19427:2: '.'
+            // InternalPerspectiveDsl.g:19623:1: ( '.' )
+            // InternalPerspectiveDsl.g:19624:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1()); 
@@ -63592,16 +64217,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__0"
-    // InternalPerspectiveDsl.g:19437: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:19634: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:19441:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 )
-            // InternalPerspectiveDsl.g:19442:2: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1
+            // InternalPerspectiveDsl.g:19638:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 )
+            // InternalPerspectiveDsl.g:19639:2: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1
             {
-            pushFollow(FOLLOW_89);
+            pushFollow(FOLLOW_91);
             rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl();
 
             state._fsp--;
@@ -63630,23 +64255,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl"
-    // InternalPerspectiveDsl.g:19449:1: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl : ( ( '<' ) ) ;
+    // InternalPerspectiveDsl.g:19646: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:19453:1: ( ( ( '<' ) ) )
-            // InternalPerspectiveDsl.g:19454:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:19650:1: ( ( ( '<' ) ) )
+            // InternalPerspectiveDsl.g:19651:1: ( ( '<' ) )
             {
-            // InternalPerspectiveDsl.g:19454:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:19455:2: ( '<' )
+            // InternalPerspectiveDsl.g:19651:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:19652:2: ( '<' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0()); 
             }
-            // InternalPerspectiveDsl.g:19456:2: ( '<' )
-            // InternalPerspectiveDsl.g:19456:3: '<'
+            // InternalPerspectiveDsl.g:19653:2: ( '<' )
+            // InternalPerspectiveDsl.g:19653:3: '<'
             {
             match(input,27,FOLLOW_2); if (state.failed) return ;
 
@@ -63677,16 +64302,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__1"
-    // InternalPerspectiveDsl.g:19464: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:19661: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:19468:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 )
-            // InternalPerspectiveDsl.g:19469:2: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2
+            // InternalPerspectiveDsl.g:19665:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 )
+            // InternalPerspectiveDsl.g:19666:2: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2
             {
-            pushFollow(FOLLOW_90);
+            pushFollow(FOLLOW_92);
             rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl();
 
             state._fsp--;
@@ -63715,23 +64340,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl"
-    // InternalPerspectiveDsl.g:19476:1: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:19673: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:19480:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) )
-            // InternalPerspectiveDsl.g:19481:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            // InternalPerspectiveDsl.g:19677:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) )
+            // InternalPerspectiveDsl.g:19678:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:19481:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
-            // InternalPerspectiveDsl.g:19482:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            // InternalPerspectiveDsl.g:19678:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            // InternalPerspectiveDsl.g:19679:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1()); 
             }
-            // InternalPerspectiveDsl.g:19483:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
-            // InternalPerspectiveDsl.g:19483:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1
+            // InternalPerspectiveDsl.g:19680:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            // InternalPerspectiveDsl.g:19680:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1();
@@ -63766,16 +64391,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__2"
-    // InternalPerspectiveDsl.g:19491: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:19688: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:19495:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 )
-            // InternalPerspectiveDsl.g:19496:2: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3
+            // InternalPerspectiveDsl.g:19692:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 )
+            // InternalPerspectiveDsl.g:19693:2: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3
             {
-            pushFollow(FOLLOW_90);
+            pushFollow(FOLLOW_92);
             rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl();
 
             state._fsp--;
@@ -63804,37 +64429,37 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl"
-    // InternalPerspectiveDsl.g:19503:1: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) ;
+    // InternalPerspectiveDsl.g:19700: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:19507:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) )
-            // InternalPerspectiveDsl.g:19508:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            // InternalPerspectiveDsl.g:19704:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) )
+            // InternalPerspectiveDsl.g:19705:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
             {
-            // InternalPerspectiveDsl.g:19508:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
-            // InternalPerspectiveDsl.g:19509:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            // InternalPerspectiveDsl.g:19705:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            // InternalPerspectiveDsl.g:19706:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2()); 
             }
-            // InternalPerspectiveDsl.g:19510:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            // InternalPerspectiveDsl.g:19707:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
             loop139:
             do {
                 int alt139=2;
                 int LA139_0 = input.LA(1);
 
-                if ( (LA139_0==91) ) {
+                if ( (LA139_0==93) ) {
                     alt139=1;
                 }
 
 
                 switch (alt139) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:19510:3: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0
+            	    // InternalPerspectiveDsl.g:19707:3: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__JvmParameterizedTypeReference__Group_1_4_2_2__0();
 
             	    state._fsp--;
@@ -63873,14 +64498,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__3"
-    // InternalPerspectiveDsl.g:19518:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3 : rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl ;
+    // InternalPerspectiveDsl.g:19715: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:19522:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl )
-            // InternalPerspectiveDsl.g:19523:2: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl
+            // InternalPerspectiveDsl.g:19719:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl )
+            // InternalPerspectiveDsl.g:19720:2: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl();
@@ -63906,17 +64531,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl"
-    // InternalPerspectiveDsl.g:19529:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:19726: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:19533:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:19534:1: ( '>' )
+            // InternalPerspectiveDsl.g:19730:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:19731:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:19534:1: ( '>' )
-            // InternalPerspectiveDsl.g:19535:2: '>'
+            // InternalPerspectiveDsl.g:19731:1: ( '>' )
+            // InternalPerspectiveDsl.g:19732:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3()); 
@@ -63947,16 +64572,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0"
-    // InternalPerspectiveDsl.g:19545: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:19742: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:19549:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 )
-            // InternalPerspectiveDsl.g:19550:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1
+            // InternalPerspectiveDsl.g:19746:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 )
+            // InternalPerspectiveDsl.g:19747:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1
             {
-            pushFollow(FOLLOW_89);
+            pushFollow(FOLLOW_91);
             rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl();
 
             state._fsp--;
@@ -63985,22 +64610,22 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl"
-    // InternalPerspectiveDsl.g:19557:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:19754: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:19561:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:19562:1: ( ',' )
+            // InternalPerspectiveDsl.g:19758:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:19759:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:19562:1: ( ',' )
-            // InternalPerspectiveDsl.g:19563:2: ','
+            // InternalPerspectiveDsl.g:19759:1: ( ',' )
+            // InternalPerspectiveDsl.g:19760:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0()); 
             }
@@ -64026,14 +64651,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__1"
-    // InternalPerspectiveDsl.g:19572:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 : rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl ;
+    // InternalPerspectiveDsl.g:19769: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:19576:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl )
-            // InternalPerspectiveDsl.g:19577:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl
+            // InternalPerspectiveDsl.g:19773:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl )
+            // InternalPerspectiveDsl.g:19774:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl();
@@ -64059,23 +64684,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl"
-    // InternalPerspectiveDsl.g:19583:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:19780: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:19587:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) )
-            // InternalPerspectiveDsl.g:19588:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            // InternalPerspectiveDsl.g:19784:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) )
+            // InternalPerspectiveDsl.g:19785:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:19588:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
-            // InternalPerspectiveDsl.g:19589:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            // InternalPerspectiveDsl.g:19785:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            // InternalPerspectiveDsl.g:19786:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1()); 
             }
-            // InternalPerspectiveDsl.g:19590:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
-            // InternalPerspectiveDsl.g:19590:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1
+            // InternalPerspectiveDsl.g:19787:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            // InternalPerspectiveDsl.g:19787:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1();
@@ -64110,16 +64735,16 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__0"
-    // InternalPerspectiveDsl.g:19599:1: rule__JvmWildcardTypeReference__Group__0 : rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 ;
+    // InternalPerspectiveDsl.g:19796: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:19603:1: ( rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 )
-            // InternalPerspectiveDsl.g:19604:2: rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1
+            // InternalPerspectiveDsl.g:19800:1: ( rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 )
+            // InternalPerspectiveDsl.g:19801:2: rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1
             {
-            pushFollow(FOLLOW_89);
+            pushFollow(FOLLOW_91);
             rule__JvmWildcardTypeReference__Group__0__Impl();
 
             state._fsp--;
@@ -64148,23 +64773,23 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__0__Impl"
-    // InternalPerspectiveDsl.g:19611:1: rule__JvmWildcardTypeReference__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:19808:1: rule__JvmWildcardTypeReference__Group__0__Impl : ( () ) ;
     public final void rule__JvmWildcardTypeReference__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19615:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:19616:1: ( () )
+            // InternalPerspectiveDsl.g:19812:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:19813:1: ( () )
             {
-            // InternalPerspectiveDsl.g:19616:1: ( () )
-            // InternalPerspectiveDsl.g:19617:2: ()
+            // InternalPerspectiveDsl.g:19813:1: ( () )
+            // InternalPerspectiveDsl.g:19814:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0()); 
             }
-            // InternalPerspectiveDsl.g:19618:2: ()
-            // InternalPerspectiveDsl.g:19618:3: 
+            // InternalPerspectiveDsl.g:19815:2: ()
+            // InternalPerspectiveDsl.g:19815:3: 
             {
             }
 
@@ -64189,16 +64814,16 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__1"
-    // InternalPerspectiveDsl.g:19626:1: rule__JvmWildcardTypeReference__Group__1 : rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 ;
+    // InternalPerspectiveDsl.g:19823: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:19630:1: ( rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 )
-            // InternalPerspectiveDsl.g:19631:2: rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2
+            // InternalPerspectiveDsl.g:19827:1: ( rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 )
+            // InternalPerspectiveDsl.g:19828:2: rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2
             {
-            pushFollow(FOLLOW_133);
+            pushFollow(FOLLOW_135);
             rule__JvmWildcardTypeReference__Group__1__Impl();
 
             state._fsp--;
@@ -64227,22 +64852,22 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__1__Impl"
-    // InternalPerspectiveDsl.g:19638:1: rule__JvmWildcardTypeReference__Group__1__Impl : ( '?' ) ;
+    // InternalPerspectiveDsl.g:19835:1: rule__JvmWildcardTypeReference__Group__1__Impl : ( '?' ) ;
     public final void rule__JvmWildcardTypeReference__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19642:1: ( ( '?' ) )
-            // InternalPerspectiveDsl.g:19643:1: ( '?' )
+            // InternalPerspectiveDsl.g:19839:1: ( ( '?' ) )
+            // InternalPerspectiveDsl.g:19840:1: ( '?' )
             {
-            // InternalPerspectiveDsl.g:19643:1: ( '?' )
-            // InternalPerspectiveDsl.g:19644:2: '?'
+            // InternalPerspectiveDsl.g:19840:1: ( '?' )
+            // InternalPerspectiveDsl.g:19841:2: '?'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_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.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1()); 
             }
@@ -64268,14 +64893,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__2"
-    // InternalPerspectiveDsl.g:19653:1: rule__JvmWildcardTypeReference__Group__2 : rule__JvmWildcardTypeReference__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:19850: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:19657:1: ( rule__JvmWildcardTypeReference__Group__2__Impl )
-            // InternalPerspectiveDsl.g:19658:2: rule__JvmWildcardTypeReference__Group__2__Impl
+            // InternalPerspectiveDsl.g:19854:1: ( rule__JvmWildcardTypeReference__Group__2__Impl )
+            // InternalPerspectiveDsl.g:19855:2: rule__JvmWildcardTypeReference__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group__2__Impl();
@@ -64301,22 +64926,22 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__2__Impl"
-    // InternalPerspectiveDsl.g:19664:1: rule__JvmWildcardTypeReference__Group__2__Impl : ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) ;
+    // InternalPerspectiveDsl.g:19861: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:19668:1: ( ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) )
-            // InternalPerspectiveDsl.g:19669:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            // InternalPerspectiveDsl.g:19865:1: ( ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) )
+            // InternalPerspectiveDsl.g:19866:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
             {
-            // InternalPerspectiveDsl.g:19669:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
-            // InternalPerspectiveDsl.g:19670:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            // InternalPerspectiveDsl.g:19866:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            // InternalPerspectiveDsl.g:19867:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2()); 
             }
-            // InternalPerspectiveDsl.g:19671:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            // InternalPerspectiveDsl.g:19868:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
             int alt140=2;
             int LA140_0 = input.LA(1);
 
@@ -64325,7 +64950,7 @@
             }
             switch (alt140) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:19671:3: rule__JvmWildcardTypeReference__Alternatives_2
+                    // InternalPerspectiveDsl.g:19868:3: rule__JvmWildcardTypeReference__Alternatives_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmWildcardTypeReference__Alternatives_2();
@@ -64363,16 +64988,16 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__0"
-    // InternalPerspectiveDsl.g:19680:1: rule__JvmWildcardTypeReference__Group_2_0__0 : rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 ;
+    // InternalPerspectiveDsl.g:19877: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:19684:1: ( rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 )
-            // InternalPerspectiveDsl.g:19685:2: rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1
+            // InternalPerspectiveDsl.g:19881:1: ( rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 )
+            // InternalPerspectiveDsl.g:19882:2: rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1
             {
-            pushFollow(FOLLOW_134);
+            pushFollow(FOLLOW_136);
             rule__JvmWildcardTypeReference__Group_2_0__0__Impl();
 
             state._fsp--;
@@ -64401,23 +65026,23 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__0__Impl"
-    // InternalPerspectiveDsl.g:19692:1: rule__JvmWildcardTypeReference__Group_2_0__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) ;
+    // InternalPerspectiveDsl.g:19889: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:19696:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) )
-            // InternalPerspectiveDsl.g:19697:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            // InternalPerspectiveDsl.g:19893:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) )
+            // InternalPerspectiveDsl.g:19894:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
             {
-            // InternalPerspectiveDsl.g:19697:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
-            // InternalPerspectiveDsl.g:19698:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            // InternalPerspectiveDsl.g:19894:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            // InternalPerspectiveDsl.g:19895:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0()); 
             }
-            // InternalPerspectiveDsl.g:19699:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
-            // InternalPerspectiveDsl.g:19699:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0
+            // InternalPerspectiveDsl.g:19896:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            // InternalPerspectiveDsl.g:19896:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0();
@@ -64452,14 +65077,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__1"
-    // InternalPerspectiveDsl.g:19707:1: rule__JvmWildcardTypeReference__Group_2_0__1 : rule__JvmWildcardTypeReference__Group_2_0__1__Impl ;
+    // InternalPerspectiveDsl.g:19904: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:19711:1: ( rule__JvmWildcardTypeReference__Group_2_0__1__Impl )
-            // InternalPerspectiveDsl.g:19712:2: rule__JvmWildcardTypeReference__Group_2_0__1__Impl
+            // InternalPerspectiveDsl.g:19908:1: ( rule__JvmWildcardTypeReference__Group_2_0__1__Impl )
+            // InternalPerspectiveDsl.g:19909:2: rule__JvmWildcardTypeReference__Group_2_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group_2_0__1__Impl();
@@ -64485,37 +65110,37 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__1__Impl"
-    // InternalPerspectiveDsl.g:19718:1: rule__JvmWildcardTypeReference__Group_2_0__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) ;
+    // InternalPerspectiveDsl.g:19915: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:19722:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) )
-            // InternalPerspectiveDsl.g:19723:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            // InternalPerspectiveDsl.g:19919:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) )
+            // InternalPerspectiveDsl.g:19920:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
             {
-            // InternalPerspectiveDsl.g:19723:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
-            // InternalPerspectiveDsl.g:19724:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            // InternalPerspectiveDsl.g:19920:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            // InternalPerspectiveDsl.g:19921:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1()); 
             }
-            // InternalPerspectiveDsl.g:19725:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            // InternalPerspectiveDsl.g:19922:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
             loop141:
             do {
                 int alt141=2;
                 int LA141_0 = input.LA(1);
 
-                if ( (LA141_0==116) ) {
+                if ( (LA141_0==118) ) {
                     alt141=1;
                 }
 
 
                 switch (alt141) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:19725:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1
+            	    // InternalPerspectiveDsl.g:19922:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1
             	    {
-            	    pushFollow(FOLLOW_135);
+            	    pushFollow(FOLLOW_137);
             	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1();
 
             	    state._fsp--;
@@ -64554,16 +65179,16 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__0"
-    // InternalPerspectiveDsl.g:19734:1: rule__JvmWildcardTypeReference__Group_2_1__0 : rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 ;
+    // InternalPerspectiveDsl.g:19931: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:19738:1: ( rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 )
-            // InternalPerspectiveDsl.g:19739:2: rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1
+            // InternalPerspectiveDsl.g:19935:1: ( rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 )
+            // InternalPerspectiveDsl.g:19936:2: rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1
             {
-            pushFollow(FOLLOW_134);
+            pushFollow(FOLLOW_136);
             rule__JvmWildcardTypeReference__Group_2_1__0__Impl();
 
             state._fsp--;
@@ -64592,23 +65217,23 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__0__Impl"
-    // InternalPerspectiveDsl.g:19746:1: rule__JvmWildcardTypeReference__Group_2_1__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:19943: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:19750:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) )
-            // InternalPerspectiveDsl.g:19751:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            // InternalPerspectiveDsl.g:19947:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) )
+            // InternalPerspectiveDsl.g:19948:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:19751:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
-            // InternalPerspectiveDsl.g:19752:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            // InternalPerspectiveDsl.g:19948:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            // InternalPerspectiveDsl.g:19949:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0()); 
             }
-            // InternalPerspectiveDsl.g:19753:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
-            // InternalPerspectiveDsl.g:19753:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0
+            // InternalPerspectiveDsl.g:19950:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            // InternalPerspectiveDsl.g:19950:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0();
@@ -64643,14 +65268,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__1"
-    // InternalPerspectiveDsl.g:19761:1: rule__JvmWildcardTypeReference__Group_2_1__1 : rule__JvmWildcardTypeReference__Group_2_1__1__Impl ;
+    // InternalPerspectiveDsl.g:19958: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:19765:1: ( rule__JvmWildcardTypeReference__Group_2_1__1__Impl )
-            // InternalPerspectiveDsl.g:19766:2: rule__JvmWildcardTypeReference__Group_2_1__1__Impl
+            // InternalPerspectiveDsl.g:19962:1: ( rule__JvmWildcardTypeReference__Group_2_1__1__Impl )
+            // InternalPerspectiveDsl.g:19963:2: rule__JvmWildcardTypeReference__Group_2_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group_2_1__1__Impl();
@@ -64676,37 +65301,37 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__1__Impl"
-    // InternalPerspectiveDsl.g:19772:1: rule__JvmWildcardTypeReference__Group_2_1__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) ;
+    // InternalPerspectiveDsl.g:19969: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:19776:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) )
-            // InternalPerspectiveDsl.g:19777:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            // InternalPerspectiveDsl.g:19973:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) )
+            // InternalPerspectiveDsl.g:19974:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
             {
-            // InternalPerspectiveDsl.g:19777:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
-            // InternalPerspectiveDsl.g:19778:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            // InternalPerspectiveDsl.g:19974:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            // InternalPerspectiveDsl.g:19975:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1()); 
             }
-            // InternalPerspectiveDsl.g:19779:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            // InternalPerspectiveDsl.g:19976:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
             loop142:
             do {
                 int alt142=2;
                 int LA142_0 = input.LA(1);
 
-                if ( (LA142_0==116) ) {
+                if ( (LA142_0==118) ) {
                     alt142=1;
                 }
 
 
                 switch (alt142) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:19779:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1
+            	    // InternalPerspectiveDsl.g:19976:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1
             	    {
-            	    pushFollow(FOLLOW_135);
+            	    pushFollow(FOLLOW_137);
             	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1();
 
             	    state._fsp--;
@@ -64745,16 +65370,16 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__0"
-    // InternalPerspectiveDsl.g:19788:1: rule__JvmUpperBound__Group__0 : rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 ;
+    // InternalPerspectiveDsl.g:19985: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:19792:1: ( rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 )
-            // InternalPerspectiveDsl.g:19793:2: rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1
+            // InternalPerspectiveDsl.g:19989:1: ( rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 )
+            // InternalPerspectiveDsl.g:19990:2: rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__JvmUpperBound__Group__0__Impl();
 
             state._fsp--;
@@ -64783,17 +65408,17 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__0__Impl"
-    // InternalPerspectiveDsl.g:19800:1: rule__JvmUpperBound__Group__0__Impl : ( 'extends' ) ;
+    // InternalPerspectiveDsl.g:19997:1: rule__JvmUpperBound__Group__0__Impl : ( 'extends' ) ;
     public final void rule__JvmUpperBound__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19804:1: ( ( 'extends' ) )
-            // InternalPerspectiveDsl.g:19805:1: ( 'extends' )
+            // InternalPerspectiveDsl.g:20001:1: ( ( 'extends' ) )
+            // InternalPerspectiveDsl.g:20002:1: ( 'extends' )
             {
-            // InternalPerspectiveDsl.g:19805:1: ( 'extends' )
-            // InternalPerspectiveDsl.g:19806:2: 'extends'
+            // InternalPerspectiveDsl.g:20002:1: ( 'extends' )
+            // InternalPerspectiveDsl.g:20003:2: 'extends'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0()); 
@@ -64824,14 +65449,14 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__1"
-    // InternalPerspectiveDsl.g:19815:1: rule__JvmUpperBound__Group__1 : rule__JvmUpperBound__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:20012: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:19819:1: ( rule__JvmUpperBound__Group__1__Impl )
-            // InternalPerspectiveDsl.g:19820:2: rule__JvmUpperBound__Group__1__Impl
+            // InternalPerspectiveDsl.g:20016:1: ( rule__JvmUpperBound__Group__1__Impl )
+            // InternalPerspectiveDsl.g:20017:2: rule__JvmUpperBound__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBound__Group__1__Impl();
@@ -64857,23 +65482,23 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__1__Impl"
-    // InternalPerspectiveDsl.g:19826:1: rule__JvmUpperBound__Group__1__Impl : ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:20023: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:19830:1: ( ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:19831:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20027:1: ( ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:20028:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:19831:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
-            // InternalPerspectiveDsl.g:19832:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20028:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20029:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:19833:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
-            // InternalPerspectiveDsl.g:19833:3: rule__JvmUpperBound__TypeReferenceAssignment_1
+            // InternalPerspectiveDsl.g:20030:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20030:3: rule__JvmUpperBound__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBound__TypeReferenceAssignment_1();
@@ -64908,16 +65533,16 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__0"
-    // InternalPerspectiveDsl.g:19842:1: rule__JvmUpperBoundAnded__Group__0 : rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 ;
+    // InternalPerspectiveDsl.g:20039: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:19846:1: ( rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 )
-            // InternalPerspectiveDsl.g:19847:2: rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1
+            // InternalPerspectiveDsl.g:20043:1: ( rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 )
+            // InternalPerspectiveDsl.g:20044:2: rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__JvmUpperBoundAnded__Group__0__Impl();
 
             state._fsp--;
@@ -64946,22 +65571,22 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__0__Impl"
-    // InternalPerspectiveDsl.g:19854:1: rule__JvmUpperBoundAnded__Group__0__Impl : ( '&' ) ;
+    // InternalPerspectiveDsl.g:20051:1: rule__JvmUpperBoundAnded__Group__0__Impl : ( '&' ) ;
     public final void rule__JvmUpperBoundAnded__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19858:1: ( ( '&' ) )
-            // InternalPerspectiveDsl.g:19859:1: ( '&' )
+            // InternalPerspectiveDsl.g:20055:1: ( ( '&' ) )
+            // InternalPerspectiveDsl.g:20056:1: ( '&' )
             {
-            // InternalPerspectiveDsl.g:19859:1: ( '&' )
-            // InternalPerspectiveDsl.g:19860:2: '&'
+            // InternalPerspectiveDsl.g:20056:1: ( '&' )
+            // InternalPerspectiveDsl.g:20057:2: '&'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0()); 
             }
-            match(input,116,FOLLOW_2); if (state.failed) return ;
+            match(input,118,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0()); 
             }
@@ -64987,14 +65612,14 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__1"
-    // InternalPerspectiveDsl.g:19869:1: rule__JvmUpperBoundAnded__Group__1 : rule__JvmUpperBoundAnded__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:20066: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:19873:1: ( rule__JvmUpperBoundAnded__Group__1__Impl )
-            // InternalPerspectiveDsl.g:19874:2: rule__JvmUpperBoundAnded__Group__1__Impl
+            // InternalPerspectiveDsl.g:20070:1: ( rule__JvmUpperBoundAnded__Group__1__Impl )
+            // InternalPerspectiveDsl.g:20071:2: rule__JvmUpperBoundAnded__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBoundAnded__Group__1__Impl();
@@ -65020,23 +65645,23 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__1__Impl"
-    // InternalPerspectiveDsl.g:19880:1: rule__JvmUpperBoundAnded__Group__1__Impl : ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:20077: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:19884:1: ( ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:19885:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20081:1: ( ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:20082:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:19885:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
-            // InternalPerspectiveDsl.g:19886:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20082:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20083:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:19887:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
-            // InternalPerspectiveDsl.g:19887:3: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1
+            // InternalPerspectiveDsl.g:20084:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20084:3: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBoundAnded__TypeReferenceAssignment_1();
@@ -65071,16 +65696,16 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__0"
-    // InternalPerspectiveDsl.g:19896:1: rule__JvmLowerBound__Group__0 : rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 ;
+    // InternalPerspectiveDsl.g:20093: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:19900:1: ( rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 )
-            // InternalPerspectiveDsl.g:19901:2: rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1
+            // InternalPerspectiveDsl.g:20097:1: ( rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 )
+            // InternalPerspectiveDsl.g:20098:2: rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__JvmLowerBound__Group__0__Impl();
 
             state._fsp--;
@@ -65109,17 +65734,17 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__0__Impl"
-    // InternalPerspectiveDsl.g:19908:1: rule__JvmLowerBound__Group__0__Impl : ( 'super' ) ;
+    // InternalPerspectiveDsl.g:20105:1: rule__JvmLowerBound__Group__0__Impl : ( 'super' ) ;
     public final void rule__JvmLowerBound__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19912:1: ( ( 'super' ) )
-            // InternalPerspectiveDsl.g:19913:1: ( 'super' )
+            // InternalPerspectiveDsl.g:20109:1: ( ( 'super' ) )
+            // InternalPerspectiveDsl.g:20110:1: ( 'super' )
             {
-            // InternalPerspectiveDsl.g:19913:1: ( 'super' )
-            // InternalPerspectiveDsl.g:19914:2: 'super'
+            // InternalPerspectiveDsl.g:20110:1: ( 'super' )
+            // InternalPerspectiveDsl.g:20111:2: 'super'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0()); 
@@ -65150,14 +65775,14 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__1"
-    // InternalPerspectiveDsl.g:19923:1: rule__JvmLowerBound__Group__1 : rule__JvmLowerBound__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:20120: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:19927:1: ( rule__JvmLowerBound__Group__1__Impl )
-            // InternalPerspectiveDsl.g:19928:2: rule__JvmLowerBound__Group__1__Impl
+            // InternalPerspectiveDsl.g:20124:1: ( rule__JvmLowerBound__Group__1__Impl )
+            // InternalPerspectiveDsl.g:20125:2: rule__JvmLowerBound__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBound__Group__1__Impl();
@@ -65183,23 +65808,23 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__1__Impl"
-    // InternalPerspectiveDsl.g:19934:1: rule__JvmLowerBound__Group__1__Impl : ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:20131: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:19938:1: ( ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:19939:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20135:1: ( ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:20136:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:19939:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
-            // InternalPerspectiveDsl.g:19940:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20136:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20137:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:19941:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
-            // InternalPerspectiveDsl.g:19941:3: rule__JvmLowerBound__TypeReferenceAssignment_1
+            // InternalPerspectiveDsl.g:20138:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20138:3: rule__JvmLowerBound__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBound__TypeReferenceAssignment_1();
@@ -65234,16 +65859,16 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__0"
-    // InternalPerspectiveDsl.g:19950:1: rule__JvmLowerBoundAnded__Group__0 : rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 ;
+    // InternalPerspectiveDsl.g:20147: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:19954:1: ( rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 )
-            // InternalPerspectiveDsl.g:19955:2: rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1
+            // InternalPerspectiveDsl.g:20151:1: ( rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 )
+            // InternalPerspectiveDsl.g:20152:2: rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_71);
             rule__JvmLowerBoundAnded__Group__0__Impl();
 
             state._fsp--;
@@ -65272,22 +65897,22 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__0__Impl"
-    // InternalPerspectiveDsl.g:19962:1: rule__JvmLowerBoundAnded__Group__0__Impl : ( '&' ) ;
+    // InternalPerspectiveDsl.g:20159:1: rule__JvmLowerBoundAnded__Group__0__Impl : ( '&' ) ;
     public final void rule__JvmLowerBoundAnded__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19966:1: ( ( '&' ) )
-            // InternalPerspectiveDsl.g:19967:1: ( '&' )
+            // InternalPerspectiveDsl.g:20163:1: ( ( '&' ) )
+            // InternalPerspectiveDsl.g:20164:1: ( '&' )
             {
-            // InternalPerspectiveDsl.g:19967:1: ( '&' )
-            // InternalPerspectiveDsl.g:19968:2: '&'
+            // InternalPerspectiveDsl.g:20164:1: ( '&' )
+            // InternalPerspectiveDsl.g:20165:2: '&'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0()); 
             }
-            match(input,116,FOLLOW_2); if (state.failed) return ;
+            match(input,118,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0()); 
             }
@@ -65313,14 +65938,14 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__1"
-    // InternalPerspectiveDsl.g:19977:1: rule__JvmLowerBoundAnded__Group__1 : rule__JvmLowerBoundAnded__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:20174: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:19981:1: ( rule__JvmLowerBoundAnded__Group__1__Impl )
-            // InternalPerspectiveDsl.g:19982:2: rule__JvmLowerBoundAnded__Group__1__Impl
+            // InternalPerspectiveDsl.g:20178:1: ( rule__JvmLowerBoundAnded__Group__1__Impl )
+            // InternalPerspectiveDsl.g:20179:2: rule__JvmLowerBoundAnded__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBoundAnded__Group__1__Impl();
@@ -65346,23 +65971,23 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__1__Impl"
-    // InternalPerspectiveDsl.g:19988:1: rule__JvmLowerBoundAnded__Group__1__Impl : ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:20185: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:19992:1: ( ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:19993:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20189:1: ( ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:20190:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:19993:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
-            // InternalPerspectiveDsl.g:19994:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20190:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20191:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:19995:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
-            // InternalPerspectiveDsl.g:19995:3: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1
+            // InternalPerspectiveDsl.g:20192:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20192:3: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBoundAnded__TypeReferenceAssignment_1();
@@ -65397,16 +66022,16 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__0"
-    // InternalPerspectiveDsl.g:20004:1: rule__QualifiedNameWithWildcard__Group__0 : rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 ;
+    // InternalPerspectiveDsl.g:20201: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:20008:1: ( rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 )
-            // InternalPerspectiveDsl.g:20009:2: rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1
+            // InternalPerspectiveDsl.g:20205:1: ( rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 )
+            // InternalPerspectiveDsl.g:20206:2: rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1
             {
-            pushFollow(FOLLOW_129);
+            pushFollow(FOLLOW_131);
             rule__QualifiedNameWithWildcard__Group__0__Impl();
 
             state._fsp--;
@@ -65435,17 +66060,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__0__Impl"
-    // InternalPerspectiveDsl.g:20016:1: rule__QualifiedNameWithWildcard__Group__0__Impl : ( ruleQualifiedName ) ;
+    // InternalPerspectiveDsl.g:20213:1: rule__QualifiedNameWithWildcard__Group__0__Impl : ( ruleQualifiedName ) ;
     public final void rule__QualifiedNameWithWildcard__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20020:1: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:20021:1: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:20217:1: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:20218:1: ( ruleQualifiedName )
             {
-            // InternalPerspectiveDsl.g:20021:1: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:20022:2: ruleQualifiedName
+            // InternalPerspectiveDsl.g:20218:1: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:20219:2: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); 
@@ -65480,16 +66105,16 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__1"
-    // InternalPerspectiveDsl.g:20031:1: rule__QualifiedNameWithWildcard__Group__1 : rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 ;
+    // InternalPerspectiveDsl.g:20228: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:20035:1: ( rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 )
-            // InternalPerspectiveDsl.g:20036:2: rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2
+            // InternalPerspectiveDsl.g:20232:1: ( rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 )
+            // InternalPerspectiveDsl.g:20233:2: rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2
             {
-            pushFollow(FOLLOW_136);
+            pushFollow(FOLLOW_138);
             rule__QualifiedNameWithWildcard__Group__1__Impl();
 
             state._fsp--;
@@ -65518,17 +66143,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__1__Impl"
-    // InternalPerspectiveDsl.g:20043:1: rule__QualifiedNameWithWildcard__Group__1__Impl : ( '.' ) ;
+    // InternalPerspectiveDsl.g:20240:1: rule__QualifiedNameWithWildcard__Group__1__Impl : ( '.' ) ;
     public final void rule__QualifiedNameWithWildcard__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20047:1: ( ( '.' ) )
-            // InternalPerspectiveDsl.g:20048:1: ( '.' )
+            // InternalPerspectiveDsl.g:20244:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:20245:1: ( '.' )
             {
-            // InternalPerspectiveDsl.g:20048:1: ( '.' )
-            // InternalPerspectiveDsl.g:20049:2: '.'
+            // InternalPerspectiveDsl.g:20245:1: ( '.' )
+            // InternalPerspectiveDsl.g:20246:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1()); 
@@ -65559,14 +66184,14 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__2"
-    // InternalPerspectiveDsl.g:20058:1: rule__QualifiedNameWithWildcard__Group__2 : rule__QualifiedNameWithWildcard__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:20255: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:20062:1: ( rule__QualifiedNameWithWildcard__Group__2__Impl )
-            // InternalPerspectiveDsl.g:20063:2: rule__QualifiedNameWithWildcard__Group__2__Impl
+            // InternalPerspectiveDsl.g:20259:1: ( rule__QualifiedNameWithWildcard__Group__2__Impl )
+            // InternalPerspectiveDsl.g:20260:2: rule__QualifiedNameWithWildcard__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedNameWithWildcard__Group__2__Impl();
@@ -65592,17 +66217,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__2__Impl"
-    // InternalPerspectiveDsl.g:20069:1: rule__QualifiedNameWithWildcard__Group__2__Impl : ( '*' ) ;
+    // InternalPerspectiveDsl.g:20266:1: rule__QualifiedNameWithWildcard__Group__2__Impl : ( '*' ) ;
     public final void rule__QualifiedNameWithWildcard__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20073:1: ( ( '*' ) )
-            // InternalPerspectiveDsl.g:20074:1: ( '*' )
+            // InternalPerspectiveDsl.g:20270:1: ( ( '*' ) )
+            // InternalPerspectiveDsl.g:20271:1: ( '*' )
             {
-            // InternalPerspectiveDsl.g:20074:1: ( '*' )
-            // InternalPerspectiveDsl.g:20075:2: '*'
+            // InternalPerspectiveDsl.g:20271:1: ( '*' )
+            // InternalPerspectiveDsl.g:20272:2: '*'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2()); 
@@ -65633,16 +66258,16 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__0"
-    // InternalPerspectiveDsl.g:20085:1: rule__QualifiedNameInStaticImport__Group__0 : rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 ;
+    // InternalPerspectiveDsl.g:20282: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:20089:1: ( rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 )
-            // InternalPerspectiveDsl.g:20090:2: rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1
+            // InternalPerspectiveDsl.g:20286:1: ( rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 )
+            // InternalPerspectiveDsl.g:20287:2: rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1
             {
-            pushFollow(FOLLOW_129);
+            pushFollow(FOLLOW_131);
             rule__QualifiedNameInStaticImport__Group__0__Impl();
 
             state._fsp--;
@@ -65671,17 +66296,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__0__Impl"
-    // InternalPerspectiveDsl.g:20097:1: rule__QualifiedNameInStaticImport__Group__0__Impl : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:20294:1: rule__QualifiedNameInStaticImport__Group__0__Impl : ( ruleValidID ) ;
     public final void rule__QualifiedNameInStaticImport__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20101:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:20102:1: ( ruleValidID )
+            // InternalPerspectiveDsl.g:20298:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:20299:1: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:20102:1: ( ruleValidID )
-            // InternalPerspectiveDsl.g:20103:2: ruleValidID
+            // InternalPerspectiveDsl.g:20299:1: ( ruleValidID )
+            // InternalPerspectiveDsl.g:20300:2: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0()); 
@@ -65716,14 +66341,14 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__1"
-    // InternalPerspectiveDsl.g:20112:1: rule__QualifiedNameInStaticImport__Group__1 : rule__QualifiedNameInStaticImport__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:20309: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:20116:1: ( rule__QualifiedNameInStaticImport__Group__1__Impl )
-            // InternalPerspectiveDsl.g:20117:2: rule__QualifiedNameInStaticImport__Group__1__Impl
+            // InternalPerspectiveDsl.g:20313:1: ( rule__QualifiedNameInStaticImport__Group__1__Impl )
+            // InternalPerspectiveDsl.g:20314:2: rule__QualifiedNameInStaticImport__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedNameInStaticImport__Group__1__Impl();
@@ -65749,17 +66374,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__1__Impl"
-    // InternalPerspectiveDsl.g:20123:1: rule__QualifiedNameInStaticImport__Group__1__Impl : ( '.' ) ;
+    // InternalPerspectiveDsl.g:20320:1: rule__QualifiedNameInStaticImport__Group__1__Impl : ( '.' ) ;
     public final void rule__QualifiedNameInStaticImport__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20127:1: ( ( '.' ) )
-            // InternalPerspectiveDsl.g:20128:1: ( '.' )
+            // InternalPerspectiveDsl.g:20324:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:20325:1: ( '.' )
             {
-            // InternalPerspectiveDsl.g:20128:1: ( '.' )
-            // InternalPerspectiveDsl.g:20129:2: '.'
+            // InternalPerspectiveDsl.g:20325:1: ( '.' )
+            // InternalPerspectiveDsl.g:20326:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1()); 
@@ -65790,17 +66415,17 @@
 
 
     // $ANTLR start "rule__Perspective__UnorderedGroup_5"
-    // InternalPerspectiveDsl.g:20139:1: rule__Perspective__UnorderedGroup_5 : ( rule__Perspective__UnorderedGroup_5__0 )? ;
+    // InternalPerspectiveDsl.g:20336: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:20144:1: ( ( rule__Perspective__UnorderedGroup_5__0 )? )
-            // InternalPerspectiveDsl.g:20145:2: ( rule__Perspective__UnorderedGroup_5__0 )?
+            // InternalPerspectiveDsl.g:20341:1: ( ( rule__Perspective__UnorderedGroup_5__0 )? )
+            // InternalPerspectiveDsl.g:20342:2: ( rule__Perspective__UnorderedGroup_5__0 )?
             {
-            // InternalPerspectiveDsl.g:20145:2: ( rule__Perspective__UnorderedGroup_5__0 )?
+            // InternalPerspectiveDsl.g:20342:2: ( rule__Perspective__UnorderedGroup_5__0 )?
             int alt143=2;
             int LA143_0 = input.LA(1);
 
@@ -65848,17 +66473,17 @@
 
 
     // $ANTLR start "rule__Perspective__UnorderedGroup_5__Impl"
-    // InternalPerspectiveDsl.g:20153: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:20350: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:20158:1: ( ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) ) )
-            // InternalPerspectiveDsl.g:20159:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) )
+            // InternalPerspectiveDsl.g:20355:1: ( ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) ) )
+            // InternalPerspectiveDsl.g:20356:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) )
             {
-            // InternalPerspectiveDsl.g:20159:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) )
+            // InternalPerspectiveDsl.g:20356:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) )
             int alt144=3;
             int LA144_0 = input.LA(1);
 
@@ -65880,28 +66505,28 @@
             }
             switch (alt144) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:20160:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20357:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20160:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20161:4: {...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:20357:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20358: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:20161:107: ( ( ( rule__Perspective__Group_5_0__0 ) ) )
-                    // InternalPerspectiveDsl.g:20162:5: ( ( rule__Perspective__Group_5_0__0 ) )
+                    // InternalPerspectiveDsl.g:20358:107: ( ( ( rule__Perspective__Group_5_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:20359:5: ( ( rule__Perspective__Group_5_0__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20168:5: ( ( rule__Perspective__Group_5_0__0 ) )
-                    // InternalPerspectiveDsl.g:20169:6: ( rule__Perspective__Group_5_0__0 )
+                    // InternalPerspectiveDsl.g:20365:5: ( ( rule__Perspective__Group_5_0__0 ) )
+                    // InternalPerspectiveDsl.g:20366:6: ( rule__Perspective__Group_5_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveAccess().getGroup_5_0()); 
                     }
-                    // InternalPerspectiveDsl.g:20170:6: ( rule__Perspective__Group_5_0__0 )
-                    // InternalPerspectiveDsl.g:20170:7: rule__Perspective__Group_5_0__0
+                    // InternalPerspectiveDsl.g:20367:6: ( rule__Perspective__Group_5_0__0 )
+                    // InternalPerspectiveDsl.g:20367:7: rule__Perspective__Group_5_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Perspective__Group_5_0__0();
@@ -65927,28 +66552,28 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:20175:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20372:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20175:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20176:4: {...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:20372:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20373: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:20176:107: ( ( ( rule__Perspective__Group_5_1__0 ) ) )
-                    // InternalPerspectiveDsl.g:20177:5: ( ( rule__Perspective__Group_5_1__0 ) )
+                    // InternalPerspectiveDsl.g:20373:107: ( ( ( rule__Perspective__Group_5_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:20374:5: ( ( rule__Perspective__Group_5_1__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20183:5: ( ( rule__Perspective__Group_5_1__0 ) )
-                    // InternalPerspectiveDsl.g:20184:6: ( rule__Perspective__Group_5_1__0 )
+                    // InternalPerspectiveDsl.g:20380:5: ( ( rule__Perspective__Group_5_1__0 ) )
+                    // InternalPerspectiveDsl.g:20381:6: ( rule__Perspective__Group_5_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveAccess().getGroup_5_1()); 
                     }
-                    // InternalPerspectiveDsl.g:20185:6: ( rule__Perspective__Group_5_1__0 )
-                    // InternalPerspectiveDsl.g:20185:7: rule__Perspective__Group_5_1__0
+                    // InternalPerspectiveDsl.g:20382:6: ( rule__Perspective__Group_5_1__0 )
+                    // InternalPerspectiveDsl.g:20382:7: rule__Perspective__Group_5_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Perspective__Group_5_1__0();
@@ -65974,28 +66599,28 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:20190:3: ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20387:3: ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20190:3: ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20191:4: {...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:20387:3: ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20388: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:20191:107: ( ( ( rule__Perspective__Group_5_2__0 ) ) )
-                    // InternalPerspectiveDsl.g:20192:5: ( ( rule__Perspective__Group_5_2__0 ) )
+                    // InternalPerspectiveDsl.g:20388:107: ( ( ( rule__Perspective__Group_5_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:20389:5: ( ( rule__Perspective__Group_5_2__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20198:5: ( ( rule__Perspective__Group_5_2__0 ) )
-                    // InternalPerspectiveDsl.g:20199:6: ( rule__Perspective__Group_5_2__0 )
+                    // InternalPerspectiveDsl.g:20395:5: ( ( rule__Perspective__Group_5_2__0 ) )
+                    // InternalPerspectiveDsl.g:20396:6: ( rule__Perspective__Group_5_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveAccess().getGroup_5_2()); 
                     }
-                    // InternalPerspectiveDsl.g:20200:6: ( rule__Perspective__Group_5_2__0 )
-                    // InternalPerspectiveDsl.g:20200:7: rule__Perspective__Group_5_2__0
+                    // InternalPerspectiveDsl.g:20397:6: ( rule__Perspective__Group_5_2__0 )
+                    // InternalPerspectiveDsl.g:20397:7: rule__Perspective__Group_5_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Perspective__Group_5_2__0();
@@ -66044,21 +66669,21 @@
 
 
     // $ANTLR start "rule__Perspective__UnorderedGroup_5__0"
-    // InternalPerspectiveDsl.g:20213:1: rule__Perspective__UnorderedGroup_5__0 : rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__1 )? ;
+    // InternalPerspectiveDsl.g:20410: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:20217:1: ( rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__1 )? )
-            // InternalPerspectiveDsl.g:20218:2: rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__1 )?
+            // InternalPerspectiveDsl.g:20414:1: ( rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__1 )? )
+            // InternalPerspectiveDsl.g:20415:2: rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__1 )?
             {
-            pushFollow(FOLLOW_137);
+            pushFollow(FOLLOW_139);
             rule__Perspective__UnorderedGroup_5__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:20219:2: ( rule__Perspective__UnorderedGroup_5__1 )?
+            // InternalPerspectiveDsl.g:20416:2: ( rule__Perspective__UnorderedGroup_5__1 )?
             int alt145=2;
             int LA145_0 = input.LA(1);
 
@@ -66105,21 +66730,21 @@
 
 
     // $ANTLR start "rule__Perspective__UnorderedGroup_5__1"
-    // InternalPerspectiveDsl.g:20225:1: rule__Perspective__UnorderedGroup_5__1 : rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__2 )? ;
+    // InternalPerspectiveDsl.g:20422: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:20229:1: ( rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__2 )? )
-            // InternalPerspectiveDsl.g:20230:2: rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__2 )?
+            // InternalPerspectiveDsl.g:20426:1: ( rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__2 )? )
+            // InternalPerspectiveDsl.g:20427:2: rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__2 )?
             {
-            pushFollow(FOLLOW_137);
+            pushFollow(FOLLOW_139);
             rule__Perspective__UnorderedGroup_5__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:20231:2: ( rule__Perspective__UnorderedGroup_5__2 )?
+            // InternalPerspectiveDsl.g:20428:2: ( rule__Perspective__UnorderedGroup_5__2 )?
             int alt146=2;
             int LA146_0 = input.LA(1);
 
@@ -66166,14 +66791,14 @@
 
 
     // $ANTLR start "rule__Perspective__UnorderedGroup_5__2"
-    // InternalPerspectiveDsl.g:20237:1: rule__Perspective__UnorderedGroup_5__2 : rule__Perspective__UnorderedGroup_5__Impl ;
+    // InternalPerspectiveDsl.g:20434: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:20241:1: ( rule__Perspective__UnorderedGroup_5__Impl )
-            // InternalPerspectiveDsl.g:20242:2: rule__Perspective__UnorderedGroup_5__Impl
+            // InternalPerspectiveDsl.g:20438:1: ( rule__Perspective__UnorderedGroup_5__Impl )
+            // InternalPerspectiveDsl.g:20439:2: rule__Perspective__UnorderedGroup_5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__UnorderedGroup_5__Impl();
@@ -66199,17 +66824,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3"
-    // InternalPerspectiveDsl.g:20249:1: rule__PerspectiveSashContainer__UnorderedGroup_3 : ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )? ;
+    // InternalPerspectiveDsl.g:20446: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:20254:1: ( ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )? )
-            // InternalPerspectiveDsl.g:20255:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )?
+            // InternalPerspectiveDsl.g:20451:1: ( ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )? )
+            // InternalPerspectiveDsl.g:20452:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )?
             {
-            // InternalPerspectiveDsl.g:20255:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )?
+            // InternalPerspectiveDsl.g:20452:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )?
             int alt147=2;
             int LA147_0 = input.LA(1);
 
@@ -66260,17 +66885,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3__Impl"
-    // InternalPerspectiveDsl.g:20263: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:20460: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:20268: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:20269: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:20465: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:20466: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:20269: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:20466:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) ) )
             int alt148=4;
             int LA148_0 = input.LA(1);
 
@@ -66295,28 +66920,28 @@
             }
             switch (alt148) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:20270:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20467:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20270:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20271:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:20467:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20468: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:20271:120: ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
-                    // InternalPerspectiveDsl.g:20272:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:20468:120: ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:20469:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20278:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
-                    // InternalPerspectiveDsl.g:20279:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:20475:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:20476:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_0()); 
                     }
-                    // InternalPerspectiveDsl.g:20280:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
-                    // InternalPerspectiveDsl.g:20280:7: rule__PerspectiveSashContainer__Group_3_0__0
+                    // InternalPerspectiveDsl.g:20477:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:20477:7: rule__PerspectiveSashContainer__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectiveSashContainer__Group_3_0__0();
@@ -66342,28 +66967,28 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:20285:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20482:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20285:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20286:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:20482:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20483: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:20286:120: ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
-                    // InternalPerspectiveDsl.g:20287:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:20483:120: ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:20484:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20293:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
-                    // InternalPerspectiveDsl.g:20294:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:20490:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:20491:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_1()); 
                     }
-                    // InternalPerspectiveDsl.g:20295:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
-                    // InternalPerspectiveDsl.g:20295:7: rule__PerspectiveSashContainer__Group_3_1__0
+                    // InternalPerspectiveDsl.g:20492:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:20492:7: rule__PerspectiveSashContainer__Group_3_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectiveSashContainer__Group_3_1__0();
@@ -66389,28 +67014,28 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:20300:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20497:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20300:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20301:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:20497:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20498: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:20301:120: ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
-                    // InternalPerspectiveDsl.g:20302:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
+                    // InternalPerspectiveDsl.g:20498:120: ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:20499:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20308:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
-                    // InternalPerspectiveDsl.g:20309:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
+                    // InternalPerspectiveDsl.g:20505:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
+                    // InternalPerspectiveDsl.g:20506:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_2()); 
                     }
-                    // InternalPerspectiveDsl.g:20310:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
-                    // InternalPerspectiveDsl.g:20310:7: rule__PerspectiveSashContainer__Group_3_2__0
+                    // InternalPerspectiveDsl.g:20507:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
+                    // InternalPerspectiveDsl.g:20507:7: rule__PerspectiveSashContainer__Group_3_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectiveSashContainer__Group_3_2__0();
@@ -66436,28 +67061,28 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:20315:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20512:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20315:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20316:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) )
+                    // InternalPerspectiveDsl.g:20512:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20513: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:20316:120: ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) )
-                    // InternalPerspectiveDsl.g:20317:5: ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) )
+                    // InternalPerspectiveDsl.g:20513:120: ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) )
+                    // InternalPerspectiveDsl.g:20514:5: ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20323:5: ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) )
-                    // InternalPerspectiveDsl.g:20324:6: ( rule__PerspectiveSashContainer__Group_3_3__0 )
+                    // InternalPerspectiveDsl.g:20520:5: ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) )
+                    // InternalPerspectiveDsl.g:20521:6: ( rule__PerspectiveSashContainer__Group_3_3__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_3()); 
                     }
-                    // InternalPerspectiveDsl.g:20325:6: ( rule__PerspectiveSashContainer__Group_3_3__0 )
-                    // InternalPerspectiveDsl.g:20325:7: rule__PerspectiveSashContainer__Group_3_3__0
+                    // InternalPerspectiveDsl.g:20522:6: ( rule__PerspectiveSashContainer__Group_3_3__0 )
+                    // InternalPerspectiveDsl.g:20522:7: rule__PerspectiveSashContainer__Group_3_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectiveSashContainer__Group_3_3__0();
@@ -66506,21 +67131,21 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3__0"
-    // InternalPerspectiveDsl.g:20338:1: rule__PerspectiveSashContainer__UnorderedGroup_3__0 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )? ;
+    // InternalPerspectiveDsl.g:20535: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:20342:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )? )
-            // InternalPerspectiveDsl.g:20343:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )?
+            // InternalPerspectiveDsl.g:20539:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )? )
+            // InternalPerspectiveDsl.g:20540:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )?
             {
-            pushFollow(FOLLOW_138);
+            pushFollow(FOLLOW_140);
             rule__PerspectiveSashContainer__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:20344:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )?
+            // InternalPerspectiveDsl.g:20541:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )?
             int alt149=2;
             int LA149_0 = input.LA(1);
 
@@ -66570,21 +67195,21 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3__1"
-    // InternalPerspectiveDsl.g:20350:1: rule__PerspectiveSashContainer__UnorderedGroup_3__1 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )? ;
+    // InternalPerspectiveDsl.g:20547: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:20354:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )? )
-            // InternalPerspectiveDsl.g:20355:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )?
+            // InternalPerspectiveDsl.g:20551:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )? )
+            // InternalPerspectiveDsl.g:20552:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )?
             {
-            pushFollow(FOLLOW_138);
+            pushFollow(FOLLOW_140);
             rule__PerspectiveSashContainer__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:20356:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )?
+            // InternalPerspectiveDsl.g:20553:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )?
             int alt150=2;
             int LA150_0 = input.LA(1);
 
@@ -66634,21 +67259,21 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3__2"
-    // InternalPerspectiveDsl.g:20362:1: rule__PerspectiveSashContainer__UnorderedGroup_3__2 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )? ;
+    // InternalPerspectiveDsl.g:20559: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:20366:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )? )
-            // InternalPerspectiveDsl.g:20367:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )?
+            // InternalPerspectiveDsl.g:20563:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )? )
+            // InternalPerspectiveDsl.g:20564:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )?
             {
-            pushFollow(FOLLOW_138);
+            pushFollow(FOLLOW_140);
             rule__PerspectiveSashContainer__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:20368:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )?
+            // InternalPerspectiveDsl.g:20565:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )?
             int alt151=2;
             int LA151_0 = input.LA(1);
 
@@ -66698,14 +67323,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3__3"
-    // InternalPerspectiveDsl.g:20374:1: rule__PerspectiveSashContainer__UnorderedGroup_3__3 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ;
+    // InternalPerspectiveDsl.g:20571: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:20378:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl )
-            // InternalPerspectiveDsl.g:20379:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl
+            // InternalPerspectiveDsl.g:20575:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl )
+            // InternalPerspectiveDsl.g:20576:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSashContainer__UnorderedGroup_3__Impl();
@@ -66731,17 +67356,17 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3"
-    // InternalPerspectiveDsl.g:20386:1: rule__PerspectivePartStack__UnorderedGroup_3 : ( rule__PerspectivePartStack__UnorderedGroup_3__0 )? ;
+    // InternalPerspectiveDsl.g:20583: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:20391:1: ( ( rule__PerspectivePartStack__UnorderedGroup_3__0 )? )
-            // InternalPerspectiveDsl.g:20392:2: ( rule__PerspectivePartStack__UnorderedGroup_3__0 )?
+            // InternalPerspectiveDsl.g:20588:1: ( ( rule__PerspectivePartStack__UnorderedGroup_3__0 )? )
+            // InternalPerspectiveDsl.g:20589:2: ( rule__PerspectivePartStack__UnorderedGroup_3__0 )?
             {
-            // InternalPerspectiveDsl.g:20392:2: ( rule__PerspectivePartStack__UnorderedGroup_3__0 )?
+            // InternalPerspectiveDsl.g:20589:2: ( rule__PerspectivePartStack__UnorderedGroup_3__0 )?
             int alt152=2;
             int LA152_0 = input.LA(1);
 
@@ -66789,17 +67414,17 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3__Impl"
-    // InternalPerspectiveDsl.g:20400: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:20597:1: rule__PerspectivePartStack__UnorderedGroup_3__Impl : ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) ) ;
     public final void rule__PerspectivePartStack__UnorderedGroup_3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         		boolean selected = false;
         	
         try {
-            // InternalPerspectiveDsl.g:20405:1: ( ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) ) )
-            // InternalPerspectiveDsl.g:20406:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) )
+            // InternalPerspectiveDsl.g:20602:1: ( ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) ) )
+            // InternalPerspectiveDsl.g:20603:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) )
             {
-            // InternalPerspectiveDsl.g:20406:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) )
+            // InternalPerspectiveDsl.g:20603:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) )
             int alt153=3;
             int LA153_0 = input.LA(1);
 
@@ -66821,28 +67446,28 @@
             }
             switch (alt153) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:20407:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20604:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20407:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20408:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:20604:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20605: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:20408:116: ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
-                    // InternalPerspectiveDsl.g:20409:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:20605:116: ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:20606:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20415:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
-                    // InternalPerspectiveDsl.g:20416:6: ( rule__PerspectivePartStack__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:20612:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:20613:6: ( rule__PerspectivePartStack__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_0()); 
                     }
-                    // InternalPerspectiveDsl.g:20417:6: ( rule__PerspectivePartStack__Group_3_0__0 )
-                    // InternalPerspectiveDsl.g:20417:7: rule__PerspectivePartStack__Group_3_0__0
+                    // InternalPerspectiveDsl.g:20614:6: ( rule__PerspectivePartStack__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:20614:7: rule__PerspectivePartStack__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePartStack__Group_3_0__0();
@@ -66868,28 +67493,28 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:20422:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20619:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20422:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20423:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:20619:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20620: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:20423:116: ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
-                    // InternalPerspectiveDsl.g:20424:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:20620:116: ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:20621:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20430:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
-                    // InternalPerspectiveDsl.g:20431:6: ( rule__PerspectivePartStack__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:20627:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:20628:6: ( rule__PerspectivePartStack__Group_3_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_1()); 
                     }
-                    // InternalPerspectiveDsl.g:20432:6: ( rule__PerspectivePartStack__Group_3_1__0 )
-                    // InternalPerspectiveDsl.g:20432:7: rule__PerspectivePartStack__Group_3_1__0
+                    // InternalPerspectiveDsl.g:20629:6: ( rule__PerspectivePartStack__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:20629:7: rule__PerspectivePartStack__Group_3_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePartStack__Group_3_1__0();
@@ -66915,28 +67540,28 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:20437:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20634:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20437:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20438:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:20634:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20635: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:20438:116: ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) )
-                    // InternalPerspectiveDsl.g:20439:5: ( ( rule__PerspectivePartStack__Group_3_2__0 ) )
+                    // InternalPerspectiveDsl.g:20635:116: ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:20636:5: ( ( rule__PerspectivePartStack__Group_3_2__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20445:5: ( ( rule__PerspectivePartStack__Group_3_2__0 ) )
-                    // InternalPerspectiveDsl.g:20446:6: ( rule__PerspectivePartStack__Group_3_2__0 )
+                    // InternalPerspectiveDsl.g:20642:5: ( ( rule__PerspectivePartStack__Group_3_2__0 ) )
+                    // InternalPerspectiveDsl.g:20643:6: ( rule__PerspectivePartStack__Group_3_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_2()); 
                     }
-                    // InternalPerspectiveDsl.g:20447:6: ( rule__PerspectivePartStack__Group_3_2__0 )
-                    // InternalPerspectiveDsl.g:20447:7: rule__PerspectivePartStack__Group_3_2__0
+                    // InternalPerspectiveDsl.g:20644:6: ( rule__PerspectivePartStack__Group_3_2__0 )
+                    // InternalPerspectiveDsl.g:20644:7: rule__PerspectivePartStack__Group_3_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePartStack__Group_3_2__0();
@@ -66985,21 +67610,21 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3__0"
-    // InternalPerspectiveDsl.g:20460:1: rule__PerspectivePartStack__UnorderedGroup_3__0 : rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__1 )? ;
+    // InternalPerspectiveDsl.g:20657: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:20464:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__1 )? )
-            // InternalPerspectiveDsl.g:20465:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__1 )?
+            // InternalPerspectiveDsl.g:20661:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__1 )? )
+            // InternalPerspectiveDsl.g:20662:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__1 )?
             {
-            pushFollow(FOLLOW_139);
+            pushFollow(FOLLOW_141);
             rule__PerspectivePartStack__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:20466:2: ( rule__PerspectivePartStack__UnorderedGroup_3__1 )?
+            // InternalPerspectiveDsl.g:20663:2: ( rule__PerspectivePartStack__UnorderedGroup_3__1 )?
             int alt154=2;
             int LA154_0 = input.LA(1);
 
@@ -67046,21 +67671,21 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3__1"
-    // InternalPerspectiveDsl.g:20472:1: rule__PerspectivePartStack__UnorderedGroup_3__1 : rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__2 )? ;
+    // InternalPerspectiveDsl.g:20669: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:20476:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__2 )? )
-            // InternalPerspectiveDsl.g:20477:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__2 )?
+            // InternalPerspectiveDsl.g:20673:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__2 )? )
+            // InternalPerspectiveDsl.g:20674:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__2 )?
             {
-            pushFollow(FOLLOW_139);
+            pushFollow(FOLLOW_141);
             rule__PerspectivePartStack__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:20478:2: ( rule__PerspectivePartStack__UnorderedGroup_3__2 )?
+            // InternalPerspectiveDsl.g:20675:2: ( rule__PerspectivePartStack__UnorderedGroup_3__2 )?
             int alt155=2;
             int LA155_0 = input.LA(1);
 
@@ -67107,14 +67732,14 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3__2"
-    // InternalPerspectiveDsl.g:20484:1: rule__PerspectivePartStack__UnorderedGroup_3__2 : rule__PerspectivePartStack__UnorderedGroup_3__Impl ;
+    // InternalPerspectiveDsl.g:20681:1: rule__PerspectivePartStack__UnorderedGroup_3__2 : rule__PerspectivePartStack__UnorderedGroup_3__Impl ;
     public final void rule__PerspectivePartStack__UnorderedGroup_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20488:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl )
-            // InternalPerspectiveDsl.g:20489:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl
+            // InternalPerspectiveDsl.g:20685:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl )
+            // InternalPerspectiveDsl.g:20686:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePartStack__UnorderedGroup_3__Impl();
@@ -67140,17 +67765,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3"
-    // InternalPerspectiveDsl.g:20496:1: rule__PerspectivePart__UnorderedGroup_3 : ( rule__PerspectivePart__UnorderedGroup_3__0 )? ;
+    // InternalPerspectiveDsl.g:20693: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:20501:1: ( ( rule__PerspectivePart__UnorderedGroup_3__0 )? )
-            // InternalPerspectiveDsl.g:20502:2: ( rule__PerspectivePart__UnorderedGroup_3__0 )?
+            // InternalPerspectiveDsl.g:20698:1: ( ( rule__PerspectivePart__UnorderedGroup_3__0 )? )
+            // InternalPerspectiveDsl.g:20699:2: ( rule__PerspectivePart__UnorderedGroup_3__0 )?
             {
-            // InternalPerspectiveDsl.g:20502:2: ( rule__PerspectivePart__UnorderedGroup_3__0 )?
+            // InternalPerspectiveDsl.g:20699:2: ( rule__PerspectivePart__UnorderedGroup_3__0 )?
             int alt156=2;
             int LA156_0 = input.LA(1);
 
@@ -67166,7 +67791,7 @@
             else if ( LA156_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
                 alt156=1;
             }
-            else if ( LA156_0 == 118 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+            else if ( LA156_0 == 120 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
                 alt156=1;
             }
             switch (alt156) {
@@ -67204,17 +67829,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__Impl"
-    // InternalPerspectiveDsl.g:20510: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:20707: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:20515: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:20516: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:20712: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:20713: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:20516: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:20713:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) ) )
             int alt157=5;
             int LA157_0 = input.LA(1);
 
@@ -67230,7 +67855,7 @@
             else if ( LA157_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
                 alt157=4;
             }
-            else if ( LA157_0 == 118 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+            else if ( LA157_0 == 120 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
                 alt157=5;
             }
             else {
@@ -67242,28 +67867,28 @@
             }
             switch (alt157) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:20517:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20714:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20517:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20518:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:20714:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20715: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:20518:111: ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
-                    // InternalPerspectiveDsl.g:20519:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:20715:111: ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:20716:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20525:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
-                    // InternalPerspectiveDsl.g:20526:6: ( rule__PerspectivePart__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:20722:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:20723:6: ( rule__PerspectivePart__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartAccess().getGroup_3_0()); 
                     }
-                    // InternalPerspectiveDsl.g:20527:6: ( rule__PerspectivePart__Group_3_0__0 )
-                    // InternalPerspectiveDsl.g:20527:7: rule__PerspectivePart__Group_3_0__0
+                    // InternalPerspectiveDsl.g:20724:6: ( rule__PerspectivePart__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:20724:7: rule__PerspectivePart__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePart__Group_3_0__0();
@@ -67289,28 +67914,28 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:20532:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20729:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20532:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20533:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:20729:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20730: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:20533:111: ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
-                    // InternalPerspectiveDsl.g:20534:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:20730:111: ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:20731:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20540:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
-                    // InternalPerspectiveDsl.g:20541:6: ( rule__PerspectivePart__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:20737:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:20738:6: ( rule__PerspectivePart__Group_3_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartAccess().getGroup_3_1()); 
                     }
-                    // InternalPerspectiveDsl.g:20542:6: ( rule__PerspectivePart__Group_3_1__0 )
-                    // InternalPerspectiveDsl.g:20542:7: rule__PerspectivePart__Group_3_1__0
+                    // InternalPerspectiveDsl.g:20739:6: ( rule__PerspectivePart__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:20739:7: rule__PerspectivePart__Group_3_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePart__Group_3_1__0();
@@ -67336,28 +67961,28 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:20547:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20744:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20547:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20548:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:20744:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20745: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:20548:111: ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
-                    // InternalPerspectiveDsl.g:20549:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
+                    // InternalPerspectiveDsl.g:20745:111: ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:20746:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20555:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
-                    // InternalPerspectiveDsl.g:20556:6: ( rule__PerspectivePart__Group_3_2__0 )
+                    // InternalPerspectiveDsl.g:20752:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
+                    // InternalPerspectiveDsl.g:20753:6: ( rule__PerspectivePart__Group_3_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartAccess().getGroup_3_2()); 
                     }
-                    // InternalPerspectiveDsl.g:20557:6: ( rule__PerspectivePart__Group_3_2__0 )
-                    // InternalPerspectiveDsl.g:20557:7: rule__PerspectivePart__Group_3_2__0
+                    // InternalPerspectiveDsl.g:20754:6: ( rule__PerspectivePart__Group_3_2__0 )
+                    // InternalPerspectiveDsl.g:20754:7: rule__PerspectivePart__Group_3_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePart__Group_3_2__0();
@@ -67383,28 +68008,28 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:20562:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20759:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20562:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20563:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
+                    // InternalPerspectiveDsl.g:20759:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20760: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:20563:111: ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
-                    // InternalPerspectiveDsl.g:20564:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
+                    // InternalPerspectiveDsl.g:20760:111: ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
+                    // InternalPerspectiveDsl.g:20761:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20570:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
-                    // InternalPerspectiveDsl.g:20571:6: ( rule__PerspectivePart__Group_3_3__0 )
+                    // InternalPerspectiveDsl.g:20767:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
+                    // InternalPerspectiveDsl.g:20768:6: ( rule__PerspectivePart__Group_3_3__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartAccess().getGroup_3_3()); 
                     }
-                    // InternalPerspectiveDsl.g:20572:6: ( rule__PerspectivePart__Group_3_3__0 )
-                    // InternalPerspectiveDsl.g:20572:7: rule__PerspectivePart__Group_3_3__0
+                    // InternalPerspectiveDsl.g:20769:6: ( rule__PerspectivePart__Group_3_3__0 )
+                    // InternalPerspectiveDsl.g:20769:7: rule__PerspectivePart__Group_3_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePart__Group_3_3__0();
@@ -67430,28 +68055,28 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:20577:3: ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) )
+                    // InternalPerspectiveDsl.g:20774:3: ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20577:3: ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) )
-                    // InternalPerspectiveDsl.g:20578:4: {...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) )
+                    // InternalPerspectiveDsl.g:20774:3: ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) )
+                    // InternalPerspectiveDsl.g:20775: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:20578:111: ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) )
-                    // InternalPerspectiveDsl.g:20579:5: ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) )
+                    // InternalPerspectiveDsl.g:20775:111: ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) )
+                    // InternalPerspectiveDsl.g:20776:5: ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20585:5: ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) )
-                    // InternalPerspectiveDsl.g:20586:6: ( rule__PerspectivePart__IsClosableAssignment_3_4 )
+                    // InternalPerspectiveDsl.g:20782:5: ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) )
+                    // InternalPerspectiveDsl.g:20783:6: ( rule__PerspectivePart__IsClosableAssignment_3_4 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartAccess().getIsClosableAssignment_3_4()); 
                     }
-                    // InternalPerspectiveDsl.g:20587:6: ( rule__PerspectivePart__IsClosableAssignment_3_4 )
-                    // InternalPerspectiveDsl.g:20587:7: rule__PerspectivePart__IsClosableAssignment_3_4
+                    // InternalPerspectiveDsl.g:20784:6: ( rule__PerspectivePart__IsClosableAssignment_3_4 )
+                    // InternalPerspectiveDsl.g:20784:7: rule__PerspectivePart__IsClosableAssignment_3_4
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePart__IsClosableAssignment_3_4();
@@ -67500,21 +68125,21 @@
 
 
     // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__0"
-    // InternalPerspectiveDsl.g:20600:1: rule__PerspectivePart__UnorderedGroup_3__0 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__1 )? ;
+    // InternalPerspectiveDsl.g:20797: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:20604:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__1 )? )
-            // InternalPerspectiveDsl.g:20605:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__1 )?
+            // InternalPerspectiveDsl.g:20801:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__1 )? )
+            // InternalPerspectiveDsl.g:20802:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__1 )?
             {
-            pushFollow(FOLLOW_140);
+            pushFollow(FOLLOW_142);
             rule__PerspectivePart__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:20606:2: ( rule__PerspectivePart__UnorderedGroup_3__1 )?
+            // InternalPerspectiveDsl.g:20803:2: ( rule__PerspectivePart__UnorderedGroup_3__1 )?
             int alt158=2;
             int LA158_0 = input.LA(1);
 
@@ -67530,7 +68155,7 @@
             else if ( LA158_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
                 alt158=1;
             }
-            else if ( LA158_0 == 118 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+            else if ( LA158_0 == 120 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
                 alt158=1;
             }
             switch (alt158) {
@@ -67567,21 +68192,21 @@
 
 
     // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__1"
-    // InternalPerspectiveDsl.g:20612:1: rule__PerspectivePart__UnorderedGroup_3__1 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__2 )? ;
+    // InternalPerspectiveDsl.g:20809: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:20616:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__2 )? )
-            // InternalPerspectiveDsl.g:20617:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__2 )?
+            // InternalPerspectiveDsl.g:20813:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__2 )? )
+            // InternalPerspectiveDsl.g:20814:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__2 )?
             {
-            pushFollow(FOLLOW_140);
+            pushFollow(FOLLOW_142);
             rule__PerspectivePart__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:20618:2: ( rule__PerspectivePart__UnorderedGroup_3__2 )?
+            // InternalPerspectiveDsl.g:20815:2: ( rule__PerspectivePart__UnorderedGroup_3__2 )?
             int alt159=2;
             int LA159_0 = input.LA(1);
 
@@ -67597,7 +68222,7 @@
             else if ( LA159_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
                 alt159=1;
             }
-            else if ( LA159_0 == 118 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+            else if ( LA159_0 == 120 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
                 alt159=1;
             }
             switch (alt159) {
@@ -67634,21 +68259,21 @@
 
 
     // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__2"
-    // InternalPerspectiveDsl.g:20624:1: rule__PerspectivePart__UnorderedGroup_3__2 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__3 )? ;
+    // InternalPerspectiveDsl.g:20821: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:20628:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__3 )? )
-            // InternalPerspectiveDsl.g:20629:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__3 )?
+            // InternalPerspectiveDsl.g:20825:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__3 )? )
+            // InternalPerspectiveDsl.g:20826:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__3 )?
             {
-            pushFollow(FOLLOW_140);
+            pushFollow(FOLLOW_142);
             rule__PerspectivePart__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:20630:2: ( rule__PerspectivePart__UnorderedGroup_3__3 )?
+            // InternalPerspectiveDsl.g:20827:2: ( rule__PerspectivePart__UnorderedGroup_3__3 )?
             int alt160=2;
             int LA160_0 = input.LA(1);
 
@@ -67664,7 +68289,7 @@
             else if ( LA160_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
                 alt160=1;
             }
-            else if ( LA160_0 == 118 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+            else if ( LA160_0 == 120 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
                 alt160=1;
             }
             switch (alt160) {
@@ -67701,21 +68326,21 @@
 
 
     // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__3"
-    // InternalPerspectiveDsl.g:20636:1: rule__PerspectivePart__UnorderedGroup_3__3 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__4 )? ;
+    // InternalPerspectiveDsl.g:20833: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:20640:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__4 )? )
-            // InternalPerspectiveDsl.g:20641:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__4 )?
+            // InternalPerspectiveDsl.g:20837:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__4 )? )
+            // InternalPerspectiveDsl.g:20838:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__4 )?
             {
-            pushFollow(FOLLOW_140);
+            pushFollow(FOLLOW_142);
             rule__PerspectivePart__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:20642:2: ( rule__PerspectivePart__UnorderedGroup_3__4 )?
+            // InternalPerspectiveDsl.g:20839:2: ( rule__PerspectivePart__UnorderedGroup_3__4 )?
             int alt161=2;
             int LA161_0 = input.LA(1);
 
@@ -67731,7 +68356,7 @@
             else if ( LA161_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
                 alt161=1;
             }
-            else if ( LA161_0 == 118 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+            else if ( LA161_0 == 120 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
                 alt161=1;
             }
             switch (alt161) {
@@ -67768,14 +68393,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__4"
-    // InternalPerspectiveDsl.g:20648:1: rule__PerspectivePart__UnorderedGroup_3__4 : rule__PerspectivePart__UnorderedGroup_3__Impl ;
+    // InternalPerspectiveDsl.g:20845: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:20652:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl )
-            // InternalPerspectiveDsl.g:20653:2: rule__PerspectivePart__UnorderedGroup_3__Impl
+            // InternalPerspectiveDsl.g:20849:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl )
+            // InternalPerspectiveDsl.g:20850:2: rule__PerspectivePart__UnorderedGroup_3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__UnorderedGroup_3__Impl();
@@ -67801,17 +68426,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__UnorderedGroup_4"
-    // InternalPerspectiveDsl.g:20660:1: rule__PerspectiveSearch__UnorderedGroup_4 : ( rule__PerspectiveSearch__UnorderedGroup_4__0 )? ;
+    // InternalPerspectiveDsl.g:20857: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:20665:1: ( ( rule__PerspectiveSearch__UnorderedGroup_4__0 )? )
-            // InternalPerspectiveDsl.g:20666:2: ( rule__PerspectiveSearch__UnorderedGroup_4__0 )?
+            // InternalPerspectiveDsl.g:20862:1: ( ( rule__PerspectiveSearch__UnorderedGroup_4__0 )? )
+            // InternalPerspectiveDsl.g:20863:2: ( rule__PerspectiveSearch__UnorderedGroup_4__0 )?
             {
-            // InternalPerspectiveDsl.g:20666:2: ( rule__PerspectiveSearch__UnorderedGroup_4__0 )?
+            // InternalPerspectiveDsl.g:20863:2: ( rule__PerspectiveSearch__UnorderedGroup_4__0 )?
             int alt162=2;
             int LA162_0 = input.LA(1);
 
@@ -67856,17 +68481,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__UnorderedGroup_4__Impl"
-    // InternalPerspectiveDsl.g:20674:1: rule__PerspectiveSearch__UnorderedGroup_4__Impl : ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) ) ;
+    // InternalPerspectiveDsl.g:20871: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:20679:1: ( ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) ) )
-            // InternalPerspectiveDsl.g:20680:3: ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) )
+            // InternalPerspectiveDsl.g:20876:1: ( ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) ) )
+            // InternalPerspectiveDsl.g:20877:3: ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) )
             {
-            // InternalPerspectiveDsl.g:20680:3: ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) )
+            // InternalPerspectiveDsl.g:20877:3: ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) )
             int alt163=2;
             int LA163_0 = input.LA(1);
 
@@ -67885,28 +68510,28 @@
             }
             switch (alt163) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:20681:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20878:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20681:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20682:4: {...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:20878:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20879: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:20682:113: ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
-                    // InternalPerspectiveDsl.g:20683:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
+                    // InternalPerspectiveDsl.g:20879:113: ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:20880:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20689:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
-                    // InternalPerspectiveDsl.g:20690:6: ( rule__PerspectiveSearch__Group_4_0__0 )
+                    // InternalPerspectiveDsl.g:20886:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
+                    // InternalPerspectiveDsl.g:20887:6: ( rule__PerspectiveSearch__Group_4_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveSearchAccess().getGroup_4_0()); 
                     }
-                    // InternalPerspectiveDsl.g:20691:6: ( rule__PerspectiveSearch__Group_4_0__0 )
-                    // InternalPerspectiveDsl.g:20691:7: rule__PerspectiveSearch__Group_4_0__0
+                    // InternalPerspectiveDsl.g:20888:6: ( rule__PerspectiveSearch__Group_4_0__0 )
+                    // InternalPerspectiveDsl.g:20888:7: rule__PerspectiveSearch__Group_4_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectiveSearch__Group_4_0__0();
@@ -67932,28 +68557,28 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:20696:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20893:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20696:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20697:4: {...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:20893:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20894: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:20697:113: ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) )
-                    // InternalPerspectiveDsl.g:20698:5: ( ( rule__PerspectiveSearch__Group_4_1__0 ) )
+                    // InternalPerspectiveDsl.g:20894:113: ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:20895:5: ( ( rule__PerspectiveSearch__Group_4_1__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20704:5: ( ( rule__PerspectiveSearch__Group_4_1__0 ) )
-                    // InternalPerspectiveDsl.g:20705:6: ( rule__PerspectiveSearch__Group_4_1__0 )
+                    // InternalPerspectiveDsl.g:20901:5: ( ( rule__PerspectiveSearch__Group_4_1__0 ) )
+                    // InternalPerspectiveDsl.g:20902:6: ( rule__PerspectiveSearch__Group_4_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveSearchAccess().getGroup_4_1()); 
                     }
-                    // InternalPerspectiveDsl.g:20706:6: ( rule__PerspectiveSearch__Group_4_1__0 )
-                    // InternalPerspectiveDsl.g:20706:7: rule__PerspectiveSearch__Group_4_1__0
+                    // InternalPerspectiveDsl.g:20903:6: ( rule__PerspectiveSearch__Group_4_1__0 )
+                    // InternalPerspectiveDsl.g:20903:7: rule__PerspectiveSearch__Group_4_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectiveSearch__Group_4_1__0();
@@ -68002,21 +68627,21 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__UnorderedGroup_4__0"
-    // InternalPerspectiveDsl.g:20719:1: rule__PerspectiveSearch__UnorderedGroup_4__0 : rule__PerspectiveSearch__UnorderedGroup_4__Impl ( rule__PerspectiveSearch__UnorderedGroup_4__1 )? ;
+    // InternalPerspectiveDsl.g:20916: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:20723:1: ( rule__PerspectiveSearch__UnorderedGroup_4__Impl ( rule__PerspectiveSearch__UnorderedGroup_4__1 )? )
-            // InternalPerspectiveDsl.g:20724:2: rule__PerspectiveSearch__UnorderedGroup_4__Impl ( rule__PerspectiveSearch__UnorderedGroup_4__1 )?
+            // InternalPerspectiveDsl.g:20920:1: ( rule__PerspectiveSearch__UnorderedGroup_4__Impl ( rule__PerspectiveSearch__UnorderedGroup_4__1 )? )
+            // InternalPerspectiveDsl.g:20921:2: rule__PerspectiveSearch__UnorderedGroup_4__Impl ( rule__PerspectiveSearch__UnorderedGroup_4__1 )?
             {
-            pushFollow(FOLLOW_141);
+            pushFollow(FOLLOW_143);
             rule__PerspectiveSearch__UnorderedGroup_4__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:20725:2: ( rule__PerspectiveSearch__UnorderedGroup_4__1 )?
+            // InternalPerspectiveDsl.g:20922:2: ( rule__PerspectiveSearch__UnorderedGroup_4__1 )?
             int alt164=2;
             int LA164_0 = input.LA(1);
 
@@ -68060,14 +68685,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__UnorderedGroup_4__1"
-    // InternalPerspectiveDsl.g:20731:1: rule__PerspectiveSearch__UnorderedGroup_4__1 : rule__PerspectiveSearch__UnorderedGroup_4__Impl ;
+    // InternalPerspectiveDsl.g:20928: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:20735:1: ( rule__PerspectiveSearch__UnorderedGroup_4__Impl )
-            // InternalPerspectiveDsl.g:20736:2: rule__PerspectiveSearch__UnorderedGroup_4__Impl
+            // InternalPerspectiveDsl.g:20932:1: ( rule__PerspectiveSearch__UnorderedGroup_4__Impl )
+            // InternalPerspectiveDsl.g:20933:2: rule__PerspectiveSearch__UnorderedGroup_4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__UnorderedGroup_4__Impl();
@@ -68093,17 +68718,17 @@
 
 
     // $ANTLR start "rule__PerspectiveModel__ImportSectionAssignment_0"
-    // InternalPerspectiveDsl.g:20743:1: rule__PerspectiveModel__ImportSectionAssignment_0 : ( ruleXImportSection ) ;
+    // InternalPerspectiveDsl.g:20940:1: rule__PerspectiveModel__ImportSectionAssignment_0 : ( ruleXImportSection ) ;
     public final void rule__PerspectiveModel__ImportSectionAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20747:1: ( ( ruleXImportSection ) )
-            // InternalPerspectiveDsl.g:20748:2: ( ruleXImportSection )
+            // InternalPerspectiveDsl.g:20944:1: ( ( ruleXImportSection ) )
+            // InternalPerspectiveDsl.g:20945:2: ( ruleXImportSection )
             {
-            // InternalPerspectiveDsl.g:20748:2: ( ruleXImportSection )
-            // InternalPerspectiveDsl.g:20749:3: ruleXImportSection
+            // InternalPerspectiveDsl.g:20945:2: ( ruleXImportSection )
+            // InternalPerspectiveDsl.g:20946:3: ruleXImportSection
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); 
@@ -68138,17 +68763,17 @@
 
 
     // $ANTLR start "rule__PerspectiveModel__PackagesAssignment_1"
-    // InternalPerspectiveDsl.g:20758:1: rule__PerspectiveModel__PackagesAssignment_1 : ( rulePerspectivePackage ) ;
+    // InternalPerspectiveDsl.g:20955:1: rule__PerspectiveModel__PackagesAssignment_1 : ( rulePerspectivePackage ) ;
     public final void rule__PerspectiveModel__PackagesAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20762:1: ( ( rulePerspectivePackage ) )
-            // InternalPerspectiveDsl.g:20763:2: ( rulePerspectivePackage )
+            // InternalPerspectiveDsl.g:20959:1: ( ( rulePerspectivePackage ) )
+            // InternalPerspectiveDsl.g:20960:2: ( rulePerspectivePackage )
             {
-            // InternalPerspectiveDsl.g:20763:2: ( rulePerspectivePackage )
-            // InternalPerspectiveDsl.g:20764:3: rulePerspectivePackage
+            // InternalPerspectiveDsl.g:20960:2: ( rulePerspectivePackage )
+            // InternalPerspectiveDsl.g:20961:3: rulePerspectivePackage
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveModelAccess().getPackagesPerspectivePackageParserRuleCall_1_0()); 
@@ -68183,17 +68808,17 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__NameAssignment_2"
-    // InternalPerspectiveDsl.g:20773:1: rule__PerspectivePackage__NameAssignment_2 : ( ruleQualifiedName ) ;
+    // InternalPerspectiveDsl.g:20970:1: rule__PerspectivePackage__NameAssignment_2 : ( ruleQualifiedName ) ;
     public final void rule__PerspectivePackage__NameAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20777:1: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:20778:2: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:20974:1: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:20975:2: ( ruleQualifiedName )
             {
-            // InternalPerspectiveDsl.g:20778:2: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:20779:3: ruleQualifiedName
+            // InternalPerspectiveDsl.g:20975:2: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:20976:3: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
@@ -68228,17 +68853,17 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__PerspectivesAssignment_3_1"
-    // InternalPerspectiveDsl.g:20788:1: rule__PerspectivePackage__PerspectivesAssignment_3_1 : ( rulePerspective ) ;
+    // InternalPerspectiveDsl.g:20985:1: rule__PerspectivePackage__PerspectivesAssignment_3_1 : ( rulePerspective ) ;
     public final void rule__PerspectivePackage__PerspectivesAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20792:1: ( ( rulePerspective ) )
-            // InternalPerspectiveDsl.g:20793:2: ( rulePerspective )
+            // InternalPerspectiveDsl.g:20989:1: ( ( rulePerspective ) )
+            // InternalPerspectiveDsl.g:20990:2: ( rulePerspective )
             {
-            // InternalPerspectiveDsl.g:20793:2: ( rulePerspective )
-            // InternalPerspectiveDsl.g:20794:3: rulePerspective
+            // InternalPerspectiveDsl.g:20990:2: ( rulePerspective )
+            // InternalPerspectiveDsl.g:20991:3: rulePerspective
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePackageAccess().getPerspectivesPerspectiveParserRuleCall_3_1_0()); 
@@ -68273,17 +68898,17 @@
 
 
     // $ANTLR start "rule__Perspective__NameAssignment_2"
-    // InternalPerspectiveDsl.g:20803:1: rule__Perspective__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
+    // InternalPerspectiveDsl.g:21000:1: rule__Perspective__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
     public final void rule__Perspective__NameAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20807:1: ( ( ruleTRANSLATABLEID ) )
-            // InternalPerspectiveDsl.g:20808:2: ( ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:21004:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalPerspectiveDsl.g:21005:2: ( ruleTRANSLATABLEID )
             {
-            // InternalPerspectiveDsl.g:20808:2: ( ruleTRANSLATABLEID )
-            // InternalPerspectiveDsl.g:20809:3: ruleTRANSLATABLEID
+            // InternalPerspectiveDsl.g:21005:2: ( ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:21006:3: ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
@@ -68318,28 +68943,28 @@
 
 
     // $ANTLR start "rule__Perspective__DescriptionAssignment_3_0"
-    // InternalPerspectiveDsl.g:20818:1: rule__Perspective__DescriptionAssignment_3_0 : ( ( 'describedBy' ) ) ;
+    // InternalPerspectiveDsl.g:21015:1: rule__Perspective__DescriptionAssignment_3_0 : ( ( 'describedBy' ) ) ;
     public final void rule__Perspective__DescriptionAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20822:1: ( ( ( 'describedBy' ) ) )
-            // InternalPerspectiveDsl.g:20823:2: ( ( 'describedBy' ) )
+            // InternalPerspectiveDsl.g:21019:1: ( ( ( 'describedBy' ) ) )
+            // InternalPerspectiveDsl.g:21020:2: ( ( 'describedBy' ) )
             {
-            // InternalPerspectiveDsl.g:20823:2: ( ( 'describedBy' ) )
-            // InternalPerspectiveDsl.g:20824:3: ( 'describedBy' )
+            // InternalPerspectiveDsl.g:21020:2: ( ( 'describedBy' ) )
+            // InternalPerspectiveDsl.g:21021:3: ( 'describedBy' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0()); 
             }
-            // InternalPerspectiveDsl.g:20825:3: ( 'describedBy' )
-            // InternalPerspectiveDsl.g:20826:4: 'describedBy'
+            // InternalPerspectiveDsl.g:21022:3: ( 'describedBy' )
+            // InternalPerspectiveDsl.g:21023:4: 'describedBy'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0()); 
             }
-            match(input,117,FOLLOW_2); if (state.failed) return ;
+            match(input,119,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0()); 
             }
@@ -68371,17 +68996,17 @@
 
 
     // $ANTLR start "rule__Perspective__DescriptionValueAssignment_3_1"
-    // InternalPerspectiveDsl.g:20837:1: rule__Perspective__DescriptionValueAssignment_3_1 : ( ruleTRANSLATABLESTRING ) ;
+    // InternalPerspectiveDsl.g:21034:1: rule__Perspective__DescriptionValueAssignment_3_1 : ( ruleTRANSLATABLESTRING ) ;
     public final void rule__Perspective__DescriptionValueAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20841:1: ( ( ruleTRANSLATABLESTRING ) )
-            // InternalPerspectiveDsl.g:20842:2: ( ruleTRANSLATABLESTRING )
+            // InternalPerspectiveDsl.g:21038:1: ( ( ruleTRANSLATABLESTRING ) )
+            // InternalPerspectiveDsl.g:21039:2: ( ruleTRANSLATABLESTRING )
             {
-            // InternalPerspectiveDsl.g:20842:2: ( ruleTRANSLATABLESTRING )
-            // InternalPerspectiveDsl.g:20843:3: ruleTRANSLATABLESTRING
+            // InternalPerspectiveDsl.g:21039:2: ( ruleTRANSLATABLESTRING )
+            // InternalPerspectiveDsl.g:21040:3: ruleTRANSLATABLESTRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
@@ -68416,23 +69041,23 @@
 
 
     // $ANTLR start "rule__Perspective__ProcessAssignment_4_1"
-    // InternalPerspectiveDsl.g:20852:1: rule__Perspective__ProcessAssignment_4_1 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21049:1: rule__Perspective__ProcessAssignment_4_1 : ( ( RULE_ID ) ) ;
     public final void rule__Perspective__ProcessAssignment_4_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20856:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:20857:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21053:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21054:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:20857:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:20858:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21054:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21055:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getProcessBlipCrossReference_4_1_0()); 
             }
-            // InternalPerspectiveDsl.g:20859:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:20860:4: RULE_ID
+            // InternalPerspectiveDsl.g:21056:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21057:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getProcessBlipIDTerminalRuleCall_4_1_0_1()); 
@@ -68469,23 +69094,23 @@
 
 
     // $ANTLR start "rule__Perspective__UserTaskAssignment_4_3"
-    // InternalPerspectiveDsl.g:20871:1: rule__Perspective__UserTaskAssignment_4_3 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21068:1: rule__Perspective__UserTaskAssignment_4_3 : ( ( RULE_ID ) ) ;
     public final void rule__Perspective__UserTaskAssignment_4_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20875:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:20876:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21072:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21073:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:20876:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:20877:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21073:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21074:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskCrossReference_4_3_0()); 
             }
-            // InternalPerspectiveDsl.g:20878:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:20879:4: RULE_ID
+            // InternalPerspectiveDsl.g:21075:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21076:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskIDTerminalRuleCall_4_3_0_1()); 
@@ -68522,17 +69147,17 @@
 
 
     // $ANTLR start "rule__Perspective__IconURIAssignment_5_0_1"
-    // InternalPerspectiveDsl.g:20890:1: rule__Perspective__IconURIAssignment_5_0_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:21087: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:20894:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:20895:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21091:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21092:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:20895:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:20896:3: RULE_STRING
+            // InternalPerspectiveDsl.g:21092:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21093:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getIconURISTRINGTerminalRuleCall_5_0_1_0()); 
@@ -68563,17 +69188,17 @@
 
 
     // $ANTLR start "rule__Perspective__AccessibilityPhraseAssignment_5_1_1"
-    // InternalPerspectiveDsl.g:20905:1: rule__Perspective__AccessibilityPhraseAssignment_5_1_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:21102: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:20909:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:20910:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21106:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21107:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:20910:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:20911:3: RULE_STRING
+            // InternalPerspectiveDsl.g:21107:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21108:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_5_1_1_0()); 
@@ -68604,23 +69229,23 @@
 
 
     // $ANTLR start "rule__Perspective__ToolbarAssignment_5_2_1"
-    // InternalPerspectiveDsl.g:20920:1: rule__Perspective__ToolbarAssignment_5_2_1 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21117: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:20924:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:20925:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21121:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21122:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:20925:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:20926:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21122:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21123:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getToolbarActionToolbarCrossReference_5_2_1_0()); 
             }
-            // InternalPerspectiveDsl.g:20927:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:20928:4: RULE_ID
+            // InternalPerspectiveDsl.g:21124:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21125:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getToolbarActionToolbarIDTerminalRuleCall_5_2_1_0_1()); 
@@ -68657,17 +69282,17 @@
 
 
     // $ANTLR start "rule__Perspective__ElementsAssignment_7"
-    // InternalPerspectiveDsl.g:20939:1: rule__Perspective__ElementsAssignment_7 : ( rulePerspectiveElement ) ;
+    // InternalPerspectiveDsl.g:21136:1: rule__Perspective__ElementsAssignment_7 : ( rulePerspectiveElement ) ;
     public final void rule__Perspective__ElementsAssignment_7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20943:1: ( ( rulePerspectiveElement ) )
-            // InternalPerspectiveDsl.g:20944:2: ( rulePerspectiveElement )
+            // InternalPerspectiveDsl.g:21140:1: ( ( rulePerspectiveElement ) )
+            // InternalPerspectiveDsl.g:21141:2: ( rulePerspectiveElement )
             {
-            // InternalPerspectiveDsl.g:20944:2: ( rulePerspectiveElement )
-            // InternalPerspectiveDsl.g:20945:3: rulePerspectiveElement
+            // InternalPerspectiveDsl.g:21141:2: ( rulePerspectiveElement )
+            // InternalPerspectiveDsl.g:21142:3: rulePerspectiveElement
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getElementsPerspectiveElementParserRuleCall_7_0()); 
@@ -68702,17 +69327,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__ElementIdAssignment_2"
-    // InternalPerspectiveDsl.g:20954:1: rule__PerspectiveSashContainer__ElementIdAssignment_2 : ( RULE_ID ) ;
+    // InternalPerspectiveDsl.g:21151:1: rule__PerspectiveSashContainer__ElementIdAssignment_2 : ( RULE_ID ) ;
     public final void rule__PerspectiveSashContainer__ElementIdAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20958:1: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:20959:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21155:1: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21156:2: ( RULE_ID )
             {
-            // InternalPerspectiveDsl.g:20959:2: ( RULE_ID )
-            // InternalPerspectiveDsl.g:20960:3: RULE_ID
+            // InternalPerspectiveDsl.g:21156:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21157:3: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getElementIdIDTerminalRuleCall_2_0()); 
@@ -68743,17 +69368,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__OrientationAssignment_3_0_1"
-    // InternalPerspectiveDsl.g:20969:1: rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 : ( ruleSashOrientation ) ;
+    // InternalPerspectiveDsl.g:21166: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:20973:1: ( ( ruleSashOrientation ) )
-            // InternalPerspectiveDsl.g:20974:2: ( ruleSashOrientation )
+            // InternalPerspectiveDsl.g:21170:1: ( ( ruleSashOrientation ) )
+            // InternalPerspectiveDsl.g:21171:2: ( ruleSashOrientation )
             {
-            // InternalPerspectiveDsl.g:20974:2: ( ruleSashOrientation )
-            // InternalPerspectiveDsl.g:20975:3: ruleSashOrientation
+            // InternalPerspectiveDsl.g:21171:2: ( ruleSashOrientation )
+            // InternalPerspectiveDsl.g:21172:3: ruleSashOrientation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getOrientationSashOrientationEnumRuleCall_3_0_1_0()); 
@@ -68788,23 +69413,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:20984:1: rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21181: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:20988:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:20989:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21185:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21186:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:20989:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:20990:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21186:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21187:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementCrossReference_3_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:20991:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:20992:4: RULE_ID
+            // InternalPerspectiveDsl.g:21188:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21189:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementIDTerminalRuleCall_3_1_1_0_1()); 
@@ -68841,17 +69466,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1"
-    // InternalPerspectiveDsl.g:21003:1: rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:21200: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:21007:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21008:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21204:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21205:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:21008:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21009:3: RULE_STRING
+            // InternalPerspectiveDsl.g:21205:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21206:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0()); 
@@ -68882,17 +69507,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1"
-    // InternalPerspectiveDsl.g:21018:1: rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:21215: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:21022:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21023:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21219:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21220:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:21023:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21024:3: RULE_STRING
+            // InternalPerspectiveDsl.g:21220:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21221:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0()); 
@@ -68923,17 +69548,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__ElementsAssignment_5"
-    // InternalPerspectiveDsl.g:21033:1: rule__PerspectiveSashContainer__ElementsAssignment_5 : ( rulePerspectiveElement ) ;
+    // InternalPerspectiveDsl.g:21230:1: rule__PerspectiveSashContainer__ElementsAssignment_5 : ( rulePerspectiveElement ) ;
     public final void rule__PerspectiveSashContainer__ElementsAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21037:1: ( ( rulePerspectiveElement ) )
-            // InternalPerspectiveDsl.g:21038:2: ( rulePerspectiveElement )
+            // InternalPerspectiveDsl.g:21234:1: ( ( rulePerspectiveElement ) )
+            // InternalPerspectiveDsl.g:21235:2: ( rulePerspectiveElement )
             {
-            // InternalPerspectiveDsl.g:21038:2: ( rulePerspectiveElement )
-            // InternalPerspectiveDsl.g:21039:3: rulePerspectiveElement
+            // InternalPerspectiveDsl.g:21235:2: ( rulePerspectiveElement )
+            // InternalPerspectiveDsl.g:21236:3: rulePerspectiveElement
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getElementsPerspectiveElementParserRuleCall_5_0()); 
@@ -68968,17 +69593,17 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__ElementIdAssignment_2"
-    // InternalPerspectiveDsl.g:21048:1: rule__PerspectivePartStack__ElementIdAssignment_2 : ( RULE_ID ) ;
+    // InternalPerspectiveDsl.g:21245:1: rule__PerspectivePartStack__ElementIdAssignment_2 : ( RULE_ID ) ;
     public final void rule__PerspectivePartStack__ElementIdAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21052:1: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21053:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21249:1: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21250:2: ( RULE_ID )
             {
-            // InternalPerspectiveDsl.g:21053:2: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21054:3: RULE_ID
+            // InternalPerspectiveDsl.g:21250:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21251:3: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getElementIdIDTerminalRuleCall_2_0()); 
@@ -69009,23 +69634,23 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__SelectedElementAssignment_3_0_1"
-    // InternalPerspectiveDsl.g:21063:1: rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21260: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:21067:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21068:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21264:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21265:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21068:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21069:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21265:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21266:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartCrossReference_3_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:21070:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21071:4: RULE_ID
+            // InternalPerspectiveDsl.g:21267:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21268:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartIDTerminalRuleCall_3_0_1_0_1()); 
@@ -69062,17 +69687,17 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__ContainerDataAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:21082:1: rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:21279:1: rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 : ( RULE_STRING ) ;
     public final void rule__PerspectivePartStack__ContainerDataAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21086:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21087:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21283:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21284:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:21087:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21088:3: RULE_STRING
+            // InternalPerspectiveDsl.g:21284:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21285:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0()); 
@@ -69103,17 +69728,17 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1"
-    // InternalPerspectiveDsl.g:21097:1: rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:21294:1: rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 : ( RULE_STRING ) ;
     public final void rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21101:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21102:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21298:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21299:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:21102:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21103:3: RULE_STRING
+            // InternalPerspectiveDsl.g:21299:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21300:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0()); 
@@ -69144,17 +69769,17 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__ElementsAssignment_5"
-    // InternalPerspectiveDsl.g:21112:1: rule__PerspectivePartStack__ElementsAssignment_5 : ( rulePerspectiveElement ) ;
+    // InternalPerspectiveDsl.g:21309:1: rule__PerspectivePartStack__ElementsAssignment_5 : ( rulePerspectiveElement ) ;
     public final void rule__PerspectivePartStack__ElementsAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21116:1: ( ( rulePerspectiveElement ) )
-            // InternalPerspectiveDsl.g:21117:2: ( rulePerspectiveElement )
+            // InternalPerspectiveDsl.g:21313:1: ( ( rulePerspectiveElement ) )
+            // InternalPerspectiveDsl.g:21314:2: ( rulePerspectiveElement )
             {
-            // InternalPerspectiveDsl.g:21117:2: ( rulePerspectiveElement )
-            // InternalPerspectiveDsl.g:21118:3: rulePerspectiveElement
+            // InternalPerspectiveDsl.g:21314:2: ( rulePerspectiveElement )
+            // InternalPerspectiveDsl.g:21315:3: rulePerspectiveElement
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getElementsPerspectiveElementParserRuleCall_5_0()); 
@@ -69189,17 +69814,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__ElementIdAssignment_2"
-    // InternalPerspectiveDsl.g:21127:1: rule__PerspectivePart__ElementIdAssignment_2 : ( ruleTRANSLATABLEID ) ;
+    // InternalPerspectiveDsl.g:21324:1: rule__PerspectivePart__ElementIdAssignment_2 : ( ruleTRANSLATABLEID ) ;
     public final void rule__PerspectivePart__ElementIdAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21131:1: ( ( ruleTRANSLATABLEID ) )
-            // InternalPerspectiveDsl.g:21132:2: ( ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:21328:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalPerspectiveDsl.g:21329:2: ( ruleTRANSLATABLEID )
             {
-            // InternalPerspectiveDsl.g:21132:2: ( ruleTRANSLATABLEID )
-            // InternalPerspectiveDsl.g:21133:3: ruleTRANSLATABLEID
+            // InternalPerspectiveDsl.g:21329:2: ( ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:21330:3: ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getElementIdTRANSLATABLEIDParserRuleCall_2_0()); 
@@ -69234,17 +69859,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__ContainerDataAssignment_3_0_1"
-    // InternalPerspectiveDsl.g:21142:1: rule__PerspectivePart__ContainerDataAssignment_3_0_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:21339: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:21146:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21147:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21343:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21344:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:21147:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21148:3: RULE_STRING
+            // InternalPerspectiveDsl.g:21344:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21345:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getContainerDataSTRINGTerminalRuleCall_3_0_1_0()); 
@@ -69275,17 +69900,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:21157:1: rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:21354: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:21161:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21162:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21358:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21359:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:21162:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21163:3: RULE_STRING
+            // InternalPerspectiveDsl.g:21359:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21360:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_1_1_0()); 
@@ -69316,17 +69941,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__IconURIAssignment_3_2_1"
-    // InternalPerspectiveDsl.g:21172:1: rule__PerspectivePart__IconURIAssignment_3_2_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:21369: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:21176:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21177:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21373:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21374:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:21177:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21178:3: RULE_STRING
+            // InternalPerspectiveDsl.g:21374:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21375:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getIconURISTRINGTerminalRuleCall_3_2_1_0()); 
@@ -69357,17 +69982,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__ViewAssignment_3_3_1"
-    // InternalPerspectiveDsl.g:21187:1: rule__PerspectivePart__ViewAssignment_3_3_1 : ( rulePerspectiveView ) ;
+    // InternalPerspectiveDsl.g:21384: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:21191:1: ( ( rulePerspectiveView ) )
-            // InternalPerspectiveDsl.g:21192:2: ( rulePerspectiveView )
+            // InternalPerspectiveDsl.g:21388:1: ( ( rulePerspectiveView ) )
+            // InternalPerspectiveDsl.g:21389:2: ( rulePerspectiveView )
             {
-            // InternalPerspectiveDsl.g:21192:2: ( rulePerspectiveView )
-            // InternalPerspectiveDsl.g:21193:3: rulePerspectiveView
+            // InternalPerspectiveDsl.g:21389:2: ( rulePerspectiveView )
+            // InternalPerspectiveDsl.g:21390:3: rulePerspectiveView
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getViewPerspectiveViewParserRuleCall_3_3_1_0()); 
@@ -69402,28 +70027,28 @@
 
 
     // $ANTLR start "rule__PerspectivePart__IsClosableAssignment_3_4"
-    // InternalPerspectiveDsl.g:21202:1: rule__PerspectivePart__IsClosableAssignment_3_4 : ( ( 'isClosable' ) ) ;
+    // InternalPerspectiveDsl.g:21399:1: rule__PerspectivePart__IsClosableAssignment_3_4 : ( ( 'isClosable' ) ) ;
     public final void rule__PerspectivePart__IsClosableAssignment_3_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21206:1: ( ( ( 'isClosable' ) ) )
-            // InternalPerspectiveDsl.g:21207:2: ( ( 'isClosable' ) )
+            // InternalPerspectiveDsl.g:21403:1: ( ( ( 'isClosable' ) ) )
+            // InternalPerspectiveDsl.g:21404:2: ( ( 'isClosable' ) )
             {
-            // InternalPerspectiveDsl.g:21207:2: ( ( 'isClosable' ) )
-            // InternalPerspectiveDsl.g:21208:3: ( 'isClosable' )
+            // InternalPerspectiveDsl.g:21404:2: ( ( 'isClosable' ) )
+            // InternalPerspectiveDsl.g:21405:3: ( 'isClosable' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0()); 
             }
-            // InternalPerspectiveDsl.g:21209:3: ( 'isClosable' )
-            // InternalPerspectiveDsl.g:21210:4: 'isClosable'
+            // InternalPerspectiveDsl.g:21406:3: ( 'isClosable' )
+            // InternalPerspectiveDsl.g:21407:4: 'isClosable'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0()); 
             }
-            match(input,118,FOLLOW_2); if (state.failed) return ;
+            match(input,120,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0()); 
             }
@@ -69455,23 +70080,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSelection__RefAssignment_2"
-    // InternalPerspectiveDsl.g:21221:1: rule__PerspectiveSelection__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21418:1: rule__PerspectiveSelection__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveSelection__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21225:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21226:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21422:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21423:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21226:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21227:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21423:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21424:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSelectionAccess().getRefTableCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:21228:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21229:4: RULE_ID
+            // InternalPerspectiveDsl.g:21425:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21426:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSelectionAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
@@ -69508,23 +70133,23 @@
 
 
     // $ANTLR start "rule__PerspectiveTable__RefAssignment_2"
-    // InternalPerspectiveDsl.g:21240:1: rule__PerspectiveTable__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21437:1: rule__PerspectiveTable__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveTable__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21244:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21245:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21441:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21442:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21245:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21246:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21442:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21443:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTableAccess().getRefTableCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:21247:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21248:4: RULE_ID
+            // InternalPerspectiveDsl.g:21444:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21445:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTableAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
@@ -69561,23 +70186,23 @@
 
 
     // $ANTLR start "rule__PerspectiveGrid__RefAssignment_2"
-    // InternalPerspectiveDsl.g:21259:1: rule__PerspectiveGrid__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21456:1: rule__PerspectiveGrid__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveGrid__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21263:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21264:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21460:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21461:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21264:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21265:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21461:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21462:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveGridAccess().getRefTableCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:21266:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21267:4: RULE_ID
+            // InternalPerspectiveDsl.g:21463:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21464:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveGridAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
@@ -69613,77 +70238,24 @@
     // $ANTLR end "rule__PerspectiveGrid__RefAssignment_2"
 
 
-    // $ANTLR start "rule__PerspectiveBean__RefAssignment_2"
-    // InternalPerspectiveDsl.g:21278:1: rule__PerspectiveBean__RefAssignment_2 : ( ( RULE_ID ) ) ;
-    public final void rule__PerspectiveBean__RefAssignment_2() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalPerspectiveDsl.g:21282:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21283:2: ( ( RULE_ID ) )
-            {
-            // InternalPerspectiveDsl.g:21283:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21284:3: ( RULE_ID )
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectiveBeanAccess().getRefTableCrossReference_2_0()); 
-            }
-            // InternalPerspectiveDsl.g:21285:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21286:4: RULE_ID
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectiveBeanAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
-            }
-            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectiveBeanAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
-            }
-
-            }
-
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectiveBeanAccess().getRefTableCrossReference_2_0()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__PerspectiveBean__RefAssignment_2"
-
-
     // $ANTLR start "rule__PerspectiveChart__RefAssignment_2"
-    // InternalPerspectiveDsl.g:21297:1: rule__PerspectiveChart__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21475:1: rule__PerspectiveChart__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveChart__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21301:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21302:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21479:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21480:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21302:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21303:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21480:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21481:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveChartAccess().getRefChartCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:21304:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21305:4: RULE_ID
+            // InternalPerspectiveDsl.g:21482:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21483:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveChartAccess().getRefChartIDTerminalRuleCall_2_0_1()); 
@@ -69720,23 +70292,23 @@
 
 
     // $ANTLR start "rule__PerspectiveReport__RefAssignment_2"
-    // InternalPerspectiveDsl.g:21316:1: rule__PerspectiveReport__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21494:1: rule__PerspectiveReport__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveReport__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21320:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21321:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21498:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21499:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21321:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21322:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21499:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21500:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveReportAccess().getRefReportCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:21323:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21324:4: RULE_ID
+            // InternalPerspectiveDsl.g:21501:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21502:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveReportAccess().getRefReportIDTerminalRuleCall_2_0_1()); 
@@ -69773,23 +70345,23 @@
 
 
     // $ANTLR start "rule__PerspectiveOrganization__RefAssignment_2"
-    // InternalPerspectiveDsl.g:21335:1: rule__PerspectiveOrganization__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21513:1: rule__PerspectiveOrganization__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveOrganization__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21339:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21340:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21517:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21518:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21340:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21341:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21518:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21519:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:21342:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21343:4: RULE_ID
+            // InternalPerspectiveDsl.g:21520:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21521:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationIDTerminalRuleCall_2_0_1()); 
@@ -69826,23 +70398,23 @@
 
 
     // $ANTLR start "rule__PerspectiveTopology__RefAssignment_2"
-    // InternalPerspectiveDsl.g:21354:1: rule__PerspectiveTopology__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21532:1: rule__PerspectiveTopology__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveTopology__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21358:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21359:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21536:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21537:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21359:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21360:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21537:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21538:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTopologyAccess().getRefTopologyCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:21361:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21362:4: RULE_ID
+            // InternalPerspectiveDsl.g:21539:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21540:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTopologyAccess().getRefTopologyIDTerminalRuleCall_2_0_1()); 
@@ -69879,23 +70451,23 @@
 
 
     // $ANTLR start "rule__PerspectiveDialog__RefAssignment_2"
-    // InternalPerspectiveDsl.g:21373:1: rule__PerspectiveDialog__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21551:1: rule__PerspectiveDialog__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveDialog__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21377:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21378:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21555:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21556:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21378:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21379:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21556:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21557:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDialogAccess().getRefDialogCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:21380:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21381:4: RULE_ID
+            // InternalPerspectiveDsl.g:21558:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21559:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDialogAccess().getRefDialogIDTerminalRuleCall_2_0_1()); 
@@ -69932,23 +70504,23 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__DtoRefAssignment_3"
-    // InternalPerspectiveDsl.g:21392:1: rule__PerspectiveKanban__DtoRefAssignment_3 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21570:1: rule__PerspectiveKanban__DtoRefAssignment_3 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveKanban__DtoRefAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21396:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21397:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21574:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21575:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21397:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21398:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21575:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21576:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getDtoRefLDtoCrossReference_3_0()); 
             }
-            // InternalPerspectiveDsl.g:21399:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21400:4: RULE_ID
+            // InternalPerspectiveDsl.g:21577:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21578:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getDtoRefLDtoIDTerminalRuleCall_3_0_1()); 
@@ -69985,23 +70557,23 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__CardRefAssignment_5"
-    // InternalPerspectiveDsl.g:21411:1: rule__PerspectiveKanban__CardRefAssignment_5 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21589:1: rule__PerspectiveKanban__CardRefAssignment_5 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveKanban__CardRefAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21415:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21416:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21593:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21594:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21416:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21417:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21594:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21595:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getCardRefDialogCrossReference_5_0()); 
             }
-            // InternalPerspectiveDsl.g:21418:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21419:4: RULE_ID
+            // InternalPerspectiveDsl.g:21596:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21597:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getCardRefDialogIDTerminalRuleCall_5_0_1()); 
@@ -70038,23 +70610,23 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__DialogRefAssignment_7"
-    // InternalPerspectiveDsl.g:21430:1: rule__PerspectiveKanban__DialogRefAssignment_7 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21608:1: rule__PerspectiveKanban__DialogRefAssignment_7 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveKanban__DialogRefAssignment_7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21434:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21435:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21612:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21613:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21435:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21436:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21613:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21614:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getDialogRefDialogCrossReference_7_0()); 
             }
-            // InternalPerspectiveDsl.g:21437:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21438:4: RULE_ID
+            // InternalPerspectiveDsl.g:21615:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21616:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getDialogRefDialogIDTerminalRuleCall_7_0_1()); 
@@ -70091,23 +70663,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__DtoRefAssignment_3"
-    // InternalPerspectiveDsl.g:21449:1: rule__PerspectiveSearch__DtoRefAssignment_3 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21627:1: rule__PerspectiveSearch__DtoRefAssignment_3 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveSearch__DtoRefAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21453:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21454:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21631:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21632:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21454:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21455:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21632:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21633:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getDtoRefLDtoCrossReference_3_0()); 
             }
-            // InternalPerspectiveDsl.g:21456:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21457:4: RULE_ID
+            // InternalPerspectiveDsl.g:21634:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21635:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getDtoRefLDtoIDTerminalRuleCall_3_0_1()); 
@@ -70144,17 +70716,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__DepthAssignment_4_0_1"
-    // InternalPerspectiveDsl.g:21468:1: rule__PerspectiveSearch__DepthAssignment_4_0_1 : ( RULE_INT ) ;
+    // InternalPerspectiveDsl.g:21646: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:21472:1: ( ( RULE_INT ) )
-            // InternalPerspectiveDsl.g:21473:2: ( RULE_INT )
+            // InternalPerspectiveDsl.g:21650:1: ( ( RULE_INT ) )
+            // InternalPerspectiveDsl.g:21651:2: ( RULE_INT )
             {
-            // InternalPerspectiveDsl.g:21473:2: ( RULE_INT )
-            // InternalPerspectiveDsl.g:21474:3: RULE_INT
+            // InternalPerspectiveDsl.g:21651:2: ( RULE_INT )
+            // InternalPerspectiveDsl.g:21652:3: RULE_INT
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getDepthINTTerminalRuleCall_4_0_1_0()); 
@@ -70185,17 +70757,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__FilterColsAssignment_4_1_1"
-    // InternalPerspectiveDsl.g:21483:1: rule__PerspectiveSearch__FilterColsAssignment_4_1_1 : ( RULE_INT ) ;
+    // InternalPerspectiveDsl.g:21661: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:21487:1: ( ( RULE_INT ) )
-            // InternalPerspectiveDsl.g:21488:2: ( RULE_INT )
+            // InternalPerspectiveDsl.g:21665:1: ( ( RULE_INT ) )
+            // InternalPerspectiveDsl.g:21666:2: ( RULE_INT )
             {
-            // InternalPerspectiveDsl.g:21488:2: ( RULE_INT )
-            // InternalPerspectiveDsl.g:21489:3: RULE_INT
+            // InternalPerspectiveDsl.g:21666:2: ( RULE_INT )
+            // InternalPerspectiveDsl.g:21667:3: RULE_INT
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getFilterColsINTTerminalRuleCall_4_1_1_0()); 
@@ -70226,23 +70798,23 @@
 
 
     // $ANTLR start "rule__PerspectiveDataInterchange__RefAssignment_2"
-    // InternalPerspectiveDsl.g:21498:1: rule__PerspectiveDataInterchange__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21676:1: rule__PerspectiveDataInterchange__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveDataInterchange__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21502:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21503:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21680:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21681:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21503:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21504:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21681:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21682:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDataInterchangeAccess().getRefDataInterchangePackageCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:21505:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21506:4: RULE_ID
+            // InternalPerspectiveDsl.g:21683:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21684:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDataInterchangeAccess().getRefDataInterchangePackageIDTerminalRuleCall_2_0_1()); 
@@ -70278,24 +70850,106 @@
     // $ANTLR end "rule__PerspectiveDataInterchange__RefAssignment_2"
 
 
+    // $ANTLR start "rule__PerspectiveTitle__HtmlNameAssignment_2"
+    // InternalPerspectiveDsl.g:21695:1: rule__PerspectiveTitle__HtmlNameAssignment_2 : ( RULE_STRING ) ;
+    public final void rule__PerspectiveTitle__HtmlNameAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21699:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21700:2: ( RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:21700:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21701:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTitleAccess().getHtmlNameSTRINGTerminalRuleCall_2_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTitleAccess().getHtmlNameSTRINGTerminalRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTitle__HtmlNameAssignment_2"
+
+
+    // $ANTLR start "rule__PerspectiveDashboard__NameAssignment_2"
+    // InternalPerspectiveDsl.g:21710:1: rule__PerspectiveDashboard__NameAssignment_2 : ( RULE_STRING ) ;
+    public final void rule__PerspectiveDashboard__NameAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21714:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21715:2: ( RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:21715:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21716:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDashboardAccess().getNameSTRINGTerminalRuleCall_2_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDashboardAccess().getNameSTRINGTerminalRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDashboard__NameAssignment_2"
+
+
     // $ANTLR start "rule__XImportDeclaration__StaticAssignment_2_0_0"
-    // InternalPerspectiveDsl.g:21517:1: rule__XImportDeclaration__StaticAssignment_2_0_0 : ( ( 'static' ) ) ;
+    // InternalPerspectiveDsl.g:21725: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:21521:1: ( ( ( 'static' ) ) )
-            // InternalPerspectiveDsl.g:21522:2: ( ( 'static' ) )
+            // InternalPerspectiveDsl.g:21729:1: ( ( ( 'static' ) ) )
+            // InternalPerspectiveDsl.g:21730:2: ( ( 'static' ) )
             {
-            // InternalPerspectiveDsl.g:21522:2: ( ( 'static' ) )
-            // InternalPerspectiveDsl.g:21523:3: ( 'static' )
+            // InternalPerspectiveDsl.g:21730:2: ( ( 'static' ) )
+            // InternalPerspectiveDsl.g:21731:3: ( 'static' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:21524:3: ( 'static' )
-            // InternalPerspectiveDsl.g:21525:4: 'static'
+            // InternalPerspectiveDsl.g:21732:3: ( 'static' )
+            // InternalPerspectiveDsl.g:21733:4: 'static'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
@@ -70332,23 +70986,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ExtensionAssignment_2_0_1"
-    // InternalPerspectiveDsl.g:21536:1: rule__XImportDeclaration__ExtensionAssignment_2_0_1 : ( ( 'extension' ) ) ;
+    // InternalPerspectiveDsl.g:21744: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:21540:1: ( ( ( 'extension' ) ) )
-            // InternalPerspectiveDsl.g:21541:2: ( ( 'extension' ) )
+            // InternalPerspectiveDsl.g:21748:1: ( ( ( 'extension' ) ) )
+            // InternalPerspectiveDsl.g:21749:2: ( ( 'extension' ) )
             {
-            // InternalPerspectiveDsl.g:21541:2: ( ( 'extension' ) )
-            // InternalPerspectiveDsl.g:21542:3: ( 'extension' )
+            // InternalPerspectiveDsl.g:21749:2: ( ( 'extension' ) )
+            // InternalPerspectiveDsl.g:21750:3: ( 'extension' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:21543:3: ( 'extension' )
-            // InternalPerspectiveDsl.g:21544:4: 'extension'
+            // InternalPerspectiveDsl.g:21751:3: ( 'extension' )
+            // InternalPerspectiveDsl.g:21752:4: 'extension'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
@@ -70385,23 +71039,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedTypeAssignment_2_0_2"
-    // InternalPerspectiveDsl.g:21555:1: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 : ( ( ruleQualifiedNameInStaticImport ) ) ;
+    // InternalPerspectiveDsl.g:21763: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:21559:1: ( ( ( ruleQualifiedNameInStaticImport ) ) )
-            // InternalPerspectiveDsl.g:21560:2: ( ( ruleQualifiedNameInStaticImport ) )
+            // InternalPerspectiveDsl.g:21767:1: ( ( ( ruleQualifiedNameInStaticImport ) ) )
+            // InternalPerspectiveDsl.g:21768:2: ( ( ruleQualifiedNameInStaticImport ) )
             {
-            // InternalPerspectiveDsl.g:21560:2: ( ( ruleQualifiedNameInStaticImport ) )
-            // InternalPerspectiveDsl.g:21561:3: ( ruleQualifiedNameInStaticImport )
+            // InternalPerspectiveDsl.g:21768:2: ( ( ruleQualifiedNameInStaticImport ) )
+            // InternalPerspectiveDsl.g:21769:3: ( ruleQualifiedNameInStaticImport )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_0_2_0()); 
             }
-            // InternalPerspectiveDsl.g:21562:3: ( ruleQualifiedNameInStaticImport )
-            // InternalPerspectiveDsl.g:21563:4: ruleQualifiedNameInStaticImport
+            // InternalPerspectiveDsl.g:21770:3: ( ruleQualifiedNameInStaticImport )
+            // InternalPerspectiveDsl.g:21771:4: ruleQualifiedNameInStaticImport
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameInStaticImportParserRuleCall_2_0_2_0_1()); 
@@ -70442,23 +71096,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__WildcardAssignment_2_0_3_0"
-    // InternalPerspectiveDsl.g:21574:1: rule__XImportDeclaration__WildcardAssignment_2_0_3_0 : ( ( '*' ) ) ;
+    // InternalPerspectiveDsl.g:21782: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:21578:1: ( ( ( '*' ) ) )
-            // InternalPerspectiveDsl.g:21579:2: ( ( '*' ) )
+            // InternalPerspectiveDsl.g:21786:1: ( ( ( '*' ) ) )
+            // InternalPerspectiveDsl.g:21787:2: ( ( '*' ) )
             {
-            // InternalPerspectiveDsl.g:21579:2: ( ( '*' ) )
-            // InternalPerspectiveDsl.g:21580:3: ( '*' )
+            // InternalPerspectiveDsl.g:21787:2: ( ( '*' ) )
+            // InternalPerspectiveDsl.g:21788:3: ( '*' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
             }
-            // InternalPerspectiveDsl.g:21581:3: ( '*' )
-            // InternalPerspectiveDsl.g:21582:4: '*'
+            // InternalPerspectiveDsl.g:21789:3: ( '*' )
+            // InternalPerspectiveDsl.g:21790:4: '*'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
@@ -70495,17 +71149,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__MemberNameAssignment_2_0_3_1"
-    // InternalPerspectiveDsl.g:21593:1: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:21801: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:21597:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:21598:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:21805:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:21806:2: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:21598:2: ( ruleValidID )
-            // InternalPerspectiveDsl.g:21599:3: ruleValidID
+            // InternalPerspectiveDsl.g:21806:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:21807:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_2_0_3_1_0()); 
@@ -70540,23 +71194,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedTypeAssignment_2_1"
-    // InternalPerspectiveDsl.g:21608:1: rule__XImportDeclaration__ImportedTypeAssignment_2_1 : ( ( ruleQualifiedName ) ) ;
+    // InternalPerspectiveDsl.g:21816:1: rule__XImportDeclaration__ImportedTypeAssignment_2_1 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XImportDeclaration__ImportedTypeAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21612:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalPerspectiveDsl.g:21613:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:21820:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalPerspectiveDsl.g:21821:2: ( ( ruleQualifiedName ) )
             {
-            // InternalPerspectiveDsl.g:21613:2: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:21614:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:21821:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:21822:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_1_0()); 
             }
-            // InternalPerspectiveDsl.g:21615:3: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:21616:4: ruleQualifiedName
+            // InternalPerspectiveDsl.g:21823:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:21824:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameParserRuleCall_2_1_0_1()); 
@@ -70597,17 +71251,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedNamespaceAssignment_2_2"
-    // InternalPerspectiveDsl.g:21627:1: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 : ( ruleQualifiedNameWithWildcard ) ;
+    // InternalPerspectiveDsl.g:21835:1: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 : ( ruleQualifiedNameWithWildcard ) ;
     public final void rule__XImportDeclaration__ImportedNamespaceAssignment_2_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21631:1: ( ( ruleQualifiedNameWithWildcard ) )
-            // InternalPerspectiveDsl.g:21632:2: ( ruleQualifiedNameWithWildcard )
+            // InternalPerspectiveDsl.g:21839:1: ( ( ruleQualifiedNameWithWildcard ) )
+            // InternalPerspectiveDsl.g:21840:2: ( ruleQualifiedNameWithWildcard )
             {
-            // InternalPerspectiveDsl.g:21632:2: ( ruleQualifiedNameWithWildcard )
-            // InternalPerspectiveDsl.g:21633:3: ruleQualifiedNameWithWildcard
+            // InternalPerspectiveDsl.g:21840:2: ( ruleQualifiedNameWithWildcard )
+            // InternalPerspectiveDsl.g:21841:3: ruleQualifiedNameWithWildcard
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_2_2_0()); 
@@ -70642,28 +71296,28 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__FqnImportAssignment_2_3_0"
-    // InternalPerspectiveDsl.g:21642:1: rule__XImportDeclaration__FqnImportAssignment_2_3_0 : ( ( 'ns' ) ) ;
+    // InternalPerspectiveDsl.g:21850: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:21646:1: ( ( ( 'ns' ) ) )
-            // InternalPerspectiveDsl.g:21647:2: ( ( 'ns' ) )
+            // InternalPerspectiveDsl.g:21854:1: ( ( ( 'ns' ) ) )
+            // InternalPerspectiveDsl.g:21855:2: ( ( 'ns' ) )
             {
-            // InternalPerspectiveDsl.g:21647:2: ( ( 'ns' ) )
-            // InternalPerspectiveDsl.g:21648:3: ( 'ns' )
+            // InternalPerspectiveDsl.g:21855:2: ( ( 'ns' ) )
+            // InternalPerspectiveDsl.g:21856:3: ( 'ns' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
             }
-            // InternalPerspectiveDsl.g:21649:3: ( 'ns' )
-            // InternalPerspectiveDsl.g:21650:4: 'ns'
+            // InternalPerspectiveDsl.g:21857:3: ( 'ns' )
+            // InternalPerspectiveDsl.g:21858:4: 'ns'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_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.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
             }
@@ -70695,17 +71349,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1"
-    // InternalPerspectiveDsl.g:21661:1: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 : ( ruleQualifiedName ) ;
+    // InternalPerspectiveDsl.g:21869: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:21665:1: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:21666:2: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:21873:1: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:21874:2: ( ruleQualifiedName )
             {
-            // InternalPerspectiveDsl.g:21666:2: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:21667:3: ruleQualifiedName
+            // InternalPerspectiveDsl.g:21874:2: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:21875:3: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameQualifiedNameParserRuleCall_2_3_1_0()); 
@@ -70740,23 +71394,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__AnnotationTypeAssignment_2"
-    // InternalPerspectiveDsl.g:21676:1: rule__XAnnotation__AnnotationTypeAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    // InternalPerspectiveDsl.g:21884:1: rule__XAnnotation__AnnotationTypeAssignment_2 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XAnnotation__AnnotationTypeAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21680:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalPerspectiveDsl.g:21681:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:21888:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalPerspectiveDsl.g:21889:2: ( ( ruleQualifiedName ) )
             {
-            // InternalPerspectiveDsl.g:21681:2: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:21682:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:21889:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:21890:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:21683:3: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:21684:4: ruleQualifiedName
+            // InternalPerspectiveDsl.g:21891:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:21892:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeQualifiedNameParserRuleCall_2_0_1()); 
@@ -70797,17 +71451,17 @@
 
 
     // $ANTLR start "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0"
-    // InternalPerspectiveDsl.g:21695:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 : ( ruleXAnnotationElementValuePair ) ;
+    // InternalPerspectiveDsl.g:21903: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:21699:1: ( ( ruleXAnnotationElementValuePair ) )
-            // InternalPerspectiveDsl.g:21700:2: ( ruleXAnnotationElementValuePair )
+            // InternalPerspectiveDsl.g:21907:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalPerspectiveDsl.g:21908:2: ( ruleXAnnotationElementValuePair )
             {
-            // InternalPerspectiveDsl.g:21700:2: ( ruleXAnnotationElementValuePair )
-            // InternalPerspectiveDsl.g:21701:3: ruleXAnnotationElementValuePair
+            // InternalPerspectiveDsl.g:21908:2: ( ruleXAnnotationElementValuePair )
+            // InternalPerspectiveDsl.g:21909:3: ruleXAnnotationElementValuePair
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); 
@@ -70842,17 +71496,17 @@
 
 
     // $ANTLR start "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1"
-    // InternalPerspectiveDsl.g:21710:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 : ( ruleXAnnotationElementValuePair ) ;
+    // InternalPerspectiveDsl.g:21918: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:21714:1: ( ( ruleXAnnotationElementValuePair ) )
-            // InternalPerspectiveDsl.g:21715:2: ( ruleXAnnotationElementValuePair )
+            // InternalPerspectiveDsl.g:21922:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalPerspectiveDsl.g:21923:2: ( ruleXAnnotationElementValuePair )
             {
-            // InternalPerspectiveDsl.g:21715:2: ( ruleXAnnotationElementValuePair )
-            // InternalPerspectiveDsl.g:21716:3: ruleXAnnotationElementValuePair
+            // InternalPerspectiveDsl.g:21923:2: ( ruleXAnnotationElementValuePair )
+            // InternalPerspectiveDsl.g:21924:3: ruleXAnnotationElementValuePair
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
@@ -70887,17 +71541,17 @@
 
 
     // $ANTLR start "rule__XAnnotation__ValueAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:21725:1: rule__XAnnotation__ValueAssignment_3_1_1 : ( ruleXAnnotationElementValueOrCommaList ) ;
+    // InternalPerspectiveDsl.g:21933: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:21729:1: ( ( ruleXAnnotationElementValueOrCommaList ) )
-            // InternalPerspectiveDsl.g:21730:2: ( ruleXAnnotationElementValueOrCommaList )
+            // InternalPerspectiveDsl.g:21937:1: ( ( ruleXAnnotationElementValueOrCommaList ) )
+            // InternalPerspectiveDsl.g:21938:2: ( ruleXAnnotationElementValueOrCommaList )
             {
-            // InternalPerspectiveDsl.g:21730:2: ( ruleXAnnotationElementValueOrCommaList )
-            // InternalPerspectiveDsl.g:21731:3: ruleXAnnotationElementValueOrCommaList
+            // InternalPerspectiveDsl.g:21938:2: ( ruleXAnnotationElementValueOrCommaList )
+            // InternalPerspectiveDsl.g:21939:3: ruleXAnnotationElementValueOrCommaList
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
@@ -70932,23 +71586,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0"
-    // InternalPerspectiveDsl.g:21740:1: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 : ( ( ruleValidID ) ) ;
+    // InternalPerspectiveDsl.g:21948: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:21744:1: ( ( ( ruleValidID ) ) )
-            // InternalPerspectiveDsl.g:21745:2: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:21952:1: ( ( ( ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:21953:2: ( ( ruleValidID ) )
             {
-            // InternalPerspectiveDsl.g:21745:2: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:21746:3: ( ruleValidID )
+            // InternalPerspectiveDsl.g:21953:2: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:21954:3: ( ruleValidID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:21747:3: ( ruleValidID )
-            // InternalPerspectiveDsl.g:21748:4: ruleValidID
+            // InternalPerspectiveDsl.g:21955:3: ( ruleValidID )
+            // InternalPerspectiveDsl.g:21956:4: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationValidIDParserRuleCall_0_0_0_0_1()); 
@@ -70989,17 +71643,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__ValueAssignment_1"
-    // InternalPerspectiveDsl.g:21759:1: rule__XAnnotationElementValuePair__ValueAssignment_1 : ( ruleXAnnotationElementValue ) ;
+    // InternalPerspectiveDsl.g:21967:1: rule__XAnnotationElementValuePair__ValueAssignment_1 : ( ruleXAnnotationElementValue ) ;
     public final void rule__XAnnotationElementValuePair__ValueAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21763:1: ( ( ruleXAnnotationElementValue ) )
-            // InternalPerspectiveDsl.g:21764:2: ( ruleXAnnotationElementValue )
+            // InternalPerspectiveDsl.g:21971:1: ( ( ruleXAnnotationElementValue ) )
+            // InternalPerspectiveDsl.g:21972:2: ( ruleXAnnotationElementValue )
             {
-            // InternalPerspectiveDsl.g:21764:2: ( ruleXAnnotationElementValue )
-            // InternalPerspectiveDsl.g:21765:3: ruleXAnnotationElementValue
+            // InternalPerspectiveDsl.g:21972:2: ( ruleXAnnotationElementValue )
+            // InternalPerspectiveDsl.g:21973:3: ruleXAnnotationElementValue
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
@@ -71034,17 +71688,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0"
-    // InternalPerspectiveDsl.g:21774:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    // InternalPerspectiveDsl.g:21982: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:21778:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalPerspectiveDsl.g:21779:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:21986:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:21987:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalPerspectiveDsl.g:21779:2: ( ruleXAnnotationOrExpression )
-            // InternalPerspectiveDsl.g:21780:3: ruleXAnnotationOrExpression
+            // InternalPerspectiveDsl.g:21987:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:21988:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
@@ -71079,17 +71733,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1"
-    // InternalPerspectiveDsl.g:21789:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
+    // InternalPerspectiveDsl.g:21997: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:21793:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalPerspectiveDsl.g:21794:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22001:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:22002:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalPerspectiveDsl.g:21794:2: ( ruleXAnnotationOrExpression )
-            // InternalPerspectiveDsl.g:21795:3: ruleXAnnotationOrExpression
+            // InternalPerspectiveDsl.g:22002:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22003:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
@@ -71124,17 +71778,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1"
-    // InternalPerspectiveDsl.g:21804:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 : ( ruleXAnnotationOrExpression ) ;
+    // InternalPerspectiveDsl.g:22012: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:21808:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalPerspectiveDsl.g:21809:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22016:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:22017:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalPerspectiveDsl.g:21809:2: ( ruleXAnnotationOrExpression )
-            // InternalPerspectiveDsl.g:21810:3: ruleXAnnotationOrExpression
+            // InternalPerspectiveDsl.g:22017:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22018:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
@@ -71169,17 +71823,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__ElementsAssignment_0_1_0"
-    // InternalPerspectiveDsl.g:21819:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    // InternalPerspectiveDsl.g:22027: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:21823:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalPerspectiveDsl.g:21824:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22031:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:22032:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalPerspectiveDsl.g:21824:2: ( ruleXAnnotationOrExpression )
-            // InternalPerspectiveDsl.g:21825:3: ruleXAnnotationOrExpression
+            // InternalPerspectiveDsl.g:22032:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22033:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
@@ -71214,17 +71868,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1"
-    // InternalPerspectiveDsl.g:21834:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
+    // InternalPerspectiveDsl.g:22042: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:21838:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalPerspectiveDsl.g:21839:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22046:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:22047:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalPerspectiveDsl.g:21839:2: ( ruleXAnnotationOrExpression )
-            // InternalPerspectiveDsl.g:21840:3: ruleXAnnotationOrExpression
+            // InternalPerspectiveDsl.g:22047:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22048:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
@@ -71259,23 +71913,23 @@
 
 
     // $ANTLR start "rule__XAssignment__FeatureAssignment_0_1"
-    // InternalPerspectiveDsl.g:21849:1: rule__XAssignment__FeatureAssignment_0_1 : ( ( ruleFeatureCallID ) ) ;
+    // InternalPerspectiveDsl.g:22057:1: rule__XAssignment__FeatureAssignment_0_1 : ( ( ruleFeatureCallID ) ) ;
     public final void rule__XAssignment__FeatureAssignment_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21853:1: ( ( ( ruleFeatureCallID ) ) )
-            // InternalPerspectiveDsl.g:21854:2: ( ( ruleFeatureCallID ) )
+            // InternalPerspectiveDsl.g:22061:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalPerspectiveDsl.g:22062:2: ( ( ruleFeatureCallID ) )
             {
-            // InternalPerspectiveDsl.g:21854:2: ( ( ruleFeatureCallID ) )
-            // InternalPerspectiveDsl.g:21855:3: ( ruleFeatureCallID )
+            // InternalPerspectiveDsl.g:22062:2: ( ( ruleFeatureCallID ) )
+            // InternalPerspectiveDsl.g:22063:3: ( ruleFeatureCallID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:21856:3: ( ruleFeatureCallID )
-            // InternalPerspectiveDsl.g:21857:4: ruleFeatureCallID
+            // InternalPerspectiveDsl.g:22064:3: ( ruleFeatureCallID )
+            // InternalPerspectiveDsl.g:22065:4: ruleFeatureCallID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_0_1_0_1()); 
@@ -71316,17 +71970,17 @@
 
 
     // $ANTLR start "rule__XAssignment__ValueAssignment_0_3"
-    // InternalPerspectiveDsl.g:21868:1: rule__XAssignment__ValueAssignment_0_3 : ( ruleXAssignment ) ;
+    // InternalPerspectiveDsl.g:22076:1: rule__XAssignment__ValueAssignment_0_3 : ( ruleXAssignment ) ;
     public final void rule__XAssignment__ValueAssignment_0_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21872:1: ( ( ruleXAssignment ) )
-            // InternalPerspectiveDsl.g:21873:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:22080:1: ( ( ruleXAssignment ) )
+            // InternalPerspectiveDsl.g:22081:2: ( ruleXAssignment )
             {
-            // InternalPerspectiveDsl.g:21873:2: ( ruleXAssignment )
-            // InternalPerspectiveDsl.g:21874:3: ruleXAssignment
+            // InternalPerspectiveDsl.g:22081:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:22082:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
@@ -71361,23 +72015,23 @@
 
 
     // $ANTLR start "rule__XAssignment__FeatureAssignment_1_1_0_0_1"
-    // InternalPerspectiveDsl.g:21883:1: rule__XAssignment__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpMultiAssign ) ) ;
+    // InternalPerspectiveDsl.g:22091: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:21887:1: ( ( ( ruleOpMultiAssign ) ) )
-            // InternalPerspectiveDsl.g:21888:2: ( ( ruleOpMultiAssign ) )
+            // InternalPerspectiveDsl.g:22095:1: ( ( ( ruleOpMultiAssign ) ) )
+            // InternalPerspectiveDsl.g:22096:2: ( ( ruleOpMultiAssign ) )
             {
-            // InternalPerspectiveDsl.g:21888:2: ( ( ruleOpMultiAssign ) )
-            // InternalPerspectiveDsl.g:21889:3: ( ruleOpMultiAssign )
+            // InternalPerspectiveDsl.g:22096:2: ( ( ruleOpMultiAssign ) )
+            // InternalPerspectiveDsl.g:22097:3: ( ruleOpMultiAssign )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:21890:3: ( ruleOpMultiAssign )
-            // InternalPerspectiveDsl.g:21891:4: ruleOpMultiAssign
+            // InternalPerspectiveDsl.g:22098:3: ( ruleOpMultiAssign )
+            // InternalPerspectiveDsl.g:22099:4: ruleOpMultiAssign
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementOpMultiAssignParserRuleCall_1_1_0_0_1_0_1()); 
@@ -71418,17 +72072,17 @@
 
 
     // $ANTLR start "rule__XAssignment__RightOperandAssignment_1_1_1"
-    // InternalPerspectiveDsl.g:21902:1: rule__XAssignment__RightOperandAssignment_1_1_1 : ( ruleXAssignment ) ;
+    // InternalPerspectiveDsl.g:22110: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:21906:1: ( ( ruleXAssignment ) )
-            // InternalPerspectiveDsl.g:21907:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:22114:1: ( ( ruleXAssignment ) )
+            // InternalPerspectiveDsl.g:22115:2: ( ruleXAssignment )
             {
-            // InternalPerspectiveDsl.g:21907:2: ( ruleXAssignment )
-            // InternalPerspectiveDsl.g:21908:3: ruleXAssignment
+            // InternalPerspectiveDsl.g:22115:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:22116:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
@@ -71463,23 +72117,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__FeatureAssignment_1_0_0_1"
-    // InternalPerspectiveDsl.g:21917:1: rule__XOrExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOr ) ) ;
+    // InternalPerspectiveDsl.g:22125: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:21921:1: ( ( ( ruleOpOr ) ) )
-            // InternalPerspectiveDsl.g:21922:2: ( ( ruleOpOr ) )
+            // InternalPerspectiveDsl.g:22129:1: ( ( ( ruleOpOr ) ) )
+            // InternalPerspectiveDsl.g:22130:2: ( ( ruleOpOr ) )
             {
-            // InternalPerspectiveDsl.g:21922:2: ( ( ruleOpOr ) )
-            // InternalPerspectiveDsl.g:21923:3: ( ruleOpOr )
+            // InternalPerspectiveDsl.g:22130:2: ( ( ruleOpOr ) )
+            // InternalPerspectiveDsl.g:22131:3: ( ruleOpOr )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:21924:3: ( ruleOpOr )
-            // InternalPerspectiveDsl.g:21925:4: ruleOpOr
+            // InternalPerspectiveDsl.g:22132:3: ( ruleOpOr )
+            // InternalPerspectiveDsl.g:22133:4: ruleOpOr
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementOpOrParserRuleCall_1_0_0_1_0_1()); 
@@ -71520,17 +72174,17 @@
 
 
     // $ANTLR start "rule__XOrExpression__RightOperandAssignment_1_1"
-    // InternalPerspectiveDsl.g:21936:1: rule__XOrExpression__RightOperandAssignment_1_1 : ( ruleXAndExpression ) ;
+    // InternalPerspectiveDsl.g:22144:1: rule__XOrExpression__RightOperandAssignment_1_1 : ( ruleXAndExpression ) ;
     public final void rule__XOrExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21940:1: ( ( ruleXAndExpression ) )
-            // InternalPerspectiveDsl.g:21941:2: ( ruleXAndExpression )
+            // InternalPerspectiveDsl.g:22148:1: ( ( ruleXAndExpression ) )
+            // InternalPerspectiveDsl.g:22149:2: ( ruleXAndExpression )
             {
-            // InternalPerspectiveDsl.g:21941:2: ( ruleXAndExpression )
-            // InternalPerspectiveDsl.g:21942:3: ruleXAndExpression
+            // InternalPerspectiveDsl.g:22149:2: ( ruleXAndExpression )
+            // InternalPerspectiveDsl.g:22150:3: ruleXAndExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
@@ -71565,23 +72219,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__FeatureAssignment_1_0_0_1"
-    // InternalPerspectiveDsl.g:21951:1: rule__XAndExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAnd ) ) ;
+    // InternalPerspectiveDsl.g:22159: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:21955:1: ( ( ( ruleOpAnd ) ) )
-            // InternalPerspectiveDsl.g:21956:2: ( ( ruleOpAnd ) )
+            // InternalPerspectiveDsl.g:22163:1: ( ( ( ruleOpAnd ) ) )
+            // InternalPerspectiveDsl.g:22164:2: ( ( ruleOpAnd ) )
             {
-            // InternalPerspectiveDsl.g:21956:2: ( ( ruleOpAnd ) )
-            // InternalPerspectiveDsl.g:21957:3: ( ruleOpAnd )
+            // InternalPerspectiveDsl.g:22164:2: ( ( ruleOpAnd ) )
+            // InternalPerspectiveDsl.g:22165:3: ( ruleOpAnd )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:21958:3: ( ruleOpAnd )
-            // InternalPerspectiveDsl.g:21959:4: ruleOpAnd
+            // InternalPerspectiveDsl.g:22166:3: ( ruleOpAnd )
+            // InternalPerspectiveDsl.g:22167:4: ruleOpAnd
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementOpAndParserRuleCall_1_0_0_1_0_1()); 
@@ -71622,17 +72276,17 @@
 
 
     // $ANTLR start "rule__XAndExpression__RightOperandAssignment_1_1"
-    // InternalPerspectiveDsl.g:21970:1: rule__XAndExpression__RightOperandAssignment_1_1 : ( ruleXEqualityExpression ) ;
+    // InternalPerspectiveDsl.g:22178:1: rule__XAndExpression__RightOperandAssignment_1_1 : ( ruleXEqualityExpression ) ;
     public final void rule__XAndExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21974:1: ( ( ruleXEqualityExpression ) )
-            // InternalPerspectiveDsl.g:21975:2: ( ruleXEqualityExpression )
+            // InternalPerspectiveDsl.g:22182:1: ( ( ruleXEqualityExpression ) )
+            // InternalPerspectiveDsl.g:22183:2: ( ruleXEqualityExpression )
             {
-            // InternalPerspectiveDsl.g:21975:2: ( ruleXEqualityExpression )
-            // InternalPerspectiveDsl.g:21976:3: ruleXEqualityExpression
+            // InternalPerspectiveDsl.g:22183:2: ( ruleXEqualityExpression )
+            // InternalPerspectiveDsl.g:22184:3: ruleXEqualityExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
@@ -71667,23 +72321,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__FeatureAssignment_1_0_0_1"
-    // InternalPerspectiveDsl.g:21985:1: rule__XEqualityExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpEquality ) ) ;
+    // InternalPerspectiveDsl.g:22193: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:21989:1: ( ( ( ruleOpEquality ) ) )
-            // InternalPerspectiveDsl.g:21990:2: ( ( ruleOpEquality ) )
+            // InternalPerspectiveDsl.g:22197:1: ( ( ( ruleOpEquality ) ) )
+            // InternalPerspectiveDsl.g:22198:2: ( ( ruleOpEquality ) )
             {
-            // InternalPerspectiveDsl.g:21990:2: ( ( ruleOpEquality ) )
-            // InternalPerspectiveDsl.g:21991:3: ( ruleOpEquality )
+            // InternalPerspectiveDsl.g:22198:2: ( ( ruleOpEquality ) )
+            // InternalPerspectiveDsl.g:22199:3: ( ruleOpEquality )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:21992:3: ( ruleOpEquality )
-            // InternalPerspectiveDsl.g:21993:4: ruleOpEquality
+            // InternalPerspectiveDsl.g:22200:3: ( ruleOpEquality )
+            // InternalPerspectiveDsl.g:22201:4: ruleOpEquality
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementOpEqualityParserRuleCall_1_0_0_1_0_1()); 
@@ -71724,17 +72378,17 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__RightOperandAssignment_1_1"
-    // InternalPerspectiveDsl.g:22004:1: rule__XEqualityExpression__RightOperandAssignment_1_1 : ( ruleXRelationalExpression ) ;
+    // InternalPerspectiveDsl.g:22212:1: rule__XEqualityExpression__RightOperandAssignment_1_1 : ( ruleXRelationalExpression ) ;
     public final void rule__XEqualityExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22008:1: ( ( ruleXRelationalExpression ) )
-            // InternalPerspectiveDsl.g:22009:2: ( ruleXRelationalExpression )
+            // InternalPerspectiveDsl.g:22216:1: ( ( ruleXRelationalExpression ) )
+            // InternalPerspectiveDsl.g:22217:2: ( ruleXRelationalExpression )
             {
-            // InternalPerspectiveDsl.g:22009:2: ( ruleXRelationalExpression )
-            // InternalPerspectiveDsl.g:22010:3: ruleXRelationalExpression
+            // InternalPerspectiveDsl.g:22217:2: ( ruleXRelationalExpression )
+            // InternalPerspectiveDsl.g:22218:3: ruleXRelationalExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
@@ -71769,17 +72423,17 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__TypeAssignment_1_0_1"
-    // InternalPerspectiveDsl.g:22019:1: rule__XRelationalExpression__TypeAssignment_1_0_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:22227: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:22023:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:22024:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:22231:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:22232:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:22024:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:22025:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:22232:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:22233:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
@@ -71814,23 +72468,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1"
-    // InternalPerspectiveDsl.g:22034:1: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpCompare ) ) ;
+    // InternalPerspectiveDsl.g:22242: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:22038:1: ( ( ( ruleOpCompare ) ) )
-            // InternalPerspectiveDsl.g:22039:2: ( ( ruleOpCompare ) )
+            // InternalPerspectiveDsl.g:22246:1: ( ( ( ruleOpCompare ) ) )
+            // InternalPerspectiveDsl.g:22247:2: ( ( ruleOpCompare ) )
             {
-            // InternalPerspectiveDsl.g:22039:2: ( ( ruleOpCompare ) )
-            // InternalPerspectiveDsl.g:22040:3: ( ruleOpCompare )
+            // InternalPerspectiveDsl.g:22247:2: ( ( ruleOpCompare ) )
+            // InternalPerspectiveDsl.g:22248:3: ( ruleOpCompare )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22041:3: ( ruleOpCompare )
-            // InternalPerspectiveDsl.g:22042:4: ruleOpCompare
+            // InternalPerspectiveDsl.g:22249:3: ( ruleOpCompare )
+            // InternalPerspectiveDsl.g:22250:4: ruleOpCompare
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementOpCompareParserRuleCall_1_1_0_0_1_0_1()); 
@@ -71871,17 +72525,17 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__RightOperandAssignment_1_1_1"
-    // InternalPerspectiveDsl.g:22053:1: rule__XRelationalExpression__RightOperandAssignment_1_1_1 : ( ruleXOtherOperatorExpression ) ;
+    // InternalPerspectiveDsl.g:22261: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:22057:1: ( ( ruleXOtherOperatorExpression ) )
-            // InternalPerspectiveDsl.g:22058:2: ( ruleXOtherOperatorExpression )
+            // InternalPerspectiveDsl.g:22265:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalPerspectiveDsl.g:22266:2: ( ruleXOtherOperatorExpression )
             {
-            // InternalPerspectiveDsl.g:22058:2: ( ruleXOtherOperatorExpression )
-            // InternalPerspectiveDsl.g:22059:3: ruleXOtherOperatorExpression
+            // InternalPerspectiveDsl.g:22266:2: ( ruleXOtherOperatorExpression )
+            // InternalPerspectiveDsl.g:22267:3: ruleXOtherOperatorExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
@@ -71916,23 +72570,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1"
-    // InternalPerspectiveDsl.g:22068:1: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOther ) ) ;
+    // InternalPerspectiveDsl.g:22276: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:22072:1: ( ( ( ruleOpOther ) ) )
-            // InternalPerspectiveDsl.g:22073:2: ( ( ruleOpOther ) )
+            // InternalPerspectiveDsl.g:22280:1: ( ( ( ruleOpOther ) ) )
+            // InternalPerspectiveDsl.g:22281:2: ( ( ruleOpOther ) )
             {
-            // InternalPerspectiveDsl.g:22073:2: ( ( ruleOpOther ) )
-            // InternalPerspectiveDsl.g:22074:3: ( ruleOpOther )
+            // InternalPerspectiveDsl.g:22281:2: ( ( ruleOpOther ) )
+            // InternalPerspectiveDsl.g:22282:3: ( ruleOpOther )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22075:3: ( ruleOpOther )
-            // InternalPerspectiveDsl.g:22076:4: ruleOpOther
+            // InternalPerspectiveDsl.g:22283:3: ( ruleOpOther )
+            // InternalPerspectiveDsl.g:22284:4: ruleOpOther
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementOpOtherParserRuleCall_1_0_0_1_0_1()); 
@@ -71973,17 +72627,17 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__RightOperandAssignment_1_1"
-    // InternalPerspectiveDsl.g:22087:1: rule__XOtherOperatorExpression__RightOperandAssignment_1_1 : ( ruleXAdditiveExpression ) ;
+    // InternalPerspectiveDsl.g:22295:1: rule__XOtherOperatorExpression__RightOperandAssignment_1_1 : ( ruleXAdditiveExpression ) ;
     public final void rule__XOtherOperatorExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22091:1: ( ( ruleXAdditiveExpression ) )
-            // InternalPerspectiveDsl.g:22092:2: ( ruleXAdditiveExpression )
+            // InternalPerspectiveDsl.g:22299:1: ( ( ruleXAdditiveExpression ) )
+            // InternalPerspectiveDsl.g:22300:2: ( ruleXAdditiveExpression )
             {
-            // InternalPerspectiveDsl.g:22092:2: ( ruleXAdditiveExpression )
-            // InternalPerspectiveDsl.g:22093:3: ruleXAdditiveExpression
+            // InternalPerspectiveDsl.g:22300:2: ( ruleXAdditiveExpression )
+            // InternalPerspectiveDsl.g:22301:3: ruleXAdditiveExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
@@ -72018,23 +72672,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1"
-    // InternalPerspectiveDsl.g:22102:1: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAdd ) ) ;
+    // InternalPerspectiveDsl.g:22310: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:22106:1: ( ( ( ruleOpAdd ) ) )
-            // InternalPerspectiveDsl.g:22107:2: ( ( ruleOpAdd ) )
+            // InternalPerspectiveDsl.g:22314:1: ( ( ( ruleOpAdd ) ) )
+            // InternalPerspectiveDsl.g:22315:2: ( ( ruleOpAdd ) )
             {
-            // InternalPerspectiveDsl.g:22107:2: ( ( ruleOpAdd ) )
-            // InternalPerspectiveDsl.g:22108:3: ( ruleOpAdd )
+            // InternalPerspectiveDsl.g:22315:2: ( ( ruleOpAdd ) )
+            // InternalPerspectiveDsl.g:22316:3: ( ruleOpAdd )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22109:3: ( ruleOpAdd )
-            // InternalPerspectiveDsl.g:22110:4: ruleOpAdd
+            // InternalPerspectiveDsl.g:22317:3: ( ruleOpAdd )
+            // InternalPerspectiveDsl.g:22318:4: ruleOpAdd
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementOpAddParserRuleCall_1_0_0_1_0_1()); 
@@ -72075,17 +72729,17 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__RightOperandAssignment_1_1"
-    // InternalPerspectiveDsl.g:22121:1: rule__XAdditiveExpression__RightOperandAssignment_1_1 : ( ruleXMultiplicativeExpression ) ;
+    // InternalPerspectiveDsl.g:22329:1: rule__XAdditiveExpression__RightOperandAssignment_1_1 : ( ruleXMultiplicativeExpression ) ;
     public final void rule__XAdditiveExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22125:1: ( ( ruleXMultiplicativeExpression ) )
-            // InternalPerspectiveDsl.g:22126:2: ( ruleXMultiplicativeExpression )
+            // InternalPerspectiveDsl.g:22333:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalPerspectiveDsl.g:22334:2: ( ruleXMultiplicativeExpression )
             {
-            // InternalPerspectiveDsl.g:22126:2: ( ruleXMultiplicativeExpression )
-            // InternalPerspectiveDsl.g:22127:3: ruleXMultiplicativeExpression
+            // InternalPerspectiveDsl.g:22334:2: ( ruleXMultiplicativeExpression )
+            // InternalPerspectiveDsl.g:22335:3: ruleXMultiplicativeExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
@@ -72120,23 +72774,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1"
-    // InternalPerspectiveDsl.g:22136:1: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpMulti ) ) ;
+    // InternalPerspectiveDsl.g:22344: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:22140:1: ( ( ( ruleOpMulti ) ) )
-            // InternalPerspectiveDsl.g:22141:2: ( ( ruleOpMulti ) )
+            // InternalPerspectiveDsl.g:22348:1: ( ( ( ruleOpMulti ) ) )
+            // InternalPerspectiveDsl.g:22349:2: ( ( ruleOpMulti ) )
             {
-            // InternalPerspectiveDsl.g:22141:2: ( ( ruleOpMulti ) )
-            // InternalPerspectiveDsl.g:22142:3: ( ruleOpMulti )
+            // InternalPerspectiveDsl.g:22349:2: ( ( ruleOpMulti ) )
+            // InternalPerspectiveDsl.g:22350:3: ( ruleOpMulti )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22143:3: ( ruleOpMulti )
-            // InternalPerspectiveDsl.g:22144:4: ruleOpMulti
+            // InternalPerspectiveDsl.g:22351:3: ( ruleOpMulti )
+            // InternalPerspectiveDsl.g:22352:4: ruleOpMulti
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementOpMultiParserRuleCall_1_0_0_1_0_1()); 
@@ -72177,17 +72831,17 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__RightOperandAssignment_1_1"
-    // InternalPerspectiveDsl.g:22155:1: rule__XMultiplicativeExpression__RightOperandAssignment_1_1 : ( ruleXUnaryOperation ) ;
+    // InternalPerspectiveDsl.g:22363:1: rule__XMultiplicativeExpression__RightOperandAssignment_1_1 : ( ruleXUnaryOperation ) ;
     public final void rule__XMultiplicativeExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22159:1: ( ( ruleXUnaryOperation ) )
-            // InternalPerspectiveDsl.g:22160:2: ( ruleXUnaryOperation )
+            // InternalPerspectiveDsl.g:22367:1: ( ( ruleXUnaryOperation ) )
+            // InternalPerspectiveDsl.g:22368:2: ( ruleXUnaryOperation )
             {
-            // InternalPerspectiveDsl.g:22160:2: ( ruleXUnaryOperation )
-            // InternalPerspectiveDsl.g:22161:3: ruleXUnaryOperation
+            // InternalPerspectiveDsl.g:22368:2: ( ruleXUnaryOperation )
+            // InternalPerspectiveDsl.g:22369:3: ruleXUnaryOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
@@ -72222,23 +72876,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__FeatureAssignment_0_1"
-    // InternalPerspectiveDsl.g:22170:1: rule__XUnaryOperation__FeatureAssignment_0_1 : ( ( ruleOpUnary ) ) ;
+    // InternalPerspectiveDsl.g:22378:1: rule__XUnaryOperation__FeatureAssignment_0_1 : ( ( ruleOpUnary ) ) ;
     public final void rule__XUnaryOperation__FeatureAssignment_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22174:1: ( ( ( ruleOpUnary ) ) )
-            // InternalPerspectiveDsl.g:22175:2: ( ( ruleOpUnary ) )
+            // InternalPerspectiveDsl.g:22382:1: ( ( ( ruleOpUnary ) ) )
+            // InternalPerspectiveDsl.g:22383:2: ( ( ruleOpUnary ) )
             {
-            // InternalPerspectiveDsl.g:22175:2: ( ( ruleOpUnary ) )
-            // InternalPerspectiveDsl.g:22176:3: ( ruleOpUnary )
+            // InternalPerspectiveDsl.g:22383:2: ( ( ruleOpUnary ) )
+            // InternalPerspectiveDsl.g:22384:3: ( ruleOpUnary )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22177:3: ( ruleOpUnary )
-            // InternalPerspectiveDsl.g:22178:4: ruleOpUnary
+            // InternalPerspectiveDsl.g:22385:3: ( ruleOpUnary )
+            // InternalPerspectiveDsl.g:22386:4: ruleOpUnary
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementOpUnaryParserRuleCall_0_1_0_1()); 
@@ -72279,17 +72933,17 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__OperandAssignment_0_2"
-    // InternalPerspectiveDsl.g:22189:1: rule__XUnaryOperation__OperandAssignment_0_2 : ( ruleXUnaryOperation ) ;
+    // InternalPerspectiveDsl.g:22397:1: rule__XUnaryOperation__OperandAssignment_0_2 : ( ruleXUnaryOperation ) ;
     public final void rule__XUnaryOperation__OperandAssignment_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22193:1: ( ( ruleXUnaryOperation ) )
-            // InternalPerspectiveDsl.g:22194:2: ( ruleXUnaryOperation )
+            // InternalPerspectiveDsl.g:22401:1: ( ( ruleXUnaryOperation ) )
+            // InternalPerspectiveDsl.g:22402:2: ( ruleXUnaryOperation )
             {
-            // InternalPerspectiveDsl.g:22194:2: ( ruleXUnaryOperation )
-            // InternalPerspectiveDsl.g:22195:3: ruleXUnaryOperation
+            // InternalPerspectiveDsl.g:22402:2: ( ruleXUnaryOperation )
+            // InternalPerspectiveDsl.g:22403:3: ruleXUnaryOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
@@ -72324,17 +72978,17 @@
 
 
     // $ANTLR start "rule__XCastedExpression__TypeAssignment_1_1"
-    // InternalPerspectiveDsl.g:22204:1: rule__XCastedExpression__TypeAssignment_1_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:22412:1: rule__XCastedExpression__TypeAssignment_1_1 : ( ruleJvmTypeReference ) ;
     public final void rule__XCastedExpression__TypeAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22208:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:22209:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:22416:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:22417:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:22209:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:22210:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:22417:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:22418:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
@@ -72369,23 +73023,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__FeatureAssignment_1_0_1"
-    // InternalPerspectiveDsl.g:22219:1: rule__XPostfixOperation__FeatureAssignment_1_0_1 : ( ( ruleOpPostfix ) ) ;
+    // InternalPerspectiveDsl.g:22427: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:22223:1: ( ( ( ruleOpPostfix ) ) )
-            // InternalPerspectiveDsl.g:22224:2: ( ( ruleOpPostfix ) )
+            // InternalPerspectiveDsl.g:22431:1: ( ( ( ruleOpPostfix ) ) )
+            // InternalPerspectiveDsl.g:22432:2: ( ( ruleOpPostfix ) )
             {
-            // InternalPerspectiveDsl.g:22224:2: ( ( ruleOpPostfix ) )
-            // InternalPerspectiveDsl.g:22225:3: ( ruleOpPostfix )
+            // InternalPerspectiveDsl.g:22432:2: ( ( ruleOpPostfix ) )
+            // InternalPerspectiveDsl.g:22433:3: ( ruleOpPostfix )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22226:3: ( ruleOpPostfix )
-            // InternalPerspectiveDsl.g:22227:4: ruleOpPostfix
+            // InternalPerspectiveDsl.g:22434:3: ( ruleOpPostfix )
+            // InternalPerspectiveDsl.g:22435:4: ruleOpPostfix
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementOpPostfixParserRuleCall_1_0_1_0_1()); 
@@ -72426,28 +73080,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1"
-    // InternalPerspectiveDsl.g:22238:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 : ( ( '::' ) ) ;
+    // InternalPerspectiveDsl.g:22446: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:22242:1: ( ( ( '::' ) ) )
-            // InternalPerspectiveDsl.g:22243:2: ( ( '::' ) )
+            // InternalPerspectiveDsl.g:22450:1: ( ( ( '::' ) ) )
+            // InternalPerspectiveDsl.g:22451:2: ( ( '::' ) )
             {
-            // InternalPerspectiveDsl.g:22243:2: ( ( '::' ) )
-            // InternalPerspectiveDsl.g:22244:3: ( '::' )
+            // InternalPerspectiveDsl.g:22451:2: ( ( '::' ) )
+            // InternalPerspectiveDsl.g:22452:3: ( '::' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22245:3: ( '::' )
-            // InternalPerspectiveDsl.g:22246:4: '::'
+            // InternalPerspectiveDsl.g:22453:3: ( '::' )
+            // InternalPerspectiveDsl.g:22454:4: '::'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
             }
-            match(input,120,FOLLOW_2); if (state.failed) return ;
+            match(input,122,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
             }
@@ -72479,23 +73133,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2"
-    // InternalPerspectiveDsl.g:22257:1: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 : ( ( ruleFeatureCallID ) ) ;
+    // InternalPerspectiveDsl.g:22465: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:22261:1: ( ( ( ruleFeatureCallID ) ) )
-            // InternalPerspectiveDsl.g:22262:2: ( ( ruleFeatureCallID ) )
+            // InternalPerspectiveDsl.g:22469:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalPerspectiveDsl.g:22470:2: ( ( ruleFeatureCallID ) )
             {
-            // InternalPerspectiveDsl.g:22262:2: ( ( ruleFeatureCallID ) )
-            // InternalPerspectiveDsl.g:22263:3: ( ruleFeatureCallID )
+            // InternalPerspectiveDsl.g:22470:2: ( ( ruleFeatureCallID ) )
+            // InternalPerspectiveDsl.g:22471:3: ( ruleFeatureCallID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22264:3: ( ruleFeatureCallID )
-            // InternalPerspectiveDsl.g:22265:4: ruleFeatureCallID
+            // InternalPerspectiveDsl.g:22472:3: ( ruleFeatureCallID )
+            // InternalPerspectiveDsl.g:22473:4: ruleFeatureCallID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_1_0_0_0_2_0_1()); 
@@ -72536,17 +73190,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ValueAssignment_1_0_1"
-    // InternalPerspectiveDsl.g:22276:1: rule__XMemberFeatureCall__ValueAssignment_1_0_1 : ( ruleXAssignment ) ;
+    // InternalPerspectiveDsl.g:22484: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:22280:1: ( ( ruleXAssignment ) )
-            // InternalPerspectiveDsl.g:22281:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:22488:1: ( ( ruleXAssignment ) )
+            // InternalPerspectiveDsl.g:22489:2: ( ruleXAssignment )
             {
-            // InternalPerspectiveDsl.g:22281:2: ( ruleXAssignment )
-            // InternalPerspectiveDsl.g:22282:3: ruleXAssignment
+            // InternalPerspectiveDsl.g:22489:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:22490:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); 
@@ -72581,28 +73235,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1"
-    // InternalPerspectiveDsl.g:22291:1: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 : ( ( '?.' ) ) ;
+    // InternalPerspectiveDsl.g:22499: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:22295:1: ( ( ( '?.' ) ) )
-            // InternalPerspectiveDsl.g:22296:2: ( ( '?.' ) )
+            // InternalPerspectiveDsl.g:22503:1: ( ( ( '?.' ) ) )
+            // InternalPerspectiveDsl.g:22504:2: ( ( '?.' ) )
             {
-            // InternalPerspectiveDsl.g:22296:2: ( ( '?.' ) )
-            // InternalPerspectiveDsl.g:22297:3: ( '?.' )
+            // InternalPerspectiveDsl.g:22504:2: ( ( '?.' ) )
+            // InternalPerspectiveDsl.g:22505:3: ( '?.' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22298:3: ( '?.' )
-            // InternalPerspectiveDsl.g:22299:4: '?.'
+            // InternalPerspectiveDsl.g:22506:3: ( '?.' )
+            // InternalPerspectiveDsl.g:22507:4: '?.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
             }
-            match(input,121,FOLLOW_2); if (state.failed) return ;
+            match(input,123,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
             }
@@ -72634,28 +73288,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2"
-    // InternalPerspectiveDsl.g:22310:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 : ( ( '::' ) ) ;
+    // InternalPerspectiveDsl.g:22518: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:22314:1: ( ( ( '::' ) ) )
-            // InternalPerspectiveDsl.g:22315:2: ( ( '::' ) )
+            // InternalPerspectiveDsl.g:22522:1: ( ( ( '::' ) ) )
+            // InternalPerspectiveDsl.g:22523:2: ( ( '::' ) )
             {
-            // InternalPerspectiveDsl.g:22315:2: ( ( '::' ) )
-            // InternalPerspectiveDsl.g:22316:3: ( '::' )
+            // InternalPerspectiveDsl.g:22523:2: ( ( '::' ) )
+            // InternalPerspectiveDsl.g:22524:3: ( '::' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22317:3: ( '::' )
-            // InternalPerspectiveDsl.g:22318:4: '::'
+            // InternalPerspectiveDsl.g:22525:3: ( '::' )
+            // InternalPerspectiveDsl.g:22526:4: '::'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
             }
-            match(input,120,FOLLOW_2); if (state.failed) return ;
+            match(input,122,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
             }
@@ -72687,17 +73341,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1"
-    // InternalPerspectiveDsl.g:22329:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:22537: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:22333:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:22334:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:22541:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:22542:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:22334:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:22335:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:22542:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:22543:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); 
@@ -72732,17 +73386,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1"
-    // InternalPerspectiveDsl.g:22344:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:22552: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:22348:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:22349:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:22556:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:22557:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:22349:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:22350:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:22557:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:22558:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); 
@@ -72777,23 +73431,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__FeatureAssignment_1_1_2"
-    // InternalPerspectiveDsl.g:22359:1: rule__XMemberFeatureCall__FeatureAssignment_1_1_2 : ( ( ruleIdOrSuper ) ) ;
+    // InternalPerspectiveDsl.g:22567: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:22363:1: ( ( ( ruleIdOrSuper ) ) )
-            // InternalPerspectiveDsl.g:22364:2: ( ( ruleIdOrSuper ) )
+            // InternalPerspectiveDsl.g:22571:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalPerspectiveDsl.g:22572:2: ( ( ruleIdOrSuper ) )
             {
-            // InternalPerspectiveDsl.g:22364:2: ( ( ruleIdOrSuper ) )
-            // InternalPerspectiveDsl.g:22365:3: ( ruleIdOrSuper )
+            // InternalPerspectiveDsl.g:22572:2: ( ( ruleIdOrSuper ) )
+            // InternalPerspectiveDsl.g:22573:3: ( ruleIdOrSuper )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22366:3: ( ruleIdOrSuper )
-            // InternalPerspectiveDsl.g:22367:4: ruleIdOrSuper
+            // InternalPerspectiveDsl.g:22574:3: ( ruleIdOrSuper )
+            // InternalPerspectiveDsl.g:22575:4: ruleIdOrSuper
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_1_1_2_0_1()); 
@@ -72834,28 +73488,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0"
-    // InternalPerspectiveDsl.g:22378:1: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 : ( ( '(' ) ) ;
+    // InternalPerspectiveDsl.g:22586: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:22382:1: ( ( ( '(' ) ) )
-            // InternalPerspectiveDsl.g:22383:2: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:22590:1: ( ( ( '(' ) ) )
+            // InternalPerspectiveDsl.g:22591:2: ( ( '(' ) )
             {
-            // InternalPerspectiveDsl.g:22383:2: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:22384:3: ( '(' )
+            // InternalPerspectiveDsl.g:22591:2: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:22592:3: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
             }
-            // InternalPerspectiveDsl.g:22385:3: ( '(' )
-            // InternalPerspectiveDsl.g:22386:4: '('
+            // InternalPerspectiveDsl.g:22593:3: ( '(' )
+            // InternalPerspectiveDsl.g:22594:4: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
             }
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
             }
@@ -72887,17 +73541,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0"
-    // InternalPerspectiveDsl.g:22397:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 : ( ruleXShortClosure ) ;
+    // InternalPerspectiveDsl.g:22605: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:22401:1: ( ( ruleXShortClosure ) )
-            // InternalPerspectiveDsl.g:22402:2: ( ruleXShortClosure )
+            // InternalPerspectiveDsl.g:22609:1: ( ( ruleXShortClosure ) )
+            // InternalPerspectiveDsl.g:22610:2: ( ruleXShortClosure )
             {
-            // InternalPerspectiveDsl.g:22402:2: ( ruleXShortClosure )
-            // InternalPerspectiveDsl.g:22403:3: ruleXShortClosure
+            // InternalPerspectiveDsl.g:22610:2: ( ruleXShortClosure )
+            // InternalPerspectiveDsl.g:22611:3: ruleXShortClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); 
@@ -72932,17 +73586,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0"
-    // InternalPerspectiveDsl.g:22412:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:22620: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:22416:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22417:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22624:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22625:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22417:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22418:3: ruleXExpression
+            // InternalPerspectiveDsl.g:22625:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22626:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); 
@@ -72977,17 +73631,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1"
-    // InternalPerspectiveDsl.g:22427:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:22635: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:22431:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22432:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22639:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22640:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22432:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22433:3: ruleXExpression
+            // InternalPerspectiveDsl.g:22640:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22641:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); 
@@ -73022,17 +73676,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4"
-    // InternalPerspectiveDsl.g:22442:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 : ( ruleXClosure ) ;
+    // InternalPerspectiveDsl.g:22650: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:22446:1: ( ( ruleXClosure ) )
-            // InternalPerspectiveDsl.g:22447:2: ( ruleXClosure )
+            // InternalPerspectiveDsl.g:22654:1: ( ( ruleXClosure ) )
+            // InternalPerspectiveDsl.g:22655:2: ( ruleXClosure )
             {
-            // InternalPerspectiveDsl.g:22447:2: ( ruleXClosure )
-            // InternalPerspectiveDsl.g:22448:3: ruleXClosure
+            // InternalPerspectiveDsl.g:22655:2: ( ruleXClosure )
+            // InternalPerspectiveDsl.g:22656:3: ruleXClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0()); 
@@ -73067,17 +73721,17 @@
 
 
     // $ANTLR start "rule__XSetLiteral__ElementsAssignment_3_0"
-    // InternalPerspectiveDsl.g:22457:1: rule__XSetLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:22665:1: rule__XSetLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
     public final void rule__XSetLiteral__ElementsAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22461:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22462:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22669:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22670:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22462:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22463:3: ruleXExpression
+            // InternalPerspectiveDsl.g:22670:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22671:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
@@ -73112,17 +73766,17 @@
 
 
     // $ANTLR start "rule__XSetLiteral__ElementsAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:22472:1: rule__XSetLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:22680: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:22476:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22477:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22684:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22685:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22477:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22478:3: ruleXExpression
+            // InternalPerspectiveDsl.g:22685:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22686:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
@@ -73157,17 +73811,17 @@
 
 
     // $ANTLR start "rule__XListLiteral__ElementsAssignment_3_0"
-    // InternalPerspectiveDsl.g:22487:1: rule__XListLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:22695:1: rule__XListLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
     public final void rule__XListLiteral__ElementsAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22491:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22492:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22699:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22700:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22492:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22493:3: ruleXExpression
+            // InternalPerspectiveDsl.g:22700:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22701:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
@@ -73202,17 +73856,17 @@
 
 
     // $ANTLR start "rule__XListLiteral__ElementsAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:22502:1: rule__XListLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:22710: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:22506:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22507:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22714:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22715:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22507:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22508:3: ruleXExpression
+            // InternalPerspectiveDsl.g:22715:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22716:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
@@ -73247,17 +73901,17 @@
 
 
     // $ANTLR start "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0"
-    // InternalPerspectiveDsl.g:22517:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 : ( ruleJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:22725: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:22521:1: ( ( ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:22522:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22729:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:22730:2: ( ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:22522:2: ( ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:22523:3: ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:22730:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22731:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0()); 
@@ -73292,17 +73946,17 @@
 
 
     // $ANTLR start "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1"
-    // InternalPerspectiveDsl.g:22532:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 : ( ruleJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:22740: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:22536:1: ( ( ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:22537:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22744:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:22745:2: ( ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:22537:2: ( ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:22538:3: ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:22745:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22746:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0()); 
@@ -73337,28 +73991,28 @@
 
 
     // $ANTLR start "rule__XClosure__ExplicitSyntaxAssignment_1_0_1"
-    // InternalPerspectiveDsl.g:22547:1: rule__XClosure__ExplicitSyntaxAssignment_1_0_1 : ( ( '|' ) ) ;
+    // InternalPerspectiveDsl.g:22755:1: rule__XClosure__ExplicitSyntaxAssignment_1_0_1 : ( ( '|' ) ) ;
     public final void rule__XClosure__ExplicitSyntaxAssignment_1_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22551:1: ( ( ( '|' ) ) )
-            // InternalPerspectiveDsl.g:22552:2: ( ( '|' ) )
+            // InternalPerspectiveDsl.g:22759:1: ( ( ( '|' ) ) )
+            // InternalPerspectiveDsl.g:22760:2: ( ( '|' ) )
             {
-            // InternalPerspectiveDsl.g:22552:2: ( ( '|' ) )
-            // InternalPerspectiveDsl.g:22553:3: ( '|' )
+            // InternalPerspectiveDsl.g:22760:2: ( ( '|' ) )
+            // InternalPerspectiveDsl.g:22761:3: ( '|' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22554:3: ( '|' )
-            // InternalPerspectiveDsl.g:22555:4: '|'
+            // InternalPerspectiveDsl.g:22762:3: ( '|' )
+            // InternalPerspectiveDsl.g:22763:4: '|'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
             }
-            match(input,122,FOLLOW_2); if (state.failed) return ;
+            match(input,124,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
             }
@@ -73390,17 +74044,17 @@
 
 
     // $ANTLR start "rule__XClosure__ExpressionAssignment_2"
-    // InternalPerspectiveDsl.g:22566:1: rule__XClosure__ExpressionAssignment_2 : ( ruleXExpressionInClosure ) ;
+    // InternalPerspectiveDsl.g:22774:1: rule__XClosure__ExpressionAssignment_2 : ( ruleXExpressionInClosure ) ;
     public final void rule__XClosure__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22570:1: ( ( ruleXExpressionInClosure ) )
-            // InternalPerspectiveDsl.g:22571:2: ( ruleXExpressionInClosure )
+            // InternalPerspectiveDsl.g:22778:1: ( ( ruleXExpressionInClosure ) )
+            // InternalPerspectiveDsl.g:22779:2: ( ruleXExpressionInClosure )
             {
-            // InternalPerspectiveDsl.g:22571:2: ( ruleXExpressionInClosure )
-            // InternalPerspectiveDsl.g:22572:3: ruleXExpressionInClosure
+            // InternalPerspectiveDsl.g:22779:2: ( ruleXExpressionInClosure )
+            // InternalPerspectiveDsl.g:22780:3: ruleXExpressionInClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0()); 
@@ -73435,17 +74089,17 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__ExpressionsAssignment_1_0"
-    // InternalPerspectiveDsl.g:22581:1: rule__XExpressionInClosure__ExpressionsAssignment_1_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalPerspectiveDsl.g:22789:1: rule__XExpressionInClosure__ExpressionsAssignment_1_0 : ( ruleXExpressionOrVarDeclaration ) ;
     public final void rule__XExpressionInClosure__ExpressionsAssignment_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22585:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalPerspectiveDsl.g:22586:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:22793:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalPerspectiveDsl.g:22794:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalPerspectiveDsl.g:22586:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalPerspectiveDsl.g:22587:3: ruleXExpressionOrVarDeclaration
+            // InternalPerspectiveDsl.g:22794:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:22795:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0()); 
@@ -73480,17 +74134,17 @@
 
 
     // $ANTLR start "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0"
-    // InternalPerspectiveDsl.g:22596:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 : ( ruleJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:22804: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:22600:1: ( ( ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:22601:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22808:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:22809:2: ( ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:22601:2: ( ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:22602:3: ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:22809:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22810:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); 
@@ -73525,17 +74179,17 @@
 
 
     // $ANTLR start "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1"
-    // InternalPerspectiveDsl.g:22611:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 : ( ruleJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:22819: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:22615:1: ( ( ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:22616:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22823:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:22824:2: ( ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:22616:2: ( ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:22617:3: ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:22824:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22825:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); 
@@ -73570,28 +74224,28 @@
 
 
     // $ANTLR start "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2"
-    // InternalPerspectiveDsl.g:22626:1: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 : ( ( '|' ) ) ;
+    // InternalPerspectiveDsl.g:22834:1: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 : ( ( '|' ) ) ;
     public final void rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22630:1: ( ( ( '|' ) ) )
-            // InternalPerspectiveDsl.g:22631:2: ( ( '|' ) )
+            // InternalPerspectiveDsl.g:22838:1: ( ( ( '|' ) ) )
+            // InternalPerspectiveDsl.g:22839:2: ( ( '|' ) )
             {
-            // InternalPerspectiveDsl.g:22631:2: ( ( '|' ) )
-            // InternalPerspectiveDsl.g:22632:3: ( '|' )
+            // InternalPerspectiveDsl.g:22839:2: ( ( '|' ) )
+            // InternalPerspectiveDsl.g:22840:3: ( '|' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22633:3: ( '|' )
-            // InternalPerspectiveDsl.g:22634:4: '|'
+            // InternalPerspectiveDsl.g:22841:3: ( '|' )
+            // InternalPerspectiveDsl.g:22842:4: '|'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
             }
-            match(input,122,FOLLOW_2); if (state.failed) return ;
+            match(input,124,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
             }
@@ -73623,17 +74277,17 @@
 
 
     // $ANTLR start "rule__XShortClosure__ExpressionAssignment_1"
-    // InternalPerspectiveDsl.g:22645:1: rule__XShortClosure__ExpressionAssignment_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:22853:1: rule__XShortClosure__ExpressionAssignment_1 : ( ruleXExpression ) ;
     public final void rule__XShortClosure__ExpressionAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22649:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22650:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22857:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22858:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22650:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22651:3: ruleXExpression
+            // InternalPerspectiveDsl.g:22858:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22859:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); 
@@ -73668,17 +74322,17 @@
 
 
     // $ANTLR start "rule__XIfExpression__IfAssignment_3"
-    // InternalPerspectiveDsl.g:22660:1: rule__XIfExpression__IfAssignment_3 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:22868:1: rule__XIfExpression__IfAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XIfExpression__IfAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22664:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22665:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22872:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22873:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22665:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22666:3: ruleXExpression
+            // InternalPerspectiveDsl.g:22873:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22874:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0()); 
@@ -73713,17 +74367,17 @@
 
 
     // $ANTLR start "rule__XIfExpression__ThenAssignment_5"
-    // InternalPerspectiveDsl.g:22675:1: rule__XIfExpression__ThenAssignment_5 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:22883:1: rule__XIfExpression__ThenAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XIfExpression__ThenAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22679:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22680:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22887:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22888:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22680:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22681:3: ruleXExpression
+            // InternalPerspectiveDsl.g:22888:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22889:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0()); 
@@ -73758,17 +74412,17 @@
 
 
     // $ANTLR start "rule__XIfExpression__ElseAssignment_6_1"
-    // InternalPerspectiveDsl.g:22690:1: rule__XIfExpression__ElseAssignment_6_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:22898:1: rule__XIfExpression__ElseAssignment_6_1 : ( ruleXExpression ) ;
     public final void rule__XIfExpression__ElseAssignment_6_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22694:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22695:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22902:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22903:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22695:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22696:3: ruleXExpression
+            // InternalPerspectiveDsl.g:22903:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22904:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0()); 
@@ -73803,17 +74457,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1"
-    // InternalPerspectiveDsl.g:22705:1: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 : ( ruleJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:22913: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:22709:1: ( ( ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:22710:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22917:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:22918:2: ( ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:22710:2: ( ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:22711:3: ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:22918:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22919:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0()); 
@@ -73848,17 +74502,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__SwitchAssignment_2_0_1"
-    // InternalPerspectiveDsl.g:22720:1: rule__XSwitchExpression__SwitchAssignment_2_0_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:22928: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:22724:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22725:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22932:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22933:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22725:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22726:3: ruleXExpression
+            // InternalPerspectiveDsl.g:22933:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22934:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0()); 
@@ -73893,17 +74547,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0"
-    // InternalPerspectiveDsl.g:22735:1: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 : ( ruleJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:22943: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:22739:1: ( ( ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:22740:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22947:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:22948:2: ( ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:22740:2: ( ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:22741:3: ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:22948:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22949:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0()); 
@@ -73938,17 +74592,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__SwitchAssignment_2_1_1"
-    // InternalPerspectiveDsl.g:22750:1: rule__XSwitchExpression__SwitchAssignment_2_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:22958: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:22754:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22755:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22962:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22963:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22755:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22756:3: ruleXExpression
+            // InternalPerspectiveDsl.g:22963:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22964:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0()); 
@@ -73983,17 +74637,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__CasesAssignment_4"
-    // InternalPerspectiveDsl.g:22765:1: rule__XSwitchExpression__CasesAssignment_4 : ( ruleXCasePart ) ;
+    // InternalPerspectiveDsl.g:22973:1: rule__XSwitchExpression__CasesAssignment_4 : ( ruleXCasePart ) ;
     public final void rule__XSwitchExpression__CasesAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22769:1: ( ( ruleXCasePart ) )
-            // InternalPerspectiveDsl.g:22770:2: ( ruleXCasePart )
+            // InternalPerspectiveDsl.g:22977:1: ( ( ruleXCasePart ) )
+            // InternalPerspectiveDsl.g:22978:2: ( ruleXCasePart )
             {
-            // InternalPerspectiveDsl.g:22770:2: ( ruleXCasePart )
-            // InternalPerspectiveDsl.g:22771:3: ruleXCasePart
+            // InternalPerspectiveDsl.g:22978:2: ( ruleXCasePart )
+            // InternalPerspectiveDsl.g:22979:3: ruleXCasePart
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0()); 
@@ -74028,17 +74682,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__DefaultAssignment_5_2"
-    // InternalPerspectiveDsl.g:22780:1: rule__XSwitchExpression__DefaultAssignment_5_2 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:22988:1: rule__XSwitchExpression__DefaultAssignment_5_2 : ( ruleXExpression ) ;
     public final void rule__XSwitchExpression__DefaultAssignment_5_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22784:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22785:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22992:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22993:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22785:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22786:3: ruleXExpression
+            // InternalPerspectiveDsl.g:22993:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22994:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0()); 
@@ -74073,17 +74727,17 @@
 
 
     // $ANTLR start "rule__XCasePart__TypeGuardAssignment_1"
-    // InternalPerspectiveDsl.g:22795:1: rule__XCasePart__TypeGuardAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:23003:1: rule__XCasePart__TypeGuardAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__XCasePart__TypeGuardAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22799:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:22800:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23007:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23008:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:22800:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:22801:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:23008:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23009:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0()); 
@@ -74118,17 +74772,17 @@
 
 
     // $ANTLR start "rule__XCasePart__CaseAssignment_2_1"
-    // InternalPerspectiveDsl.g:22810:1: rule__XCasePart__CaseAssignment_2_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23018:1: rule__XCasePart__CaseAssignment_2_1 : ( ruleXExpression ) ;
     public final void rule__XCasePart__CaseAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22814:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22815:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23022:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23023:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22815:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22816:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23023:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23024:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0()); 
@@ -74163,17 +74817,17 @@
 
 
     // $ANTLR start "rule__XCasePart__ThenAssignment_3_0_1"
-    // InternalPerspectiveDsl.g:22825:1: rule__XCasePart__ThenAssignment_3_0_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23033: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:22829:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22830:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23037:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23038:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22830:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22831:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23038:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23039:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0_1_0()); 
@@ -74208,28 +74862,28 @@
 
 
     // $ANTLR start "rule__XCasePart__FallThroughAssignment_3_1"
-    // InternalPerspectiveDsl.g:22840:1: rule__XCasePart__FallThroughAssignment_3_1 : ( ( ',' ) ) ;
+    // InternalPerspectiveDsl.g:23048:1: rule__XCasePart__FallThroughAssignment_3_1 : ( ( ',' ) ) ;
     public final void rule__XCasePart__FallThroughAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22844:1: ( ( ( ',' ) ) )
-            // InternalPerspectiveDsl.g:22845:2: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:23052:1: ( ( ( ',' ) ) )
+            // InternalPerspectiveDsl.g:23053:2: ( ( ',' ) )
             {
-            // InternalPerspectiveDsl.g:22845:2: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:22846:3: ( ',' )
+            // InternalPerspectiveDsl.g:23053:2: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:23054:3: ( ',' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22847:3: ( ',' )
-            // InternalPerspectiveDsl.g:22848:4: ','
+            // InternalPerspectiveDsl.g:23055:3: ( ',' )
+            // InternalPerspectiveDsl.g:23056:4: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
             }
@@ -74261,17 +74915,17 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3"
-    // InternalPerspectiveDsl.g:22859:1: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 : ( ruleJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:23067: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:22863:1: ( ( ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:22864:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23071:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:23072:2: ( ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:22864:2: ( ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:22865:3: ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:23072:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23073:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0()); 
@@ -74306,17 +74960,17 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__ForExpressionAssignment_1"
-    // InternalPerspectiveDsl.g:22874:1: rule__XForLoopExpression__ForExpressionAssignment_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23082:1: rule__XForLoopExpression__ForExpressionAssignment_1 : ( ruleXExpression ) ;
     public final void rule__XForLoopExpression__ForExpressionAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22878:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22879:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23086:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23087:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22879:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22880:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23087:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23088:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0()); 
@@ -74351,17 +75005,17 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__EachExpressionAssignment_3"
-    // InternalPerspectiveDsl.g:22889:1: rule__XForLoopExpression__EachExpressionAssignment_3 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23097:1: rule__XForLoopExpression__EachExpressionAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XForLoopExpression__EachExpressionAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22893:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22894:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23101:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23102:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22894:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22895:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23102:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23103:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_3_0()); 
@@ -74396,17 +75050,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0"
-    // InternalPerspectiveDsl.g:22904:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalPerspectiveDsl.g:23112:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 : ( ruleXExpressionOrVarDeclaration ) ;
     public final void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22908:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalPerspectiveDsl.g:22909:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:23116:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalPerspectiveDsl.g:23117:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalPerspectiveDsl.g:22909:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalPerspectiveDsl.g:22910:3: ruleXExpressionOrVarDeclaration
+            // InternalPerspectiveDsl.g:23117:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:23118:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0()); 
@@ -74441,17 +75095,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:22919:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalPerspectiveDsl.g:23127: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:22923:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalPerspectiveDsl.g:22924:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:23131:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalPerspectiveDsl.g:23132:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalPerspectiveDsl.g:22924:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalPerspectiveDsl.g:22925:3: ruleXExpressionOrVarDeclaration
+            // InternalPerspectiveDsl.g:23132:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:23133:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0()); 
@@ -74486,17 +75140,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__ExpressionAssignment_5"
-    // InternalPerspectiveDsl.g:22934:1: rule__XBasicForLoopExpression__ExpressionAssignment_5 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23142:1: rule__XBasicForLoopExpression__ExpressionAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XBasicForLoopExpression__ExpressionAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22938:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22939:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23146:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23147:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22939:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22940:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23147:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23148:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0()); 
@@ -74531,17 +75185,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0"
-    // InternalPerspectiveDsl.g:22949:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23157:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 : ( ruleXExpression ) ;
     public final void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22953:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22954:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23161:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23162:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22954:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22955:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23162:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23163:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0()); 
@@ -74576,17 +75230,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1"
-    // InternalPerspectiveDsl.g:22964:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23172: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:22968:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22969:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23176:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23177:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22969:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22970:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23177:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23178:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0()); 
@@ -74621,17 +75275,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__EachExpressionAssignment_9"
-    // InternalPerspectiveDsl.g:22979:1: rule__XBasicForLoopExpression__EachExpressionAssignment_9 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23187:1: rule__XBasicForLoopExpression__EachExpressionAssignment_9 : ( ruleXExpression ) ;
     public final void rule__XBasicForLoopExpression__EachExpressionAssignment_9() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22983:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22984:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23191:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23192:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22984:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:22985:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23192:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23193:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_9_0()); 
@@ -74666,17 +75320,17 @@
 
 
     // $ANTLR start "rule__XWhileExpression__PredicateAssignment_3"
-    // InternalPerspectiveDsl.g:22994:1: rule__XWhileExpression__PredicateAssignment_3 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23202:1: rule__XWhileExpression__PredicateAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XWhileExpression__PredicateAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22998:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:22999:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23206:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23207:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:22999:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23000:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23207:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23208:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0()); 
@@ -74711,17 +75365,17 @@
 
 
     // $ANTLR start "rule__XWhileExpression__BodyAssignment_5"
-    // InternalPerspectiveDsl.g:23009:1: rule__XWhileExpression__BodyAssignment_5 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23217:1: rule__XWhileExpression__BodyAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XWhileExpression__BodyAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23013:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23014:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23221:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23222:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23014:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23015:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23222:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23223:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0()); 
@@ -74756,17 +75410,17 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__BodyAssignment_2"
-    // InternalPerspectiveDsl.g:23024:1: rule__XDoWhileExpression__BodyAssignment_2 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23232:1: rule__XDoWhileExpression__BodyAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XDoWhileExpression__BodyAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23028:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23029:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23236:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23237:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23029:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23030:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23237:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23238:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0()); 
@@ -74801,17 +75455,17 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__PredicateAssignment_5"
-    // InternalPerspectiveDsl.g:23039:1: rule__XDoWhileExpression__PredicateAssignment_5 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23247:1: rule__XDoWhileExpression__PredicateAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XDoWhileExpression__PredicateAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23043:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23044:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23251:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23252:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23044:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23045:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23252:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23253:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0()); 
@@ -74846,17 +75500,17 @@
 
 
     // $ANTLR start "rule__XBlockExpression__ExpressionsAssignment_2_0"
-    // InternalPerspectiveDsl.g:23054:1: rule__XBlockExpression__ExpressionsAssignment_2_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalPerspectiveDsl.g:23262:1: rule__XBlockExpression__ExpressionsAssignment_2_0 : ( ruleXExpressionOrVarDeclaration ) ;
     public final void rule__XBlockExpression__ExpressionsAssignment_2_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23058:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalPerspectiveDsl.g:23059:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:23266:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalPerspectiveDsl.g:23267:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalPerspectiveDsl.g:23059:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalPerspectiveDsl.g:23060:3: ruleXExpressionOrVarDeclaration
+            // InternalPerspectiveDsl.g:23267:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:23268:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0()); 
@@ -74891,28 +75545,28 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__WriteableAssignment_1_0"
-    // InternalPerspectiveDsl.g:23069:1: rule__XVariableDeclaration__WriteableAssignment_1_0 : ( ( 'var' ) ) ;
+    // InternalPerspectiveDsl.g:23277:1: rule__XVariableDeclaration__WriteableAssignment_1_0 : ( ( 'var' ) ) ;
     public final void rule__XVariableDeclaration__WriteableAssignment_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23073:1: ( ( ( 'var' ) ) )
-            // InternalPerspectiveDsl.g:23074:2: ( ( 'var' ) )
+            // InternalPerspectiveDsl.g:23281:1: ( ( ( 'var' ) ) )
+            // InternalPerspectiveDsl.g:23282:2: ( ( 'var' ) )
             {
-            // InternalPerspectiveDsl.g:23074:2: ( ( 'var' ) )
-            // InternalPerspectiveDsl.g:23075:3: ( 'var' )
+            // InternalPerspectiveDsl.g:23282:2: ( ( 'var' ) )
+            // InternalPerspectiveDsl.g:23283:3: ( 'var' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:23076:3: ( 'var' )
-            // InternalPerspectiveDsl.g:23077:4: 'var'
+            // InternalPerspectiveDsl.g:23284:3: ( 'var' )
+            // InternalPerspectiveDsl.g:23285:4: 'var'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_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.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
             }
@@ -74944,17 +75598,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__TypeAssignment_2_0_0_0"
-    // InternalPerspectiveDsl.g:23088:1: rule__XVariableDeclaration__TypeAssignment_2_0_0_0 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:23296: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:23092:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:23093:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23300:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23301:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:23093:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:23094:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:23301:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23302:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0()); 
@@ -74989,17 +75643,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__NameAssignment_2_0_0_1"
-    // InternalPerspectiveDsl.g:23103:1: rule__XVariableDeclaration__NameAssignment_2_0_0_1 : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:23311: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:23107:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:23108:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:23315:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:23316:2: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:23108:2: ( ruleValidID )
-            // InternalPerspectiveDsl.g:23109:3: ruleValidID
+            // InternalPerspectiveDsl.g:23316:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:23317:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0()); 
@@ -75034,17 +75688,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__NameAssignment_2_1"
-    // InternalPerspectiveDsl.g:23118:1: rule__XVariableDeclaration__NameAssignment_2_1 : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:23326:1: rule__XVariableDeclaration__NameAssignment_2_1 : ( ruleValidID ) ;
     public final void rule__XVariableDeclaration__NameAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23122:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:23123:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:23330:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:23331:2: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:23123:2: ( ruleValidID )
-            // InternalPerspectiveDsl.g:23124:3: ruleValidID
+            // InternalPerspectiveDsl.g:23331:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:23332:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0()); 
@@ -75079,17 +75733,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__RightAssignment_3_1"
-    // InternalPerspectiveDsl.g:23133:1: rule__XVariableDeclaration__RightAssignment_3_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23341:1: rule__XVariableDeclaration__RightAssignment_3_1 : ( ruleXExpression ) ;
     public final void rule__XVariableDeclaration__RightAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23137:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23138:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23345:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23346:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23138:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23139:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23346:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23347:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0()); 
@@ -75124,17 +75778,17 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__ParameterTypeAssignment_0"
-    // InternalPerspectiveDsl.g:23148:1: rule__JvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:23356:1: rule__JvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23152:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:23153:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23360:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23361:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:23153:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:23154:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:23361:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23362:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
@@ -75169,17 +75823,17 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__NameAssignment_1"
-    // InternalPerspectiveDsl.g:23163:1: rule__JvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:23371:1: rule__JvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
     public final void rule__JvmFormalParameter__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23167:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:23168:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:23375:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:23376:2: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:23168:2: ( ruleValidID )
-            // InternalPerspectiveDsl.g:23169:3: ruleValidID
+            // InternalPerspectiveDsl.g:23376:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:23377:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
@@ -75214,17 +75868,17 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__ParameterTypeAssignment_0"
-    // InternalPerspectiveDsl.g:23178:1: rule__FullJvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:23386:1: rule__FullJvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
     public final void rule__FullJvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23182:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:23183:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23390:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23391:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:23183:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:23184:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:23391:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23392:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
@@ -75259,17 +75913,17 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__NameAssignment_1"
-    // InternalPerspectiveDsl.g:23193:1: rule__FullJvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:23401:1: rule__FullJvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
     public final void rule__FullJvmFormalParameter__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23197:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:23198:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:23405:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:23406:2: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:23198:2: ( ruleValidID )
-            // InternalPerspectiveDsl.g:23199:3: ruleValidID
+            // InternalPerspectiveDsl.g:23406:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:23407:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
@@ -75304,17 +75958,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__TypeArgumentsAssignment_1_1"
-    // InternalPerspectiveDsl.g:23208:1: rule__XFeatureCall__TypeArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:23416:1: rule__XFeatureCall__TypeArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XFeatureCall__TypeArgumentsAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23212:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:23213:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23420:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23421:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:23213:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:23214:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:23421:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23422:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
@@ -75349,17 +76003,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1"
-    // InternalPerspectiveDsl.g:23223:1: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:23431: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:23227:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:23228:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23435:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23436:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:23228:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:23229:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:23436:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23437:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
@@ -75394,23 +76048,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureAssignment_2"
-    // InternalPerspectiveDsl.g:23238:1: rule__XFeatureCall__FeatureAssignment_2 : ( ( ruleIdOrSuper ) ) ;
+    // InternalPerspectiveDsl.g:23446:1: rule__XFeatureCall__FeatureAssignment_2 : ( ( ruleIdOrSuper ) ) ;
     public final void rule__XFeatureCall__FeatureAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23242:1: ( ( ( ruleIdOrSuper ) ) )
-            // InternalPerspectiveDsl.g:23243:2: ( ( ruleIdOrSuper ) )
+            // InternalPerspectiveDsl.g:23450:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalPerspectiveDsl.g:23451:2: ( ( ruleIdOrSuper ) )
             {
-            // InternalPerspectiveDsl.g:23243:2: ( ( ruleIdOrSuper ) )
-            // InternalPerspectiveDsl.g:23244:3: ( ruleIdOrSuper )
+            // InternalPerspectiveDsl.g:23451:2: ( ( ruleIdOrSuper ) )
+            // InternalPerspectiveDsl.g:23452:3: ( ruleIdOrSuper )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:23245:3: ( ruleIdOrSuper )
-            // InternalPerspectiveDsl.g:23246:4: ruleIdOrSuper
+            // InternalPerspectiveDsl.g:23453:3: ( ruleIdOrSuper )
+            // InternalPerspectiveDsl.g:23454:4: ruleIdOrSuper
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_2_0_1()); 
@@ -75451,28 +76105,28 @@
 
 
     // $ANTLR start "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0"
-    // InternalPerspectiveDsl.g:23257:1: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 : ( ( '(' ) ) ;
+    // InternalPerspectiveDsl.g:23465:1: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 : ( ( '(' ) ) ;
     public final void rule__XFeatureCall__ExplicitOperationCallAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23261:1: ( ( ( '(' ) ) )
-            // InternalPerspectiveDsl.g:23262:2: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:23469:1: ( ( ( '(' ) ) )
+            // InternalPerspectiveDsl.g:23470:2: ( ( '(' ) )
             {
-            // InternalPerspectiveDsl.g:23262:2: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:23263:3: ( '(' )
+            // InternalPerspectiveDsl.g:23470:2: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:23471:3: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
             }
-            // InternalPerspectiveDsl.g:23264:3: ( '(' )
-            // InternalPerspectiveDsl.g:23265:4: '('
+            // InternalPerspectiveDsl.g:23472:3: ( '(' )
+            // InternalPerspectiveDsl.g:23473:4: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
             }
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
             }
@@ -75504,17 +76158,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0"
-    // InternalPerspectiveDsl.g:23276:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 : ( ruleXShortClosure ) ;
+    // InternalPerspectiveDsl.g:23484: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:23280:1: ( ( ruleXShortClosure ) )
-            // InternalPerspectiveDsl.g:23281:2: ( ruleXShortClosure )
+            // InternalPerspectiveDsl.g:23488:1: ( ( ruleXShortClosure ) )
+            // InternalPerspectiveDsl.g:23489:2: ( ruleXShortClosure )
             {
-            // InternalPerspectiveDsl.g:23281:2: ( ruleXShortClosure )
-            // InternalPerspectiveDsl.g:23282:3: ruleXShortClosure
+            // InternalPerspectiveDsl.g:23489:2: ( ruleXShortClosure )
+            // InternalPerspectiveDsl.g:23490:3: ruleXShortClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0()); 
@@ -75549,17 +76203,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0"
-    // InternalPerspectiveDsl.g:23291:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23499: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:23295:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23296:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23503:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23504:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23296:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23297:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23504:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23505:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0()); 
@@ -75594,17 +76248,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1"
-    // InternalPerspectiveDsl.g:23306:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23514: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:23310:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23311:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23518:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23519:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23311:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23312:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23519:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23520:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0()); 
@@ -75639,17 +76293,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_4"
-    // InternalPerspectiveDsl.g:23321:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_4 : ( ruleXClosure ) ;
+    // InternalPerspectiveDsl.g:23529:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_4 : ( ruleXClosure ) ;
     public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23325:1: ( ( ruleXClosure ) )
-            // InternalPerspectiveDsl.g:23326:2: ( ruleXClosure )
+            // InternalPerspectiveDsl.g:23533:1: ( ( ruleXClosure ) )
+            // InternalPerspectiveDsl.g:23534:2: ( ruleXClosure )
             {
-            // InternalPerspectiveDsl.g:23326:2: ( ruleXClosure )
-            // InternalPerspectiveDsl.g:23327:3: ruleXClosure
+            // InternalPerspectiveDsl.g:23534:2: ( ruleXClosure )
+            // InternalPerspectiveDsl.g:23535:3: ruleXClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_4_0()); 
@@ -75684,23 +76338,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ConstructorAssignment_2"
-    // InternalPerspectiveDsl.g:23336:1: rule__XConstructorCall__ConstructorAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    // InternalPerspectiveDsl.g:23544:1: rule__XConstructorCall__ConstructorAssignment_2 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XConstructorCall__ConstructorAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23340:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalPerspectiveDsl.g:23341:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:23548:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalPerspectiveDsl.g:23549:2: ( ( ruleQualifiedName ) )
             {
-            // InternalPerspectiveDsl.g:23341:2: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:23342:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:23549:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:23550:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:23343:3: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:23344:4: ruleQualifiedName
+            // InternalPerspectiveDsl.g:23551:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:23552:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorQualifiedNameParserRuleCall_2_0_1()); 
@@ -75741,17 +76395,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__TypeArgumentsAssignment_3_1"
-    // InternalPerspectiveDsl.g:23355:1: rule__XConstructorCall__TypeArgumentsAssignment_3_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:23563:1: rule__XConstructorCall__TypeArgumentsAssignment_3_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XConstructorCall__TypeArgumentsAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23359:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:23360:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23567:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23568:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:23360:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:23361:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:23568:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23569:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0()); 
@@ -75786,17 +76440,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1"
-    // InternalPerspectiveDsl.g:23370:1: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:23578: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:23374:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:23375:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23582:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23583:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:23375:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:23376:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:23583:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23584:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0()); 
@@ -75831,28 +76485,28 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0"
-    // InternalPerspectiveDsl.g:23385:1: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 : ( ( '(' ) ) ;
+    // InternalPerspectiveDsl.g:23593:1: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 : ( ( '(' ) ) ;
     public final void rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23389:1: ( ( ( '(' ) ) )
-            // InternalPerspectiveDsl.g:23390:2: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:23597:1: ( ( ( '(' ) ) )
+            // InternalPerspectiveDsl.g:23598:2: ( ( '(' ) )
             {
-            // InternalPerspectiveDsl.g:23390:2: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:23391:3: ( '(' )
+            // InternalPerspectiveDsl.g:23598:2: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:23599:3: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
             }
-            // InternalPerspectiveDsl.g:23392:3: ( '(' )
-            // InternalPerspectiveDsl.g:23393:4: '('
+            // InternalPerspectiveDsl.g:23600:3: ( '(' )
+            // InternalPerspectiveDsl.g:23601:4: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
             }
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
             }
@@ -75884,17 +76538,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_4_1_0"
-    // InternalPerspectiveDsl.g:23404:1: rule__XConstructorCall__ArgumentsAssignment_4_1_0 : ( ruleXShortClosure ) ;
+    // InternalPerspectiveDsl.g:23612: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:23408:1: ( ( ruleXShortClosure ) )
-            // InternalPerspectiveDsl.g:23409:2: ( ruleXShortClosure )
+            // InternalPerspectiveDsl.g:23616:1: ( ( ruleXShortClosure ) )
+            // InternalPerspectiveDsl.g:23617:2: ( ruleXShortClosure )
             {
-            // InternalPerspectiveDsl.g:23409:2: ( ruleXShortClosure )
-            // InternalPerspectiveDsl.g:23410:3: ruleXShortClosure
+            // InternalPerspectiveDsl.g:23617:2: ( ruleXShortClosure )
+            // InternalPerspectiveDsl.g:23618:3: ruleXShortClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0()); 
@@ -75929,17 +76583,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0"
-    // InternalPerspectiveDsl.g:23419:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23627: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:23423:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23424:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23631:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23632:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23424:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23425:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23632:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23633:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0()); 
@@ -75974,17 +76628,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1"
-    // InternalPerspectiveDsl.g:23434:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23642: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:23438:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23439:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23646:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23647:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23439:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23440:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23647:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23648:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); 
@@ -76019,17 +76673,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_5"
-    // InternalPerspectiveDsl.g:23449:1: rule__XConstructorCall__ArgumentsAssignment_5 : ( ruleXClosure ) ;
+    // InternalPerspectiveDsl.g:23657:1: rule__XConstructorCall__ArgumentsAssignment_5 : ( ruleXClosure ) ;
     public final void rule__XConstructorCall__ArgumentsAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23453:1: ( ( ruleXClosure ) )
-            // InternalPerspectiveDsl.g:23454:2: ( ruleXClosure )
+            // InternalPerspectiveDsl.g:23661:1: ( ( ruleXClosure ) )
+            // InternalPerspectiveDsl.g:23662:2: ( ruleXClosure )
             {
-            // InternalPerspectiveDsl.g:23454:2: ( ruleXClosure )
-            // InternalPerspectiveDsl.g:23455:3: ruleXClosure
+            // InternalPerspectiveDsl.g:23662:2: ( ruleXClosure )
+            // InternalPerspectiveDsl.g:23663:3: ruleXClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0()); 
@@ -76064,28 +76718,28 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__IsTrueAssignment_1_1"
-    // InternalPerspectiveDsl.g:23464:1: rule__XBooleanLiteral__IsTrueAssignment_1_1 : ( ( 'true' ) ) ;
+    // InternalPerspectiveDsl.g:23672:1: rule__XBooleanLiteral__IsTrueAssignment_1_1 : ( ( 'true' ) ) ;
     public final void rule__XBooleanLiteral__IsTrueAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23468:1: ( ( ( 'true' ) ) )
-            // InternalPerspectiveDsl.g:23469:2: ( ( 'true' ) )
+            // InternalPerspectiveDsl.g:23676:1: ( ( ( 'true' ) ) )
+            // InternalPerspectiveDsl.g:23677:2: ( ( 'true' ) )
             {
-            // InternalPerspectiveDsl.g:23469:2: ( ( 'true' ) )
-            // InternalPerspectiveDsl.g:23470:3: ( 'true' )
+            // InternalPerspectiveDsl.g:23677:2: ( ( 'true' ) )
+            // InternalPerspectiveDsl.g:23678:3: ( 'true' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:23471:3: ( 'true' )
-            // InternalPerspectiveDsl.g:23472:4: 'true'
+            // InternalPerspectiveDsl.g:23679:3: ( 'true' )
+            // InternalPerspectiveDsl.g:23680:4: 'true'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_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.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
             }
@@ -76117,17 +76771,17 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__ValueAssignment_1"
-    // InternalPerspectiveDsl.g:23483:1: rule__XNumberLiteral__ValueAssignment_1 : ( ruleNumber ) ;
+    // InternalPerspectiveDsl.g:23691:1: rule__XNumberLiteral__ValueAssignment_1 : ( ruleNumber ) ;
     public final void rule__XNumberLiteral__ValueAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23487:1: ( ( ruleNumber ) )
-            // InternalPerspectiveDsl.g:23488:2: ( ruleNumber )
+            // InternalPerspectiveDsl.g:23695:1: ( ( ruleNumber ) )
+            // InternalPerspectiveDsl.g:23696:2: ( ruleNumber )
             {
-            // InternalPerspectiveDsl.g:23488:2: ( ruleNumber )
-            // InternalPerspectiveDsl.g:23489:3: ruleNumber
+            // InternalPerspectiveDsl.g:23696:2: ( ruleNumber )
+            // InternalPerspectiveDsl.g:23697:3: ruleNumber
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0()); 
@@ -76162,17 +76816,17 @@
 
 
     // $ANTLR start "rule__XStringLiteral__ValueAssignment_1"
-    // InternalPerspectiveDsl.g:23498:1: rule__XStringLiteral__ValueAssignment_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:23706:1: rule__XStringLiteral__ValueAssignment_1 : ( RULE_STRING ) ;
     public final void rule__XStringLiteral__ValueAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23502:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:23503:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:23710:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:23711:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:23503:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:23504:3: RULE_STRING
+            // InternalPerspectiveDsl.g:23711:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:23712:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
@@ -76203,23 +76857,23 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__TypeAssignment_3"
-    // InternalPerspectiveDsl.g:23513:1: rule__XTypeLiteral__TypeAssignment_3 : ( ( ruleQualifiedName ) ) ;
+    // InternalPerspectiveDsl.g:23721:1: rule__XTypeLiteral__TypeAssignment_3 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XTypeLiteral__TypeAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23517:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalPerspectiveDsl.g:23518:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:23725:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalPerspectiveDsl.g:23726:2: ( ( ruleQualifiedName ) )
             {
-            // InternalPerspectiveDsl.g:23518:2: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:23519:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:23726:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:23727:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
             }
-            // InternalPerspectiveDsl.g:23520:3: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:23521:4: ruleQualifiedName
+            // InternalPerspectiveDsl.g:23728:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:23729:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeQualifiedNameParserRuleCall_3_0_1()); 
@@ -76260,17 +76914,17 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__ArrayDimensionsAssignment_4"
-    // InternalPerspectiveDsl.g:23532:1: rule__XTypeLiteral__ArrayDimensionsAssignment_4 : ( ruleArrayBrackets ) ;
+    // InternalPerspectiveDsl.g:23740:1: rule__XTypeLiteral__ArrayDimensionsAssignment_4 : ( ruleArrayBrackets ) ;
     public final void rule__XTypeLiteral__ArrayDimensionsAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23536:1: ( ( ruleArrayBrackets ) )
-            // InternalPerspectiveDsl.g:23537:2: ( ruleArrayBrackets )
+            // InternalPerspectiveDsl.g:23744:1: ( ( ruleArrayBrackets ) )
+            // InternalPerspectiveDsl.g:23745:2: ( ruleArrayBrackets )
             {
-            // InternalPerspectiveDsl.g:23537:2: ( ruleArrayBrackets )
-            // InternalPerspectiveDsl.g:23538:3: ruleArrayBrackets
+            // InternalPerspectiveDsl.g:23745:2: ( ruleArrayBrackets )
+            // InternalPerspectiveDsl.g:23746:3: ruleArrayBrackets
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); 
@@ -76305,17 +76959,17 @@
 
 
     // $ANTLR start "rule__XThrowExpression__ExpressionAssignment_2"
-    // InternalPerspectiveDsl.g:23547:1: rule__XThrowExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23755:1: rule__XThrowExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XThrowExpression__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23551:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23552:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23759:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23760:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23552:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23553:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23760:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23761:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
@@ -76350,17 +77004,17 @@
 
 
     // $ANTLR start "rule__XReturnExpression__ExpressionAssignment_2"
-    // InternalPerspectiveDsl.g:23562:1: rule__XReturnExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23770:1: rule__XReturnExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XReturnExpression__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23566:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23567:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23774:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23775:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23567:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23568:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23775:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23776:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
@@ -76395,17 +77049,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__ExpressionAssignment_2"
-    // InternalPerspectiveDsl.g:23577:1: rule__XTryCatchFinallyExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23785:1: rule__XTryCatchFinallyExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XTryCatchFinallyExpression__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23581:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23582:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23789:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23790:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23582:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23583:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23790:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23791:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
@@ -76440,17 +77094,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0"
-    // InternalPerspectiveDsl.g:23592:1: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 : ( ruleXCatchClause ) ;
+    // InternalPerspectiveDsl.g:23800: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:23596:1: ( ( ruleXCatchClause ) )
-            // InternalPerspectiveDsl.g:23597:2: ( ruleXCatchClause )
+            // InternalPerspectiveDsl.g:23804:1: ( ( ruleXCatchClause ) )
+            // InternalPerspectiveDsl.g:23805:2: ( ruleXCatchClause )
             {
-            // InternalPerspectiveDsl.g:23597:2: ( ruleXCatchClause )
-            // InternalPerspectiveDsl.g:23598:3: ruleXCatchClause
+            // InternalPerspectiveDsl.g:23805:2: ( ruleXCatchClause )
+            // InternalPerspectiveDsl.g:23806:3: ruleXCatchClause
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
@@ -76485,17 +77139,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1"
-    // InternalPerspectiveDsl.g:23607:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23815: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:23611:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23612:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23819:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23820:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23612:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23613:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23820:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23821:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
@@ -76530,17 +77184,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:23622:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23830: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:23626:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23627:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23834:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23835:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23627:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23628:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23835:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23836:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
@@ -76575,17 +77229,17 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__ParamAssignment_1"
-    // InternalPerspectiveDsl.g:23637:1: rule__XSynchronizedExpression__ParamAssignment_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23845:1: rule__XSynchronizedExpression__ParamAssignment_1 : ( ruleXExpression ) ;
     public final void rule__XSynchronizedExpression__ParamAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23641:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23642:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23849:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23850:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23642:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23643:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23850:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23851:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0()); 
@@ -76620,17 +77274,17 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__ExpressionAssignment_3"
-    // InternalPerspectiveDsl.g:23652:1: rule__XSynchronizedExpression__ExpressionAssignment_3 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23860:1: rule__XSynchronizedExpression__ExpressionAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XSynchronizedExpression__ExpressionAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23656:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23657:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23864:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23865:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23657:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23658:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23865:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23866:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0()); 
@@ -76665,17 +77319,17 @@
 
 
     // $ANTLR start "rule__XCatchClause__DeclaredParamAssignment_2"
-    // InternalPerspectiveDsl.g:23667:1: rule__XCatchClause__DeclaredParamAssignment_2 : ( ruleFullJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:23875:1: rule__XCatchClause__DeclaredParamAssignment_2 : ( ruleFullJvmFormalParameter ) ;
     public final void rule__XCatchClause__DeclaredParamAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23671:1: ( ( ruleFullJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:23672:2: ( ruleFullJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23879:1: ( ( ruleFullJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:23880:2: ( ruleFullJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:23672:2: ( ruleFullJvmFormalParameter )
-            // InternalPerspectiveDsl.g:23673:3: ruleFullJvmFormalParameter
+            // InternalPerspectiveDsl.g:23880:2: ( ruleFullJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23881:3: ruleFullJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); 
@@ -76710,17 +77364,17 @@
 
 
     // $ANTLR start "rule__XCatchClause__ExpressionAssignment_4"
-    // InternalPerspectiveDsl.g:23682:1: rule__XCatchClause__ExpressionAssignment_4 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23890:1: rule__XCatchClause__ExpressionAssignment_4 : ( ruleXExpression ) ;
     public final void rule__XCatchClause__ExpressionAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23686:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23687:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23894:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23895:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23687:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23688:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23895:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23896:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); 
@@ -76755,17 +77409,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0"
-    // InternalPerspectiveDsl.g:23697:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:23905: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:23701:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:23702:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23909:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23910:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:23702:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:23703:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:23910:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23911:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); 
@@ -76800,17 +77454,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1"
-    // InternalPerspectiveDsl.g:23712:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:23920: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:23716:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:23717:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23924:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23925:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:23717:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:23718:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:23925:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23926:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); 
@@ -76845,17 +77499,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__ReturnTypeAssignment_2"
-    // InternalPerspectiveDsl.g:23727:1: rule__XFunctionTypeRef__ReturnTypeAssignment_2 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:23935:1: rule__XFunctionTypeRef__ReturnTypeAssignment_2 : ( ruleJvmTypeReference ) ;
     public final void rule__XFunctionTypeRef__ReturnTypeAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23731:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:23732:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23939:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23940:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:23732:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:23733:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:23940:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23941:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); 
@@ -76890,23 +77544,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__TypeAssignment_0"
-    // InternalPerspectiveDsl.g:23742:1: rule__JvmParameterizedTypeReference__TypeAssignment_0 : ( ( ruleQualifiedName ) ) ;
+    // InternalPerspectiveDsl.g:23950:1: rule__JvmParameterizedTypeReference__TypeAssignment_0 : ( ( ruleQualifiedName ) ) ;
     public final void rule__JvmParameterizedTypeReference__TypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23746:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalPerspectiveDsl.g:23747:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:23954:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalPerspectiveDsl.g:23955:2: ( ( ruleQualifiedName ) )
             {
-            // InternalPerspectiveDsl.g:23747:2: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:23748:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:23955:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:23956:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
             }
-            // InternalPerspectiveDsl.g:23749:3: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:23750:4: ruleQualifiedName
+            // InternalPerspectiveDsl.g:23957:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:23958:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeQualifiedNameParserRuleCall_0_0_1()); 
@@ -76947,17 +77601,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1"
-    // InternalPerspectiveDsl.g:23761:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:23969:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23765:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:23766:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23973:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23974:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:23766:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:23767:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:23974:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23975:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
@@ -76992,17 +77646,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1"
-    // InternalPerspectiveDsl.g:23776:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:23984: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:23780:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:23781:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23988:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23989:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:23781:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:23782:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:23989:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23990:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
@@ -77037,23 +77691,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1"
-    // InternalPerspectiveDsl.g:23791:1: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 : ( ( ruleValidID ) ) ;
+    // InternalPerspectiveDsl.g:23999: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:23795:1: ( ( ( ruleValidID ) ) )
-            // InternalPerspectiveDsl.g:23796:2: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:24003:1: ( ( ( ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:24004:2: ( ( ruleValidID ) )
             {
-            // InternalPerspectiveDsl.g:23796:2: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:23797:3: ( ruleValidID )
+            // InternalPerspectiveDsl.g:24004:2: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:24005:3: ( ruleValidID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); 
             }
-            // InternalPerspectiveDsl.g:23798:3: ( ruleValidID )
-            // InternalPerspectiveDsl.g:23799:4: ruleValidID
+            // InternalPerspectiveDsl.g:24006:3: ( ruleValidID )
+            // InternalPerspectiveDsl.g:24007:4: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeValidIDParserRuleCall_1_4_1_0_1()); 
@@ -77094,17 +77748,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1"
-    // InternalPerspectiveDsl.g:23810:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:24018: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:23814:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:23815:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24022:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:24023:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:23815:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:23816:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:24023:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24024:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0()); 
@@ -77139,17 +77793,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1"
-    // InternalPerspectiveDsl.g:23825:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:24033: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:23829:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:23830:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24037:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:24038:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:23830:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:23831:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:24038:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24039:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0()); 
@@ -77184,17 +77838,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0"
-    // InternalPerspectiveDsl.g:23840:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 : ( ruleJvmUpperBound ) ;
+    // InternalPerspectiveDsl.g:24048: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:23844:1: ( ( ruleJvmUpperBound ) )
-            // InternalPerspectiveDsl.g:23845:2: ( ruleJvmUpperBound )
+            // InternalPerspectiveDsl.g:24052:1: ( ( ruleJvmUpperBound ) )
+            // InternalPerspectiveDsl.g:24053:2: ( ruleJvmUpperBound )
             {
-            // InternalPerspectiveDsl.g:23845:2: ( ruleJvmUpperBound )
-            // InternalPerspectiveDsl.g:23846:3: ruleJvmUpperBound
+            // InternalPerspectiveDsl.g:24053:2: ( ruleJvmUpperBound )
+            // InternalPerspectiveDsl.g:24054:3: ruleJvmUpperBound
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0()); 
@@ -77229,17 +77883,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1"
-    // InternalPerspectiveDsl.g:23855:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 : ( ruleJvmUpperBoundAnded ) ;
+    // InternalPerspectiveDsl.g:24063: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:23859:1: ( ( ruleJvmUpperBoundAnded ) )
-            // InternalPerspectiveDsl.g:23860:2: ( ruleJvmUpperBoundAnded )
+            // InternalPerspectiveDsl.g:24067:1: ( ( ruleJvmUpperBoundAnded ) )
+            // InternalPerspectiveDsl.g:24068:2: ( ruleJvmUpperBoundAnded )
             {
-            // InternalPerspectiveDsl.g:23860:2: ( ruleJvmUpperBoundAnded )
-            // InternalPerspectiveDsl.g:23861:3: ruleJvmUpperBoundAnded
+            // InternalPerspectiveDsl.g:24068:2: ( ruleJvmUpperBoundAnded )
+            // InternalPerspectiveDsl.g:24069:3: ruleJvmUpperBoundAnded
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0()); 
@@ -77274,17 +77928,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0"
-    // InternalPerspectiveDsl.g:23870:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 : ( ruleJvmLowerBound ) ;
+    // InternalPerspectiveDsl.g:24078: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:23874:1: ( ( ruleJvmLowerBound ) )
-            // InternalPerspectiveDsl.g:23875:2: ( ruleJvmLowerBound )
+            // InternalPerspectiveDsl.g:24082:1: ( ( ruleJvmLowerBound ) )
+            // InternalPerspectiveDsl.g:24083:2: ( ruleJvmLowerBound )
             {
-            // InternalPerspectiveDsl.g:23875:2: ( ruleJvmLowerBound )
-            // InternalPerspectiveDsl.g:23876:3: ruleJvmLowerBound
+            // InternalPerspectiveDsl.g:24083:2: ( ruleJvmLowerBound )
+            // InternalPerspectiveDsl.g:24084:3: ruleJvmLowerBound
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0()); 
@@ -77319,17 +77973,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1"
-    // InternalPerspectiveDsl.g:23885:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 : ( ruleJvmLowerBoundAnded ) ;
+    // InternalPerspectiveDsl.g:24093: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:23889:1: ( ( ruleJvmLowerBoundAnded ) )
-            // InternalPerspectiveDsl.g:23890:2: ( ruleJvmLowerBoundAnded )
+            // InternalPerspectiveDsl.g:24097:1: ( ( ruleJvmLowerBoundAnded ) )
+            // InternalPerspectiveDsl.g:24098:2: ( ruleJvmLowerBoundAnded )
             {
-            // InternalPerspectiveDsl.g:23890:2: ( ruleJvmLowerBoundAnded )
-            // InternalPerspectiveDsl.g:23891:3: ruleJvmLowerBoundAnded
+            // InternalPerspectiveDsl.g:24098:2: ( ruleJvmLowerBoundAnded )
+            // InternalPerspectiveDsl.g:24099:3: ruleJvmLowerBoundAnded
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0()); 
@@ -77364,17 +78018,17 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__TypeReferenceAssignment_1"
-    // InternalPerspectiveDsl.g:23900:1: rule__JvmUpperBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:24108:1: rule__JvmUpperBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmUpperBound__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23904:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:23905:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24112:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24113:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:23905:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:23906:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:24113:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24114:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -77409,17 +78063,17 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1"
-    // InternalPerspectiveDsl.g:23915:1: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:24123:1: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmUpperBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23919:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:23920:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24127:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24128:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:23920:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:23921:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:24128:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24129:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -77454,17 +78108,17 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__TypeReferenceAssignment_1"
-    // InternalPerspectiveDsl.g:23930:1: rule__JvmLowerBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:24138:1: rule__JvmLowerBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmLowerBound__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23934:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:23935:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24142:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24143:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:23935:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:23936:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:24143:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24144:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -77499,17 +78153,17 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1"
-    // InternalPerspectiveDsl.g:23945:1: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:24153:1: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmLowerBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23949:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:23950:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24157:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24158:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:23950:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:23951:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:24158:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24159:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -77544,17 +78198,17 @@
 
 
     // $ANTLR start "rule__XImportSection__ImportDeclarationsAssignment"
-    // InternalPerspectiveDsl.g:23960:1: rule__XImportSection__ImportDeclarationsAssignment : ( ruleXImportDeclaration ) ;
+    // InternalPerspectiveDsl.g:24168:1: rule__XImportSection__ImportDeclarationsAssignment : ( ruleXImportDeclaration ) ;
     public final void rule__XImportSection__ImportDeclarationsAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23964:1: ( ( ruleXImportDeclaration ) )
-            // InternalPerspectiveDsl.g:23965:2: ( ruleXImportDeclaration )
+            // InternalPerspectiveDsl.g:24172:1: ( ( ruleXImportDeclaration ) )
+            // InternalPerspectiveDsl.g:24173:2: ( ruleXImportDeclaration )
             {
-            // InternalPerspectiveDsl.g:23965:2: ( ruleXImportDeclaration )
-            // InternalPerspectiveDsl.g:23966:3: ruleXImportDeclaration
+            // InternalPerspectiveDsl.g:24173:2: ( ruleXImportDeclaration )
+            // InternalPerspectiveDsl.g:24174:3: ruleXImportDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0()); 
@@ -77587,19 +78241,19 @@
     }
     // $ANTLR end "rule__XImportSection__ImportDeclarationsAssignment"
 
-    // $ANTLR start synpred21_InternalPerspectiveDsl
-    public final void synpred21_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:2877:2: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) )
-        // InternalPerspectiveDsl.g:2877:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+    // $ANTLR start synpred23_InternalPerspectiveDsl
+    public final void synpred23_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:2939:2: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) )
+        // InternalPerspectiveDsl.g:2939:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
         {
-        // InternalPerspectiveDsl.g:2877:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
-        // InternalPerspectiveDsl.g:2878:3: ( rule__XAnnotation__Group_3_1_0__0 )
+        // InternalPerspectiveDsl.g:2939:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+        // InternalPerspectiveDsl.g:2940:3: ( rule__XAnnotation__Group_3_1_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
         }
-        // InternalPerspectiveDsl.g:2879:3: ( rule__XAnnotation__Group_3_1_0__0 )
-        // InternalPerspectiveDsl.g:2879:4: rule__XAnnotation__Group_3_1_0__0
+        // InternalPerspectiveDsl.g:2941:3: ( rule__XAnnotation__Group_3_1_0__0 )
+        // InternalPerspectiveDsl.g:2941:4: rule__XAnnotation__Group_3_1_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XAnnotation__Group_3_1_0__0();
@@ -77615,21 +78269,21 @@
 
         }
     }
-    // $ANTLR end synpred21_InternalPerspectiveDsl
+    // $ANTLR end synpred23_InternalPerspectiveDsl
 
-    // $ANTLR start synpred22_InternalPerspectiveDsl
-    public final void synpred22_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:2898:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) )
-        // InternalPerspectiveDsl.g:2898:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+    // $ANTLR start synpred24_InternalPerspectiveDsl
+    public final void synpred24_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:2960:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) )
+        // InternalPerspectiveDsl.g:2960:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
         {
-        // InternalPerspectiveDsl.g:2898:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
-        // InternalPerspectiveDsl.g:2899:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+        // InternalPerspectiveDsl.g:2960:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+        // InternalPerspectiveDsl.g:2961:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
         }
-        // InternalPerspectiveDsl.g:2900:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
-        // InternalPerspectiveDsl.g:2900:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
+        // InternalPerspectiveDsl.g:2962:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+        // InternalPerspectiveDsl.g:2962:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XAnnotationElementValueOrCommaList__Group_0__0();
@@ -77645,21 +78299,21 @@
 
         }
     }
-    // $ANTLR end synpred22_InternalPerspectiveDsl
+    // $ANTLR end synpred24_InternalPerspectiveDsl
 
-    // $ANTLR start synpred23_InternalPerspectiveDsl
-    public final void synpred23_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:2919:2: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) )
-        // InternalPerspectiveDsl.g:2919:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+    // $ANTLR start synpred25_InternalPerspectiveDsl
+    public final void synpred25_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:2981:2: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) )
+        // InternalPerspectiveDsl.g:2981:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
         {
-        // InternalPerspectiveDsl.g:2919:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
-        // InternalPerspectiveDsl.g:2920:3: ( rule__XAnnotationElementValue__Group_0__0 )
+        // InternalPerspectiveDsl.g:2981:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+        // InternalPerspectiveDsl.g:2982:3: ( rule__XAnnotationElementValue__Group_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
         }
-        // InternalPerspectiveDsl.g:2921:3: ( rule__XAnnotationElementValue__Group_0__0 )
-        // InternalPerspectiveDsl.g:2921:4: rule__XAnnotationElementValue__Group_0__0
+        // InternalPerspectiveDsl.g:2983:3: ( rule__XAnnotationElementValue__Group_0__0 )
+        // InternalPerspectiveDsl.g:2983:4: rule__XAnnotationElementValue__Group_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XAnnotationElementValue__Group_0__0();
@@ -77675,21 +78329,21 @@
 
         }
     }
-    // $ANTLR end synpred23_InternalPerspectiveDsl
+    // $ANTLR end synpred25_InternalPerspectiveDsl
 
-    // $ANTLR start synpred48_InternalPerspectiveDsl
-    public final void synpred48_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3204:2: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) )
-        // InternalPerspectiveDsl.g:3204:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+    // $ANTLR start synpred50_InternalPerspectiveDsl
+    public final void synpred50_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3266:2: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) )
+        // InternalPerspectiveDsl.g:3266:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
         {
-        // InternalPerspectiveDsl.g:3204:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
-        // InternalPerspectiveDsl.g:3205:3: ( rule__OpOther__Group_6_1_0__0 )
+        // InternalPerspectiveDsl.g:3266:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+        // InternalPerspectiveDsl.g:3267:3: ( rule__OpOther__Group_6_1_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
         }
-        // InternalPerspectiveDsl.g:3206:3: ( rule__OpOther__Group_6_1_0__0 )
-        // InternalPerspectiveDsl.g:3206:4: rule__OpOther__Group_6_1_0__0
+        // InternalPerspectiveDsl.g:3268:3: ( rule__OpOther__Group_6_1_0__0 )
+        // InternalPerspectiveDsl.g:3268:4: rule__OpOther__Group_6_1_0__0
         {
         pushFollow(FOLLOW_2);
         rule__OpOther__Group_6_1_0__0();
@@ -77705,15 +78359,15 @@
 
         }
     }
-    // $ANTLR end synpred48_InternalPerspectiveDsl
+    // $ANTLR end synpred50_InternalPerspectiveDsl
 
-    // $ANTLR start synpred49_InternalPerspectiveDsl
-    public final void synpred49_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3210:2: ( ( '<' ) )
-        // InternalPerspectiveDsl.g:3210:2: ( '<' )
+    // $ANTLR start synpred51_InternalPerspectiveDsl
+    public final void synpred51_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3272:2: ( ( '<' ) )
+        // InternalPerspectiveDsl.g:3272:2: ( '<' )
         {
-        // InternalPerspectiveDsl.g:3210:2: ( '<' )
-        // InternalPerspectiveDsl.g:3211:3: '<'
+        // InternalPerspectiveDsl.g:3272:2: ( '<' )
+        // InternalPerspectiveDsl.g:3273:3: '<'
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
@@ -77725,21 +78379,21 @@
 
         }
     }
-    // $ANTLR end synpred49_InternalPerspectiveDsl
+    // $ANTLR end synpred51_InternalPerspectiveDsl
 
-    // $ANTLR start synpred62_InternalPerspectiveDsl
-    public final void synpred62_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3423:2: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) )
-        // InternalPerspectiveDsl.g:3423:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+    // $ANTLR start synpred64_InternalPerspectiveDsl
+    public final void synpred64_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3485:2: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) )
+        // InternalPerspectiveDsl.g:3485:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
         {
-        // InternalPerspectiveDsl.g:3423:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
-        // InternalPerspectiveDsl.g:3424:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+        // InternalPerspectiveDsl.g:3485:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+        // InternalPerspectiveDsl.g:3486:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
         }
-        // InternalPerspectiveDsl.g:3425:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
-        // InternalPerspectiveDsl.g:3425:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
+        // InternalPerspectiveDsl.g:3487:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+        // InternalPerspectiveDsl.g:3487:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
         {
         pushFollow(FOLLOW_2);
         rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0();
@@ -77755,21 +78409,21 @@
 
         }
     }
-    // $ANTLR end synpred62_InternalPerspectiveDsl
+    // $ANTLR end synpred64_InternalPerspectiveDsl
 
-    // $ANTLR start synpred70_InternalPerspectiveDsl
-    public final void synpred70_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3486:2: ( ( ( ruleXForLoopExpression ) ) )
-        // InternalPerspectiveDsl.g:3486:2: ( ( ruleXForLoopExpression ) )
+    // $ANTLR start synpred72_InternalPerspectiveDsl
+    public final void synpred72_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3548:2: ( ( ( ruleXForLoopExpression ) ) )
+        // InternalPerspectiveDsl.g:3548:2: ( ( ruleXForLoopExpression ) )
         {
-        // InternalPerspectiveDsl.g:3486:2: ( ( ruleXForLoopExpression ) )
-        // InternalPerspectiveDsl.g:3487:3: ( ruleXForLoopExpression )
+        // InternalPerspectiveDsl.g:3548:2: ( ( ruleXForLoopExpression ) )
+        // InternalPerspectiveDsl.g:3549:3: ( ruleXForLoopExpression )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
         }
-        // InternalPerspectiveDsl.g:3488:3: ( ruleXForLoopExpression )
-        // InternalPerspectiveDsl.g:3488:4: ruleXForLoopExpression
+        // InternalPerspectiveDsl.g:3550:3: ( ruleXForLoopExpression )
+        // InternalPerspectiveDsl.g:3550:4: ruleXForLoopExpression
         {
         pushFollow(FOLLOW_2);
         ruleXForLoopExpression();
@@ -77785,15 +78439,15 @@
 
         }
     }
-    // $ANTLR end synpred70_InternalPerspectiveDsl
+    // $ANTLR end synpred72_InternalPerspectiveDsl
 
-    // $ANTLR start synpred71_InternalPerspectiveDsl
-    public final void synpred71_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3492:2: ( ( ruleXBasicForLoopExpression ) )
-        // InternalPerspectiveDsl.g:3492:2: ( ruleXBasicForLoopExpression )
+    // $ANTLR start synpred73_InternalPerspectiveDsl
+    public final void synpred73_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3554:2: ( ( ruleXBasicForLoopExpression ) )
+        // InternalPerspectiveDsl.g:3554:2: ( ruleXBasicForLoopExpression )
         {
-        // InternalPerspectiveDsl.g:3492:2: ( ruleXBasicForLoopExpression )
-        // InternalPerspectiveDsl.g:3493:3: ruleXBasicForLoopExpression
+        // InternalPerspectiveDsl.g:3554:2: ( ruleXBasicForLoopExpression )
+        // InternalPerspectiveDsl.g:3555:3: ruleXBasicForLoopExpression
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
@@ -77809,21 +78463,21 @@
 
         }
     }
-    // $ANTLR end synpred71_InternalPerspectiveDsl
+    // $ANTLR end synpred73_InternalPerspectiveDsl
 
-    // $ANTLR start synpred84_InternalPerspectiveDsl
-    public final void synpred84_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3615:2: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) )
-        // InternalPerspectiveDsl.g:3615:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+    // $ANTLR start synpred86_InternalPerspectiveDsl
+    public final void synpred86_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3677:2: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) )
+        // InternalPerspectiveDsl.g:3677:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
         {
-        // InternalPerspectiveDsl.g:3615:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
-        // InternalPerspectiveDsl.g:3616:3: ( rule__XSwitchExpression__Group_2_0__0 )
+        // InternalPerspectiveDsl.g:3677:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+        // InternalPerspectiveDsl.g:3678:3: ( rule__XSwitchExpression__Group_2_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
         }
-        // InternalPerspectiveDsl.g:3617:3: ( rule__XSwitchExpression__Group_2_0__0 )
-        // InternalPerspectiveDsl.g:3617:4: rule__XSwitchExpression__Group_2_0__0
+        // InternalPerspectiveDsl.g:3679:3: ( rule__XSwitchExpression__Group_2_0__0 )
+        // InternalPerspectiveDsl.g:3679:4: rule__XSwitchExpression__Group_2_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XSwitchExpression__Group_2_0__0();
@@ -77839,21 +78493,21 @@
 
         }
     }
-    // $ANTLR end synpred84_InternalPerspectiveDsl
+    // $ANTLR end synpred86_InternalPerspectiveDsl
 
-    // $ANTLR start synpred88_InternalPerspectiveDsl
-    public final void synpred88_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3699:2: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) )
-        // InternalPerspectiveDsl.g:3699:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+    // $ANTLR start synpred90_InternalPerspectiveDsl
+    public final void synpred90_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3761:2: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) )
+        // InternalPerspectiveDsl.g:3761:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
         {
-        // InternalPerspectiveDsl.g:3699:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
-        // InternalPerspectiveDsl.g:3700:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+        // InternalPerspectiveDsl.g:3761:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+        // InternalPerspectiveDsl.g:3762:3: ( rule__XVariableDeclaration__Group_2_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
         }
-        // InternalPerspectiveDsl.g:3701:3: ( rule__XVariableDeclaration__Group_2_0__0 )
-        // InternalPerspectiveDsl.g:3701:4: rule__XVariableDeclaration__Group_2_0__0
+        // InternalPerspectiveDsl.g:3763:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+        // InternalPerspectiveDsl.g:3763:4: rule__XVariableDeclaration__Group_2_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XVariableDeclaration__Group_2_0__0();
@@ -77869,21 +78523,21 @@
 
         }
     }
-    // $ANTLR end synpred88_InternalPerspectiveDsl
+    // $ANTLR end synpred90_InternalPerspectiveDsl
 
-    // $ANTLR start synpred89_InternalPerspectiveDsl
-    public final void synpred89_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3720:2: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) )
-        // InternalPerspectiveDsl.g:3720:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+    // $ANTLR start synpred91_InternalPerspectiveDsl
+    public final void synpred91_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3782:2: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) )
+        // InternalPerspectiveDsl.g:3782:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
         {
-        // InternalPerspectiveDsl.g:3720:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
-        // InternalPerspectiveDsl.g:3721:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+        // InternalPerspectiveDsl.g:3782:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+        // InternalPerspectiveDsl.g:3783:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
         }
-        // InternalPerspectiveDsl.g:3722:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
-        // InternalPerspectiveDsl.g:3722:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
+        // InternalPerspectiveDsl.g:3784:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+        // InternalPerspectiveDsl.g:3784:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
         {
         pushFollow(FOLLOW_2);
         rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0();
@@ -77899,21 +78553,21 @@
 
         }
     }
-    // $ANTLR end synpred89_InternalPerspectiveDsl
+    // $ANTLR end synpred91_InternalPerspectiveDsl
 
-    // $ANTLR start synpred95_InternalPerspectiveDsl
-    public final void synpred95_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3801:2: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) )
-        // InternalPerspectiveDsl.g:3801:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+    // $ANTLR start synpred97_InternalPerspectiveDsl
+    public final void synpred97_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3863:2: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) )
+        // InternalPerspectiveDsl.g:3863:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
         {
-        // InternalPerspectiveDsl.g:3801:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
-        // InternalPerspectiveDsl.g:3802:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+        // InternalPerspectiveDsl.g:3863:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+        // InternalPerspectiveDsl.g:3864:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
         }
-        // InternalPerspectiveDsl.g:3803:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
-        // InternalPerspectiveDsl.g:3803:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
+        // InternalPerspectiveDsl.g:3865:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+        // InternalPerspectiveDsl.g:3865:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
         {
         pushFollow(FOLLOW_2);
         rule__XConstructorCall__ArgumentsAssignment_4_1_0();
@@ -77929,12 +78583,12 @@
 
         }
     }
-    // $ANTLR end synpred95_InternalPerspectiveDsl
+    // $ANTLR end synpred97_InternalPerspectiveDsl
 
-    // $ANTLR start synpred125_InternalPerspectiveDsl
-    public final void synpred125_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:8837:3: ( rule__XAssignment__Group_1_1__0 )
-        // InternalPerspectiveDsl.g:8837:3: rule__XAssignment__Group_1_1__0
+    // $ANTLR start synpred127_InternalPerspectiveDsl
+    public final void synpred127_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:9034:3: ( rule__XAssignment__Group_1_1__0 )
+        // InternalPerspectiveDsl.g:9034:3: rule__XAssignment__Group_1_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XAssignment__Group_1_1__0();
@@ -77944,45 +78598,15 @@
 
         }
     }
-    // $ANTLR end synpred125_InternalPerspectiveDsl
-
-    // $ANTLR start synpred127_InternalPerspectiveDsl
-    public final void synpred127_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:9188:3: ( rule__XOrExpression__Group_1__0 )
-        // InternalPerspectiveDsl.g:9188:3: rule__XOrExpression__Group_1__0
-        {
-        pushFollow(FOLLOW_2);
-        rule__XOrExpression__Group_1__0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
     // $ANTLR end synpred127_InternalPerspectiveDsl
 
-    // $ANTLR start synpred128_InternalPerspectiveDsl
-    public final void synpred128_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:9377:3: ( rule__XAndExpression__Group_1__0 )
-        // InternalPerspectiveDsl.g:9377:3: rule__XAndExpression__Group_1__0
-        {
-        pushFollow(FOLLOW_2);
-        rule__XAndExpression__Group_1__0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred128_InternalPerspectiveDsl
-
     // $ANTLR start synpred129_InternalPerspectiveDsl
     public final void synpred129_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:9566:3: ( rule__XEqualityExpression__Group_1__0 )
-        // InternalPerspectiveDsl.g:9566:3: rule__XEqualityExpression__Group_1__0
+        // InternalPerspectiveDsl.g:9385:3: ( rule__XOrExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:9385:3: rule__XOrExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XEqualityExpression__Group_1__0();
+        rule__XOrExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -77993,11 +78617,11 @@
 
     // $ANTLR start synpred130_InternalPerspectiveDsl
     public final void synpred130_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:9755:3: ( rule__XRelationalExpression__Alternatives_1 )
-        // InternalPerspectiveDsl.g:9755:3: rule__XRelationalExpression__Alternatives_1
+        // InternalPerspectiveDsl.g:9574:3: ( rule__XAndExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:9574:3: rule__XAndExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XRelationalExpression__Alternatives_1();
+        rule__XAndExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -78008,11 +78632,11 @@
 
     // $ANTLR start synpred131_InternalPerspectiveDsl
     public final void synpred131_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:10133:3: ( rule__XOtherOperatorExpression__Group_1__0 )
-        // InternalPerspectiveDsl.g:10133:3: rule__XOtherOperatorExpression__Group_1__0
+        // InternalPerspectiveDsl.g:9763:3: ( rule__XEqualityExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:9763:3: rule__XEqualityExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XOtherOperatorExpression__Group_1__0();
+        rule__XEqualityExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -78023,11 +78647,11 @@
 
     // $ANTLR start synpred132_InternalPerspectiveDsl
     public final void synpred132_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:10646:3: ( rule__XAdditiveExpression__Group_1__0 )
-        // InternalPerspectiveDsl.g:10646:3: rule__XAdditiveExpression__Group_1__0
+        // InternalPerspectiveDsl.g:9952:3: ( rule__XRelationalExpression__Alternatives_1 )
+        // InternalPerspectiveDsl.g:9952:3: rule__XRelationalExpression__Alternatives_1
         {
         pushFollow(FOLLOW_2);
-        rule__XAdditiveExpression__Group_1__0();
+        rule__XRelationalExpression__Alternatives_1();
 
         state._fsp--;
         if (state.failed) return ;
@@ -78038,11 +78662,11 @@
 
     // $ANTLR start synpred133_InternalPerspectiveDsl
     public final void synpred133_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:10835:3: ( rule__XMultiplicativeExpression__Group_1__0 )
-        // InternalPerspectiveDsl.g:10835:3: rule__XMultiplicativeExpression__Group_1__0
+        // InternalPerspectiveDsl.g:10330:3: ( rule__XOtherOperatorExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:10330:3: rule__XOtherOperatorExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XMultiplicativeExpression__Group_1__0();
+        rule__XOtherOperatorExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -78053,11 +78677,11 @@
 
     // $ANTLR start synpred134_InternalPerspectiveDsl
     public final void synpred134_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:11105:3: ( rule__XCastedExpression__Group_1__0 )
-        // InternalPerspectiveDsl.g:11105:3: rule__XCastedExpression__Group_1__0
+        // InternalPerspectiveDsl.g:10843:3: ( rule__XAdditiveExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:10843:3: rule__XAdditiveExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XCastedExpression__Group_1__0();
+        rule__XAdditiveExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -78068,11 +78692,11 @@
 
     // $ANTLR start synpred135_InternalPerspectiveDsl
     public final void synpred135_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:11294:3: ( rule__XPostfixOperation__Group_1__0 )
-        // InternalPerspectiveDsl.g:11294:3: rule__XPostfixOperation__Group_1__0
+        // InternalPerspectiveDsl.g:11032:3: ( rule__XMultiplicativeExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:11032:3: rule__XMultiplicativeExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XPostfixOperation__Group_1__0();
+        rule__XMultiplicativeExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -78083,8 +78707,38 @@
 
     // $ANTLR start synpred136_InternalPerspectiveDsl
     public final void synpred136_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:11429:3: ( rule__XMemberFeatureCall__Alternatives_1 )
-        // InternalPerspectiveDsl.g:11429:3: rule__XMemberFeatureCall__Alternatives_1
+        // InternalPerspectiveDsl.g:11302:3: ( rule__XCastedExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:11302:3: rule__XCastedExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XCastedExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred136_InternalPerspectiveDsl
+
+    // $ANTLR start synpred137_InternalPerspectiveDsl
+    public final void synpred137_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:11491:3: ( rule__XPostfixOperation__Group_1__0 )
+        // InternalPerspectiveDsl.g:11491:3: rule__XPostfixOperation__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XPostfixOperation__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred137_InternalPerspectiveDsl
+
+    // $ANTLR start synpred138_InternalPerspectiveDsl
+    public final void synpred138_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:11626:3: ( rule__XMemberFeatureCall__Alternatives_1 )
+        // InternalPerspectiveDsl.g:11626:3: rule__XMemberFeatureCall__Alternatives_1
         {
         pushFollow(FOLLOW_2);
         rule__XMemberFeatureCall__Alternatives_1();
@@ -78094,12 +78748,12 @@
 
         }
     }
-    // $ANTLR end synpred136_InternalPerspectiveDsl
+    // $ANTLR end synpred138_InternalPerspectiveDsl
 
-    // $ANTLR start synpred138_InternalPerspectiveDsl
-    public final void synpred138_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:11727:3: ( rule__XMemberFeatureCall__Group_1_1_3__0 )
-        // InternalPerspectiveDsl.g:11727:3: rule__XMemberFeatureCall__Group_1_1_3__0
+    // $ANTLR start synpred140_InternalPerspectiveDsl
+    public final void synpred140_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:11924:3: ( rule__XMemberFeatureCall__Group_1_1_3__0 )
+        // InternalPerspectiveDsl.g:11924:3: rule__XMemberFeatureCall__Group_1_1_3__0
         {
         pushFollow(FOLLOW_2);
         rule__XMemberFeatureCall__Group_1_1_3__0();
@@ -78109,12 +78763,12 @@
 
         }
     }
-    // $ANTLR end synpred138_InternalPerspectiveDsl
+    // $ANTLR end synpred140_InternalPerspectiveDsl
 
-    // $ANTLR start synpred139_InternalPerspectiveDsl
-    public final void synpred139_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:11753:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )
-        // InternalPerspectiveDsl.g:11753:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
+    // $ANTLR start synpred141_InternalPerspectiveDsl
+    public final void synpred141_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:11950:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )
+        // InternalPerspectiveDsl.g:11950:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
         {
         pushFollow(FOLLOW_2);
         rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4();
@@ -78124,12 +78778,12 @@
 
         }
     }
-    // $ANTLR end synpred139_InternalPerspectiveDsl
+    // $ANTLR end synpred141_InternalPerspectiveDsl
 
-    // $ANTLR start synpred147_InternalPerspectiveDsl
-    public final void synpred147_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:12726:3: ( rule__XClosure__Group_1__0 )
-        // InternalPerspectiveDsl.g:12726:3: rule__XClosure__Group_1__0
+    // $ANTLR start synpred149_InternalPerspectiveDsl
+    public final void synpred149_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:12923:3: ( rule__XClosure__Group_1__0 )
+        // InternalPerspectiveDsl.g:12923:3: rule__XClosure__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XClosure__Group_1__0();
@@ -78139,12 +78793,12 @@
 
         }
     }
-    // $ANTLR end synpred147_InternalPerspectiveDsl
+    // $ANTLR end synpred149_InternalPerspectiveDsl
 
-    // $ANTLR start synpred154_InternalPerspectiveDsl
-    public final void synpred154_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:13697:3: ( rule__XIfExpression__Group_6__0 )
-        // InternalPerspectiveDsl.g:13697:3: rule__XIfExpression__Group_6__0
+    // $ANTLR start synpred156_InternalPerspectiveDsl
+    public final void synpred156_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:13894:3: ( rule__XIfExpression__Group_6__0 )
+        // InternalPerspectiveDsl.g:13894:3: rule__XIfExpression__Group_6__0
         {
         pushFollow(FOLLOW_2);
         rule__XIfExpression__Group_6__0();
@@ -78154,12 +78808,12 @@
 
         }
     }
-    // $ANTLR end synpred154_InternalPerspectiveDsl
+    // $ANTLR end synpred156_InternalPerspectiveDsl
 
-    // $ANTLR start synpred157_InternalPerspectiveDsl
-    public final void synpred157_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:14157:3: ( rule__XSwitchExpression__Group_2_1_0__0 )
-        // InternalPerspectiveDsl.g:14157:3: rule__XSwitchExpression__Group_2_1_0__0
+    // $ANTLR start synpred159_InternalPerspectiveDsl
+    public final void synpred159_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:14354:3: ( rule__XSwitchExpression__Group_2_1_0__0 )
+        // InternalPerspectiveDsl.g:14354:3: rule__XSwitchExpression__Group_2_1_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XSwitchExpression__Group_2_1_0__0();
@@ -78169,12 +78823,12 @@
 
         }
     }
-    // $ANTLR end synpred157_InternalPerspectiveDsl
+    // $ANTLR end synpred159_InternalPerspectiveDsl
 
-    // $ANTLR start synpred170_InternalPerspectiveDsl
-    public final void synpred170_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:16290:3: ( rule__XFeatureCall__Group_3__0 )
-        // InternalPerspectiveDsl.g:16290:3: rule__XFeatureCall__Group_3__0
+    // $ANTLR start synpred172_InternalPerspectiveDsl
+    public final void synpred172_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:16487:3: ( rule__XFeatureCall__Group_3__0 )
+        // InternalPerspectiveDsl.g:16487:3: rule__XFeatureCall__Group_3__0
         {
         pushFollow(FOLLOW_2);
         rule__XFeatureCall__Group_3__0();
@@ -78184,12 +78838,12 @@
 
         }
     }
-    // $ANTLR end synpred170_InternalPerspectiveDsl
+    // $ANTLR end synpred172_InternalPerspectiveDsl
 
-    // $ANTLR start synpred171_InternalPerspectiveDsl
-    public final void synpred171_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:16316:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )
-        // InternalPerspectiveDsl.g:16316:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
+    // $ANTLR start synpred173_InternalPerspectiveDsl
+    public final void synpred173_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:16513:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )
+        // InternalPerspectiveDsl.g:16513:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
         {
         pushFollow(FOLLOW_2);
         rule__XFeatureCall__FeatureCallArgumentsAssignment_4();
@@ -78199,12 +78853,12 @@
 
         }
     }
-    // $ANTLR end synpred171_InternalPerspectiveDsl
+    // $ANTLR end synpred173_InternalPerspectiveDsl
 
-    // $ANTLR start synpred175_InternalPerspectiveDsl
-    public final void synpred175_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:16776:3: ( rule__XConstructorCall__Group_3__0 )
-        // InternalPerspectiveDsl.g:16776:3: rule__XConstructorCall__Group_3__0
+    // $ANTLR start synpred177_InternalPerspectiveDsl
+    public final void synpred177_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:16973:3: ( rule__XConstructorCall__Group_3__0 )
+        // InternalPerspectiveDsl.g:16973:3: rule__XConstructorCall__Group_3__0
         {
         pushFollow(FOLLOW_2);
         rule__XConstructorCall__Group_3__0();
@@ -78214,12 +78868,12 @@
 
         }
     }
-    // $ANTLR end synpred175_InternalPerspectiveDsl
+    // $ANTLR end synpred177_InternalPerspectiveDsl
 
-    // $ANTLR start synpred176_InternalPerspectiveDsl
-    public final void synpred176_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:16803:3: ( rule__XConstructorCall__Group_4__0 )
-        // InternalPerspectiveDsl.g:16803:3: rule__XConstructorCall__Group_4__0
+    // $ANTLR start synpred178_InternalPerspectiveDsl
+    public final void synpred178_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:17000:3: ( rule__XConstructorCall__Group_4__0 )
+        // InternalPerspectiveDsl.g:17000:3: rule__XConstructorCall__Group_4__0
         {
         pushFollow(FOLLOW_2);
         rule__XConstructorCall__Group_4__0();
@@ -78229,12 +78883,12 @@
 
         }
     }
-    // $ANTLR end synpred176_InternalPerspectiveDsl
+    // $ANTLR end synpred178_InternalPerspectiveDsl
 
-    // $ANTLR start synpred177_InternalPerspectiveDsl
-    public final void synpred177_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:16829:3: ( rule__XConstructorCall__ArgumentsAssignment_5 )
-        // InternalPerspectiveDsl.g:16829:3: rule__XConstructorCall__ArgumentsAssignment_5
+    // $ANTLR start synpred179_InternalPerspectiveDsl
+    public final void synpred179_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:17026:3: ( rule__XConstructorCall__ArgumentsAssignment_5 )
+        // InternalPerspectiveDsl.g:17026:3: rule__XConstructorCall__ArgumentsAssignment_5
         {
         pushFollow(FOLLOW_2);
         rule__XConstructorCall__ArgumentsAssignment_5();
@@ -78244,45 +78898,15 @@
 
         }
     }
-    // $ANTLR end synpred177_InternalPerspectiveDsl
-
-    // $ANTLR start synpred182_InternalPerspectiveDsl
-    public final void synpred182_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:17720:3: ( rule__XReturnExpression__ExpressionAssignment_2 )
-        // InternalPerspectiveDsl.g:17720:3: rule__XReturnExpression__ExpressionAssignment_2
-        {
-        pushFollow(FOLLOW_2);
-        rule__XReturnExpression__ExpressionAssignment_2();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred182_InternalPerspectiveDsl
-
-    // $ANTLR start synpred183_InternalPerspectiveDsl
-    public final void synpred183_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:17862:4: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
-        // InternalPerspectiveDsl.g:17862:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
-        {
-        pushFollow(FOLLOW_2);
-        rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred183_InternalPerspectiveDsl
+    // $ANTLR end synpred179_InternalPerspectiveDsl
 
     // $ANTLR start synpred184_InternalPerspectiveDsl
     public final void synpred184_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:17889:3: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )
-        // InternalPerspectiveDsl.g:17889:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
+        // InternalPerspectiveDsl.g:17917:3: ( rule__XReturnExpression__ExpressionAssignment_2 )
+        // InternalPerspectiveDsl.g:17917:3: rule__XReturnExpression__ExpressionAssignment_2
         {
         pushFollow(FOLLOW_2);
-        rule__XTryCatchFinallyExpression__Group_3_0_1__0();
+        rule__XReturnExpression__ExpressionAssignment_2();
 
         state._fsp--;
         if (state.failed) return ;
@@ -78293,8 +78917,38 @@
 
     // $ANTLR start synpred185_InternalPerspectiveDsl
     public final void synpred185_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:18402:3: ( rule__QualifiedName__Group_1__0 )
-        // InternalPerspectiveDsl.g:18402:3: rule__QualifiedName__Group_1__0
+        // InternalPerspectiveDsl.g:18059:4: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+        // InternalPerspectiveDsl.g:18059:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred185_InternalPerspectiveDsl
+
+    // $ANTLR start synpred186_InternalPerspectiveDsl
+    public final void synpred186_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:18086:3: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )
+        // InternalPerspectiveDsl.g:18086:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XTryCatchFinallyExpression__Group_3_0_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred186_InternalPerspectiveDsl
+
+    // $ANTLR start synpred187_InternalPerspectiveDsl
+    public final void synpred187_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:18599:3: ( rule__QualifiedName__Group_1__0 )
+        // InternalPerspectiveDsl.g:18599:3: rule__QualifiedName__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__QualifiedName__Group_1__0();
@@ -78304,12 +78958,12 @@
 
         }
     }
-    // $ANTLR end synpred185_InternalPerspectiveDsl
+    // $ANTLR end synpred187_InternalPerspectiveDsl
 
-    // $ANTLR start synpred187_InternalPerspectiveDsl
-    public final void synpred187_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:18618:3: ( rule__JvmTypeReference__Group_0_1__0 )
-        // InternalPerspectiveDsl.g:18618:3: rule__JvmTypeReference__Group_0_1__0
+    // $ANTLR start synpred189_InternalPerspectiveDsl
+    public final void synpred189_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:18815:3: ( rule__JvmTypeReference__Group_0_1__0 )
+        // InternalPerspectiveDsl.g:18815:3: rule__JvmTypeReference__Group_0_1__0
         {
         pushFollow(FOLLOW_2);
         rule__JvmTypeReference__Group_0_1__0();
@@ -78319,12 +78973,12 @@
 
         }
     }
-    // $ANTLR end synpred187_InternalPerspectiveDsl
+    // $ANTLR end synpred189_InternalPerspectiveDsl
 
-    // $ANTLR start synpred191_InternalPerspectiveDsl
-    public final void synpred191_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:19077:3: ( rule__JvmParameterizedTypeReference__Group_1__0 )
-        // InternalPerspectiveDsl.g:19077:3: rule__JvmParameterizedTypeReference__Group_1__0
+    // $ANTLR start synpred193_InternalPerspectiveDsl
+    public final void synpred193_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:19274:3: ( rule__JvmParameterizedTypeReference__Group_1__0 )
+        // InternalPerspectiveDsl.g:19274:3: rule__JvmParameterizedTypeReference__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__JvmParameterizedTypeReference__Group_1__0();
@@ -78334,12 +78988,12 @@
 
         }
     }
-    // $ANTLR end synpred191_InternalPerspectiveDsl
+    // $ANTLR end synpred193_InternalPerspectiveDsl
 
-    // $ANTLR start synpred193_InternalPerspectiveDsl
-    public final void synpred193_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:19212:3: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )
-        // InternalPerspectiveDsl.g:19212:3: rule__JvmParameterizedTypeReference__Group_1_4__0
+    // $ANTLR start synpred195_InternalPerspectiveDsl
+    public final void synpred195_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:19409:3: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )
+        // InternalPerspectiveDsl.g:19409:3: rule__JvmParameterizedTypeReference__Group_1_4__0
         {
         pushFollow(FOLLOW_2);
         rule__JvmParameterizedTypeReference__Group_1_4__0();
@@ -78349,12 +79003,12 @@
 
         }
     }
-    // $ANTLR end synpred193_InternalPerspectiveDsl
+    // $ANTLR end synpred195_InternalPerspectiveDsl
 
-    // $ANTLR start synpred194_InternalPerspectiveDsl
-    public final void synpred194_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:19347:3: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )
-        // InternalPerspectiveDsl.g:19347:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
+    // $ANTLR start synpred196_InternalPerspectiveDsl
+    public final void synpred196_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:19544:3: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )
+        // InternalPerspectiveDsl.g:19544:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
         {
         pushFollow(FOLLOW_2);
         rule__JvmParameterizedTypeReference__Group_1_4_2__0();
@@ -78364,12 +79018,12 @@
 
         }
     }
-    // $ANTLR end synpred194_InternalPerspectiveDsl
+    // $ANTLR end synpred196_InternalPerspectiveDsl
 
-    // $ANTLR start synpred199_InternalPerspectiveDsl
-    public final void synpred199_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20145:2: ( rule__Perspective__UnorderedGroup_5__0 )
-        // InternalPerspectiveDsl.g:20145:2: rule__Perspective__UnorderedGroup_5__0
+    // $ANTLR start synpred201_InternalPerspectiveDsl
+    public final void synpred201_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20342:2: ( rule__Perspective__UnorderedGroup_5__0 )
+        // InternalPerspectiveDsl.g:20342:2: rule__Perspective__UnorderedGroup_5__0
         {
         pushFollow(FOLLOW_2);
         rule__Perspective__UnorderedGroup_5__0();
@@ -78379,32 +79033,32 @@
 
         }
     }
-    // $ANTLR end synpred199_InternalPerspectiveDsl
+    // $ANTLR end synpred201_InternalPerspectiveDsl
 
-    // $ANTLR start synpred200_InternalPerspectiveDsl
-    public final void synpred200_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20160:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:20160:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
+    // $ANTLR start synpred202_InternalPerspectiveDsl
+    public final void synpred202_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20357:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20357:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
         {
-        // InternalPerspectiveDsl.g:20160:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
-        // InternalPerspectiveDsl.g:20161:4: {...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) )
+        // InternalPerspectiveDsl.g:20357:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20358: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, "synpred200_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0)");
+            throw new FailedPredicateException(input, "synpred202_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0)");
         }
-        // InternalPerspectiveDsl.g:20161:107: ( ( ( rule__Perspective__Group_5_0__0 ) ) )
-        // InternalPerspectiveDsl.g:20162:5: ( ( rule__Perspective__Group_5_0__0 ) )
+        // InternalPerspectiveDsl.g:20358:107: ( ( ( rule__Perspective__Group_5_0__0 ) ) )
+        // InternalPerspectiveDsl.g:20359:5: ( ( rule__Perspective__Group_5_0__0 ) )
         {
         getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0);
-        // InternalPerspectiveDsl.g:20168:5: ( ( rule__Perspective__Group_5_0__0 ) )
-        // InternalPerspectiveDsl.g:20169:6: ( rule__Perspective__Group_5_0__0 )
+        // InternalPerspectiveDsl.g:20365:5: ( ( rule__Perspective__Group_5_0__0 ) )
+        // InternalPerspectiveDsl.g:20366:6: ( rule__Perspective__Group_5_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getPerspectiveAccess().getGroup_5_0()); 
         }
-        // InternalPerspectiveDsl.g:20170:6: ( rule__Perspective__Group_5_0__0 )
-        // InternalPerspectiveDsl.g:20170:7: rule__Perspective__Group_5_0__0
+        // InternalPerspectiveDsl.g:20367:6: ( rule__Perspective__Group_5_0__0 )
+        // InternalPerspectiveDsl.g:20367:7: rule__Perspective__Group_5_0__0
         {
         pushFollow(FOLLOW_2);
         rule__Perspective__Group_5_0__0();
@@ -78426,32 +79080,32 @@
 
         }
     }
-    // $ANTLR end synpred200_InternalPerspectiveDsl
+    // $ANTLR end synpred202_InternalPerspectiveDsl
 
-    // $ANTLR start synpred201_InternalPerspectiveDsl
-    public final void synpred201_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20175:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:20175:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
+    // $ANTLR start synpred203_InternalPerspectiveDsl
+    public final void synpred203_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20372:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20372:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
         {
-        // InternalPerspectiveDsl.g:20175:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
-        // InternalPerspectiveDsl.g:20176:4: {...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) )
+        // InternalPerspectiveDsl.g:20372:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20373: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, "synpred201_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1)");
+            throw new FailedPredicateException(input, "synpred203_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1)");
         }
-        // InternalPerspectiveDsl.g:20176:107: ( ( ( rule__Perspective__Group_5_1__0 ) ) )
-        // InternalPerspectiveDsl.g:20177:5: ( ( rule__Perspective__Group_5_1__0 ) )
+        // InternalPerspectiveDsl.g:20373:107: ( ( ( rule__Perspective__Group_5_1__0 ) ) )
+        // InternalPerspectiveDsl.g:20374:5: ( ( rule__Perspective__Group_5_1__0 ) )
         {
         getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1);
-        // InternalPerspectiveDsl.g:20183:5: ( ( rule__Perspective__Group_5_1__0 ) )
-        // InternalPerspectiveDsl.g:20184:6: ( rule__Perspective__Group_5_1__0 )
+        // InternalPerspectiveDsl.g:20380:5: ( ( rule__Perspective__Group_5_1__0 ) )
+        // InternalPerspectiveDsl.g:20381:6: ( rule__Perspective__Group_5_1__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getPerspectiveAccess().getGroup_5_1()); 
         }
-        // InternalPerspectiveDsl.g:20185:6: ( rule__Perspective__Group_5_1__0 )
-        // InternalPerspectiveDsl.g:20185:7: rule__Perspective__Group_5_1__0
+        // InternalPerspectiveDsl.g:20382:6: ( rule__Perspective__Group_5_1__0 )
+        // InternalPerspectiveDsl.g:20382:7: rule__Perspective__Group_5_1__0
         {
         pushFollow(FOLLOW_2);
         rule__Perspective__Group_5_1__0();
@@ -78473,45 +79127,15 @@
 
         }
     }
-    // $ANTLR end synpred201_InternalPerspectiveDsl
-
-    // $ANTLR start synpred202_InternalPerspectiveDsl
-    public final void synpred202_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20219:2: ( rule__Perspective__UnorderedGroup_5__1 )
-        // InternalPerspectiveDsl.g:20219:2: rule__Perspective__UnorderedGroup_5__1
-        {
-        pushFollow(FOLLOW_2);
-        rule__Perspective__UnorderedGroup_5__1();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred202_InternalPerspectiveDsl
-
-    // $ANTLR start synpred203_InternalPerspectiveDsl
-    public final void synpred203_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20231:2: ( rule__Perspective__UnorderedGroup_5__2 )
-        // InternalPerspectiveDsl.g:20231:2: rule__Perspective__UnorderedGroup_5__2
-        {
-        pushFollow(FOLLOW_2);
-        rule__Perspective__UnorderedGroup_5__2();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
     // $ANTLR end synpred203_InternalPerspectiveDsl
 
     // $ANTLR start synpred204_InternalPerspectiveDsl
     public final void synpred204_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20255:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )
-        // InternalPerspectiveDsl.g:20255:2: rule__PerspectiveSashContainer__UnorderedGroup_3__0
+        // InternalPerspectiveDsl.g:20416:2: ( rule__Perspective__UnorderedGroup_5__1 )
+        // InternalPerspectiveDsl.g:20416:2: rule__Perspective__UnorderedGroup_5__1
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectiveSashContainer__UnorderedGroup_3__0();
+        rule__Perspective__UnorderedGroup_5__1();
 
         state._fsp--;
         if (state.failed) return ;
@@ -78522,125 +79146,61 @@
 
     // $ANTLR start synpred205_InternalPerspectiveDsl
     public final void synpred205_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20270:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:20270:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
-        {
-        // InternalPerspectiveDsl.g:20270:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
-        // InternalPerspectiveDsl.g:20271: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, "synpred205_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0)");
-        }
-        // InternalPerspectiveDsl.g:20271:120: ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
-        // InternalPerspectiveDsl.g:20272:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
-        {
-        getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0);
-        // InternalPerspectiveDsl.g:20278:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
-        // InternalPerspectiveDsl.g:20279:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
-        {
-        if ( state.backtracking==0 ) {
-           before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_0()); 
-        }
-        // InternalPerspectiveDsl.g:20280:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
-        // InternalPerspectiveDsl.g:20280:7: rule__PerspectiveSashContainer__Group_3_0__0
+        // InternalPerspectiveDsl.g:20428:2: ( rule__Perspective__UnorderedGroup_5__2 )
+        // InternalPerspectiveDsl.g:20428:2: rule__Perspective__UnorderedGroup_5__2
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectiveSashContainer__Group_3_0__0();
+        rule__Perspective__UnorderedGroup_5__2();
 
         state._fsp--;
         if (state.failed) return ;
 
         }
-
-
-        }
-
-
-        }
-
-
-        }
-
-
-        }
     }
     // $ANTLR end synpred205_InternalPerspectiveDsl
 
     // $ANTLR start synpred206_InternalPerspectiveDsl
     public final void synpred206_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20285:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:20285:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
-        {
-        // InternalPerspectiveDsl.g:20285:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
-        // InternalPerspectiveDsl.g:20286: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, "synpred206_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1)");
-        }
-        // InternalPerspectiveDsl.g:20286:120: ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
-        // InternalPerspectiveDsl.g:20287:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
-        {
-        getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1);
-        // InternalPerspectiveDsl.g:20293:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
-        // InternalPerspectiveDsl.g:20294:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
-        {
-        if ( state.backtracking==0 ) {
-           before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_1()); 
-        }
-        // InternalPerspectiveDsl.g:20295:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
-        // InternalPerspectiveDsl.g:20295:7: rule__PerspectiveSashContainer__Group_3_1__0
+        // InternalPerspectiveDsl.g:20452:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )
+        // InternalPerspectiveDsl.g:20452:2: rule__PerspectiveSashContainer__UnorderedGroup_3__0
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectiveSashContainer__Group_3_1__0();
+        rule__PerspectiveSashContainer__UnorderedGroup_3__0();
 
         state._fsp--;
         if (state.failed) return ;
 
         }
-
-
-        }
-
-
-        }
-
-
-        }
-
-
-        }
     }
     // $ANTLR end synpred206_InternalPerspectiveDsl
 
     // $ANTLR start synpred207_InternalPerspectiveDsl
     public final void synpred207_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20300:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:20300:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20467:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20467:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
         {
-        // InternalPerspectiveDsl.g:20300:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
-        // InternalPerspectiveDsl.g:20301:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
+        // InternalPerspectiveDsl.g:20467:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20468:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
         {
-        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2) ) {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0) ) {
             if (state.backtracking>0) {state.failed=true; return ;}
-            throw new FailedPredicateException(input, "synpred207_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2)");
+            throw new FailedPredicateException(input, "synpred207_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0)");
         }
-        // InternalPerspectiveDsl.g:20301:120: ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
-        // InternalPerspectiveDsl.g:20302:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
+        // InternalPerspectiveDsl.g:20468:120: ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
+        // InternalPerspectiveDsl.g:20469:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
         {
-        getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2);
-        // InternalPerspectiveDsl.g:20308:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
-        // InternalPerspectiveDsl.g:20309:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0);
+        // InternalPerspectiveDsl.g:20475:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
+        // InternalPerspectiveDsl.g:20476:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
         {
         if ( state.backtracking==0 ) {
-           before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_2()); 
+           before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_0()); 
         }
-        // InternalPerspectiveDsl.g:20310:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
-        // InternalPerspectiveDsl.g:20310:7: rule__PerspectiveSashContainer__Group_3_2__0
+        // InternalPerspectiveDsl.g:20477:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
+        // InternalPerspectiveDsl.g:20477:7: rule__PerspectiveSashContainer__Group_3_0__0
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectiveSashContainer__Group_3_2__0();
+        rule__PerspectiveSashContainer__Group_3_0__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -78663,41 +79223,105 @@
 
     // $ANTLR start synpred208_InternalPerspectiveDsl
     public final void synpred208_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20344:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )
-        // InternalPerspectiveDsl.g:20344:2: rule__PerspectiveSashContainer__UnorderedGroup_3__1
+        // InternalPerspectiveDsl.g:20482:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20482:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20482:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20483: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, "synpred208_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1)");
+        }
+        // InternalPerspectiveDsl.g:20483:120: ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
+        // InternalPerspectiveDsl.g:20484:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1);
+        // InternalPerspectiveDsl.g:20490:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
+        // InternalPerspectiveDsl.g:20491:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_1()); 
+        }
+        // InternalPerspectiveDsl.g:20492:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
+        // InternalPerspectiveDsl.g:20492:7: rule__PerspectiveSashContainer__Group_3_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectiveSashContainer__UnorderedGroup_3__1();
+        rule__PerspectiveSashContainer__Group_3_1__0();
 
         state._fsp--;
         if (state.failed) return ;
 
         }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
     }
     // $ANTLR end synpred208_InternalPerspectiveDsl
 
     // $ANTLR start synpred209_InternalPerspectiveDsl
     public final void synpred209_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20356:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )
-        // InternalPerspectiveDsl.g:20356:2: rule__PerspectiveSashContainer__UnorderedGroup_3__2
+        // InternalPerspectiveDsl.g:20497:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20497:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20497:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20498: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, "synpred209_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2)");
+        }
+        // InternalPerspectiveDsl.g:20498:120: ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
+        // InternalPerspectiveDsl.g:20499:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2);
+        // InternalPerspectiveDsl.g:20505:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
+        // InternalPerspectiveDsl.g:20506:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_2()); 
+        }
+        // InternalPerspectiveDsl.g:20507:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
+        // InternalPerspectiveDsl.g:20507:7: rule__PerspectiveSashContainer__Group_3_2__0
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectiveSashContainer__UnorderedGroup_3__2();
+        rule__PerspectiveSashContainer__Group_3_2__0();
 
         state._fsp--;
         if (state.failed) return ;
 
         }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
     }
     // $ANTLR end synpred209_InternalPerspectiveDsl
 
     // $ANTLR start synpred210_InternalPerspectiveDsl
     public final void synpred210_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20368:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )
-        // InternalPerspectiveDsl.g:20368:2: rule__PerspectiveSashContainer__UnorderedGroup_3__3
+        // InternalPerspectiveDsl.g:20541:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )
+        // InternalPerspectiveDsl.g:20541:2: rule__PerspectiveSashContainer__UnorderedGroup_3__1
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectiveSashContainer__UnorderedGroup_3__3();
+        rule__PerspectiveSashContainer__UnorderedGroup_3__1();
 
         state._fsp--;
         if (state.failed) return ;
@@ -78708,11 +79332,11 @@
 
     // $ANTLR start synpred211_InternalPerspectiveDsl
     public final void synpred211_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20392:2: ( rule__PerspectivePartStack__UnorderedGroup_3__0 )
-        // InternalPerspectiveDsl.g:20392:2: rule__PerspectivePartStack__UnorderedGroup_3__0
+        // InternalPerspectiveDsl.g:20553:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )
+        // InternalPerspectiveDsl.g:20553:2: rule__PerspectiveSashContainer__UnorderedGroup_3__2
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectivePartStack__UnorderedGroup_3__0();
+        rule__PerspectiveSashContainer__UnorderedGroup_3__2();
 
         state._fsp--;
         if (state.failed) return ;
@@ -78723,28 +79347,58 @@
 
     // $ANTLR start synpred212_InternalPerspectiveDsl
     public final void synpred212_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20407:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:20407:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20565:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )
+        // InternalPerspectiveDsl.g:20565:2: rule__PerspectiveSashContainer__UnorderedGroup_3__3
         {
-        // InternalPerspectiveDsl.g:20407:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
-        // InternalPerspectiveDsl.g:20408:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
+        pushFollow(FOLLOW_2);
+        rule__PerspectiveSashContainer__UnorderedGroup_3__3();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred212_InternalPerspectiveDsl
+
+    // $ANTLR start synpred213_InternalPerspectiveDsl
+    public final void synpred213_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20589:2: ( rule__PerspectivePartStack__UnorderedGroup_3__0 )
+        // InternalPerspectiveDsl.g:20589:2: rule__PerspectivePartStack__UnorderedGroup_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePartStack__UnorderedGroup_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred213_InternalPerspectiveDsl
+
+    // $ANTLR start synpred214_InternalPerspectiveDsl
+    public final void synpred214_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20604:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20604:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20604:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20605: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, "synpred212_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0)");
+            throw new FailedPredicateException(input, "synpred214_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0)");
         }
-        // InternalPerspectiveDsl.g:20408:116: ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
-        // InternalPerspectiveDsl.g:20409:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
+        // InternalPerspectiveDsl.g:20605:116: ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
+        // InternalPerspectiveDsl.g:20606:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
         {
         getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0);
-        // InternalPerspectiveDsl.g:20415:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
-        // InternalPerspectiveDsl.g:20416:6: ( rule__PerspectivePartStack__Group_3_0__0 )
+        // InternalPerspectiveDsl.g:20612:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
+        // InternalPerspectiveDsl.g:20613:6: ( rule__PerspectivePartStack__Group_3_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_0()); 
         }
-        // InternalPerspectiveDsl.g:20417:6: ( rule__PerspectivePartStack__Group_3_0__0 )
-        // InternalPerspectiveDsl.g:20417:7: rule__PerspectivePartStack__Group_3_0__0
+        // InternalPerspectiveDsl.g:20614:6: ( rule__PerspectivePartStack__Group_3_0__0 )
+        // InternalPerspectiveDsl.g:20614:7: rule__PerspectivePartStack__Group_3_0__0
         {
         pushFollow(FOLLOW_2);
         rule__PerspectivePartStack__Group_3_0__0();
@@ -78766,32 +79420,32 @@
 
         }
     }
-    // $ANTLR end synpred212_InternalPerspectiveDsl
+    // $ANTLR end synpred214_InternalPerspectiveDsl
 
-    // $ANTLR start synpred213_InternalPerspectiveDsl
-    public final void synpred213_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20422:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:20422:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
+    // $ANTLR start synpred215_InternalPerspectiveDsl
+    public final void synpred215_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20619:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20619:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
         {
-        // InternalPerspectiveDsl.g:20422:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
-        // InternalPerspectiveDsl.g:20423:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
+        // InternalPerspectiveDsl.g:20619:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20620: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, "synpred213_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1)");
+            throw new FailedPredicateException(input, "synpred215_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1)");
         }
-        // InternalPerspectiveDsl.g:20423:116: ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
-        // InternalPerspectiveDsl.g:20424:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
+        // InternalPerspectiveDsl.g:20620:116: ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
+        // InternalPerspectiveDsl.g:20621:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
         {
         getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1);
-        // InternalPerspectiveDsl.g:20430:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
-        // InternalPerspectiveDsl.g:20431:6: ( rule__PerspectivePartStack__Group_3_1__0 )
+        // InternalPerspectiveDsl.g:20627:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
+        // InternalPerspectiveDsl.g:20628:6: ( rule__PerspectivePartStack__Group_3_1__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_1()); 
         }
-        // InternalPerspectiveDsl.g:20432:6: ( rule__PerspectivePartStack__Group_3_1__0 )
-        // InternalPerspectiveDsl.g:20432:7: rule__PerspectivePartStack__Group_3_1__0
+        // InternalPerspectiveDsl.g:20629:6: ( rule__PerspectivePartStack__Group_3_1__0 )
+        // InternalPerspectiveDsl.g:20629:7: rule__PerspectivePartStack__Group_3_1__0
         {
         pushFollow(FOLLOW_2);
         rule__PerspectivePartStack__Group_3_1__0();
@@ -78813,45 +79467,15 @@
 
         }
     }
-    // $ANTLR end synpred213_InternalPerspectiveDsl
-
-    // $ANTLR start synpred214_InternalPerspectiveDsl
-    public final void synpred214_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20466:2: ( rule__PerspectivePartStack__UnorderedGroup_3__1 )
-        // InternalPerspectiveDsl.g:20466:2: rule__PerspectivePartStack__UnorderedGroup_3__1
-        {
-        pushFollow(FOLLOW_2);
-        rule__PerspectivePartStack__UnorderedGroup_3__1();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred214_InternalPerspectiveDsl
-
-    // $ANTLR start synpred215_InternalPerspectiveDsl
-    public final void synpred215_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20478:2: ( rule__PerspectivePartStack__UnorderedGroup_3__2 )
-        // InternalPerspectiveDsl.g:20478:2: rule__PerspectivePartStack__UnorderedGroup_3__2
-        {
-        pushFollow(FOLLOW_2);
-        rule__PerspectivePartStack__UnorderedGroup_3__2();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
     // $ANTLR end synpred215_InternalPerspectiveDsl
 
     // $ANTLR start synpred216_InternalPerspectiveDsl
     public final void synpred216_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20502:2: ( rule__PerspectivePart__UnorderedGroup_3__0 )
-        // InternalPerspectiveDsl.g:20502:2: rule__PerspectivePart__UnorderedGroup_3__0
+        // InternalPerspectiveDsl.g:20663:2: ( rule__PerspectivePartStack__UnorderedGroup_3__1 )
+        // InternalPerspectiveDsl.g:20663:2: rule__PerspectivePartStack__UnorderedGroup_3__1
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectivePart__UnorderedGroup_3__0();
+        rule__PerspectivePartStack__UnorderedGroup_3__1();
 
         state._fsp--;
         if (state.failed) return ;
@@ -78862,125 +79486,61 @@
 
     // $ANTLR start synpred217_InternalPerspectiveDsl
     public final void synpred217_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20517:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:20517:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
-        {
-        // InternalPerspectiveDsl.g:20517:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
-        // InternalPerspectiveDsl.g:20518: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, "synpred217_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0)");
-        }
-        // InternalPerspectiveDsl.g:20518:111: ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
-        // InternalPerspectiveDsl.g:20519:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
-        {
-        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0);
-        // InternalPerspectiveDsl.g:20525:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
-        // InternalPerspectiveDsl.g:20526:6: ( rule__PerspectivePart__Group_3_0__0 )
-        {
-        if ( state.backtracking==0 ) {
-           before(grammarAccess.getPerspectivePartAccess().getGroup_3_0()); 
-        }
-        // InternalPerspectiveDsl.g:20527:6: ( rule__PerspectivePart__Group_3_0__0 )
-        // InternalPerspectiveDsl.g:20527:7: rule__PerspectivePart__Group_3_0__0
+        // InternalPerspectiveDsl.g:20675:2: ( rule__PerspectivePartStack__UnorderedGroup_3__2 )
+        // InternalPerspectiveDsl.g:20675:2: rule__PerspectivePartStack__UnorderedGroup_3__2
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectivePart__Group_3_0__0();
+        rule__PerspectivePartStack__UnorderedGroup_3__2();
 
         state._fsp--;
         if (state.failed) return ;
 
         }
-
-
-        }
-
-
-        }
-
-
-        }
-
-
-        }
     }
     // $ANTLR end synpred217_InternalPerspectiveDsl
 
     // $ANTLR start synpred218_InternalPerspectiveDsl
     public final void synpred218_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20532:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:20532:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
-        {
-        // InternalPerspectiveDsl.g:20532:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
-        // InternalPerspectiveDsl.g:20533: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, "synpred218_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1)");
-        }
-        // InternalPerspectiveDsl.g:20533:111: ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
-        // InternalPerspectiveDsl.g:20534:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
-        {
-        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1);
-        // InternalPerspectiveDsl.g:20540:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
-        // InternalPerspectiveDsl.g:20541:6: ( rule__PerspectivePart__Group_3_1__0 )
-        {
-        if ( state.backtracking==0 ) {
-           before(grammarAccess.getPerspectivePartAccess().getGroup_3_1()); 
-        }
-        // InternalPerspectiveDsl.g:20542:6: ( rule__PerspectivePart__Group_3_1__0 )
-        // InternalPerspectiveDsl.g:20542:7: rule__PerspectivePart__Group_3_1__0
+        // InternalPerspectiveDsl.g:20699:2: ( rule__PerspectivePart__UnorderedGroup_3__0 )
+        // InternalPerspectiveDsl.g:20699: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 synpred218_InternalPerspectiveDsl
 
     // $ANTLR start synpred219_InternalPerspectiveDsl
     public final void synpred219_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20547:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:20547:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20714:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20714:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
         {
-        // InternalPerspectiveDsl.g:20547:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
-        // InternalPerspectiveDsl.g:20548:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
+        // InternalPerspectiveDsl.g:20714:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20715: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, "synpred219_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2)");
+            throw new FailedPredicateException(input, "synpred219_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0)");
         }
-        // InternalPerspectiveDsl.g:20548:111: ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
-        // InternalPerspectiveDsl.g:20549:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
+        // InternalPerspectiveDsl.g:20715:111: ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
+        // InternalPerspectiveDsl.g:20716:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
         {
-        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2);
-        // InternalPerspectiveDsl.g:20555:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
-        // InternalPerspectiveDsl.g:20556:6: ( rule__PerspectivePart__Group_3_2__0 )
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0);
+        // InternalPerspectiveDsl.g:20722:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
+        // InternalPerspectiveDsl.g:20723: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:20557:6: ( rule__PerspectivePart__Group_3_2__0 )
-        // InternalPerspectiveDsl.g:20557:7: rule__PerspectivePart__Group_3_2__0
+        // InternalPerspectiveDsl.g:20724:6: ( rule__PerspectivePart__Group_3_0__0 )
+        // InternalPerspectiveDsl.g:20724: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 ;
@@ -79003,31 +79563,31 @@
 
     // $ANTLR start synpred220_InternalPerspectiveDsl
     public final void synpred220_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20562:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:20562:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20729:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20729:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
         {
-        // InternalPerspectiveDsl.g:20562:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
-        // InternalPerspectiveDsl.g:20563:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
+        // InternalPerspectiveDsl.g:20729:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20730: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, "synpred220_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3)");
+            throw new FailedPredicateException(input, "synpred220_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1)");
         }
-        // InternalPerspectiveDsl.g:20563:111: ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
-        // InternalPerspectiveDsl.g:20564:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
+        // InternalPerspectiveDsl.g:20730:111: ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
+        // InternalPerspectiveDsl.g:20731:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
         {
-        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3);
-        // InternalPerspectiveDsl.g:20570:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
-        // InternalPerspectiveDsl.g:20571:6: ( rule__PerspectivePart__Group_3_3__0 )
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1);
+        // InternalPerspectiveDsl.g:20737:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
+        // InternalPerspectiveDsl.g:20738: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:20572:6: ( rule__PerspectivePart__Group_3_3__0 )
-        // InternalPerspectiveDsl.g:20572:7: rule__PerspectivePart__Group_3_3__0
+        // InternalPerspectiveDsl.g:20739:6: ( rule__PerspectivePart__Group_3_1__0 )
+        // InternalPerspectiveDsl.g:20739: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 ;
@@ -79050,41 +79610,105 @@
 
     // $ANTLR start synpred221_InternalPerspectiveDsl
     public final void synpred221_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20606:2: ( rule__PerspectivePart__UnorderedGroup_3__1 )
-        // InternalPerspectiveDsl.g:20606:2: rule__PerspectivePart__UnorderedGroup_3__1
+        // InternalPerspectiveDsl.g:20744:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20744:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20744:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20745: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, "synpred221_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2)");
+        }
+        // InternalPerspectiveDsl.g:20745:111: ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
+        // InternalPerspectiveDsl.g:20746:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2);
+        // InternalPerspectiveDsl.g:20752:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
+        // InternalPerspectiveDsl.g:20753:6: ( rule__PerspectivePart__Group_3_2__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectivePartAccess().getGroup_3_2()); 
+        }
+        // InternalPerspectiveDsl.g:20754:6: ( rule__PerspectivePart__Group_3_2__0 )
+        // InternalPerspectiveDsl.g:20754: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 synpred221_InternalPerspectiveDsl
 
     // $ANTLR start synpred222_InternalPerspectiveDsl
     public final void synpred222_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20618:2: ( rule__PerspectivePart__UnorderedGroup_3__2 )
-        // InternalPerspectiveDsl.g:20618:2: rule__PerspectivePart__UnorderedGroup_3__2
+        // InternalPerspectiveDsl.g:20759:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20759:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20759:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20760: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, "synpred222_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3)");
+        }
+        // InternalPerspectiveDsl.g:20760:111: ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
+        // InternalPerspectiveDsl.g:20761:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3);
+        // InternalPerspectiveDsl.g:20767:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
+        // InternalPerspectiveDsl.g:20768:6: ( rule__PerspectivePart__Group_3_3__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectivePartAccess().getGroup_3_3()); 
+        }
+        // InternalPerspectiveDsl.g:20769:6: ( rule__PerspectivePart__Group_3_3__0 )
+        // InternalPerspectiveDsl.g:20769: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 synpred222_InternalPerspectiveDsl
 
     // $ANTLR start synpred223_InternalPerspectiveDsl
     public final void synpred223_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20630:2: ( rule__PerspectivePart__UnorderedGroup_3__3 )
-        // InternalPerspectiveDsl.g:20630:2: rule__PerspectivePart__UnorderedGroup_3__3
+        // InternalPerspectiveDsl.g:20803:2: ( rule__PerspectivePart__UnorderedGroup_3__1 )
+        // InternalPerspectiveDsl.g:20803: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 ;
@@ -79095,11 +79719,11 @@
 
     // $ANTLR start synpred224_InternalPerspectiveDsl
     public final void synpred224_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20642:2: ( rule__PerspectivePart__UnorderedGroup_3__4 )
-        // InternalPerspectiveDsl.g:20642:2: rule__PerspectivePart__UnorderedGroup_3__4
+        // InternalPerspectiveDsl.g:20815:2: ( rule__PerspectivePart__UnorderedGroup_3__2 )
+        // InternalPerspectiveDsl.g:20815: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 ;
@@ -79110,11 +79734,11 @@
 
     // $ANTLR start synpred225_InternalPerspectiveDsl
     public final void synpred225_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20666:2: ( rule__PerspectiveSearch__UnorderedGroup_4__0 )
-        // InternalPerspectiveDsl.g:20666:2: rule__PerspectiveSearch__UnorderedGroup_4__0
+        // InternalPerspectiveDsl.g:20827:2: ( rule__PerspectivePart__UnorderedGroup_3__3 )
+        // InternalPerspectiveDsl.g:20827: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 ;
@@ -79125,28 +79749,58 @@
 
     // $ANTLR start synpred226_InternalPerspectiveDsl
     public final void synpred226_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20681:3: ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:20681:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20839:2: ( rule__PerspectivePart__UnorderedGroup_3__4 )
+        // InternalPerspectiveDsl.g:20839:2: rule__PerspectivePart__UnorderedGroup_3__4
         {
-        // InternalPerspectiveDsl.g:20681:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
-        // InternalPerspectiveDsl.g:20682:4: {...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePart__UnorderedGroup_3__4();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred226_InternalPerspectiveDsl
+
+    // $ANTLR start synpred227_InternalPerspectiveDsl
+    public final void synpred227_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20863:2: ( rule__PerspectiveSearch__UnorderedGroup_4__0 )
+        // InternalPerspectiveDsl.g:20863:2: rule__PerspectiveSearch__UnorderedGroup_4__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectiveSearch__UnorderedGroup_4__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:20878:3: ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20878:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20878:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20879: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, "synpred226_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0)");
+            throw new FailedPredicateException(input, "synpred228_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0)");
         }
-        // InternalPerspectiveDsl.g:20682:113: ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
-        // InternalPerspectiveDsl.g:20683:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
+        // InternalPerspectiveDsl.g:20879:113: ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
+        // InternalPerspectiveDsl.g:20880:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
         {
         getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0);
-        // InternalPerspectiveDsl.g:20689:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
-        // InternalPerspectiveDsl.g:20690:6: ( rule__PerspectiveSearch__Group_4_0__0 )
+        // InternalPerspectiveDsl.g:20886:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
+        // InternalPerspectiveDsl.g:20887:6: ( rule__PerspectiveSearch__Group_4_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getPerspectiveSearchAccess().getGroup_4_0()); 
         }
-        // InternalPerspectiveDsl.g:20691:6: ( rule__PerspectiveSearch__Group_4_0__0 )
-        // InternalPerspectiveDsl.g:20691:7: rule__PerspectiveSearch__Group_4_0__0
+        // InternalPerspectiveDsl.g:20888:6: ( rule__PerspectiveSearch__Group_4_0__0 )
+        // InternalPerspectiveDsl.g:20888:7: rule__PerspectiveSearch__Group_4_0__0
         {
         pushFollow(FOLLOW_2);
         rule__PerspectiveSearch__Group_4_0__0();
@@ -79168,12 +79822,12 @@
 
         }
     }
-    // $ANTLR end synpred226_InternalPerspectiveDsl
+    // $ANTLR end synpred228_InternalPerspectiveDsl
 
-    // $ANTLR start synpred227_InternalPerspectiveDsl
-    public final void synpred227_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20725:2: ( rule__PerspectiveSearch__UnorderedGroup_4__1 )
-        // InternalPerspectiveDsl.g:20725:2: rule__PerspectiveSearch__UnorderedGroup_4__1
+    // $ANTLR start synpred229_InternalPerspectiveDsl
+    public final void synpred229_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20922:2: ( rule__PerspectiveSearch__UnorderedGroup_4__1 )
+        // InternalPerspectiveDsl.g:20922:2: rule__PerspectiveSearch__UnorderedGroup_4__1
         {
         pushFollow(FOLLOW_2);
         rule__PerspectiveSearch__UnorderedGroup_4__1();
@@ -79183,7 +79837,7 @@
 
         }
     }
-    // $ANTLR end synpred227_InternalPerspectiveDsl
+    // $ANTLR end synpred229_InternalPerspectiveDsl
 
     // Delegated rules
 
@@ -79201,34 +79855,6 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred49_InternalPerspectiveDsl() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred49_InternalPerspectiveDsl_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred125_InternalPerspectiveDsl() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred125_InternalPerspectiveDsl_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
     public final boolean synpred227_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -79271,6 +79897,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred172_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred172_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred211_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -79285,11 +79925,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred71_InternalPerspectiveDsl() {
+    public final boolean synpred50_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred71_InternalPerspectiveDsl_fragment(); // can never throw exception
+            synpred50_InternalPerspectiveDsl_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -79341,6 +79981,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred137_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred137_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred219_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -79369,11 +80023,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred175_InternalPerspectiveDsl() {
+    public final boolean synpred202_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred175_InternalPerspectiveDsl_fragment(); // can never throw exception
+            synpred202_InternalPerspectiveDsl_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -79383,11 +80037,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred202_InternalPerspectiveDsl() {
+    public final boolean synpred24_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred202_InternalPerspectiveDsl_fragment(); // can never throw exception
+            synpred24_InternalPerspectiveDsl_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -79411,11 +80065,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred62_InternalPerspectiveDsl() {
+    public final boolean synpred179_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred62_InternalPerspectiveDsl_fragment(); // can never throw exception
+            synpred179_InternalPerspectiveDsl_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -79425,11 +80079,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred171_InternalPerspectiveDsl() {
+    public final boolean synpred196_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred171_InternalPerspectiveDsl_fragment(); // can never throw exception
+            synpred196_InternalPerspectiveDsl_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -79495,6 +80149,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred149_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred149_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred133_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -79509,11 +80177,25 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred70_InternalPerspectiveDsl() {
+    public final boolean synpred51_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred70_InternalPerspectiveDsl_fragment(); // can never throw exception
+            synpred51_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred97_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred97_InternalPerspectiveDsl_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -79537,11 +80219,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred218_InternalPerspectiveDsl() {
+    public final boolean synpred141_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred218_InternalPerspectiveDsl_fragment(); // can never throw exception
+            synpred141_InternalPerspectiveDsl_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -79551,11 +80233,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred21_InternalPerspectiveDsl() {
+    public final boolean synpred218_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred21_InternalPerspectiveDsl_fragment(); // can never throw exception
+            synpred218_InternalPerspectiveDsl_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -79579,39 +80261,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred176_InternalPerspectiveDsl() {
+    public final boolean synpred25_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred176_InternalPerspectiveDsl_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred183_InternalPerspectiveDsl() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred183_InternalPerspectiveDsl_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred157_InternalPerspectiveDsl() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred157_InternalPerspectiveDsl_fragment(); // can never throw exception
+            synpred25_InternalPerspectiveDsl_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -79635,6 +80289,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred195_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred195_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred226_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -79649,39 +80317,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred48_InternalPerspectiveDsl() {
+    public final boolean synpred86_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred48_InternalPerspectiveDsl_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred199_InternalPerspectiveDsl() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred199_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 synpred191_InternalPerspectiveDsl() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred191_InternalPerspectiveDsl_fragment(); // can never throw exception
+            synpred86_InternalPerspectiveDsl_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -79705,6 +80345,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred229_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred229_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 synpred127_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -79719,6 +80373,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred186_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred186_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred213_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -79733,34 +80401,6 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred170_InternalPerspectiveDsl() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred170_InternalPerspectiveDsl_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred139_InternalPerspectiveDsl() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred139_InternalPerspectiveDsl_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
     public final boolean synpred132_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -79775,6 +80415,62 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred90_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred90_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred73_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred73_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 synpred64_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred64_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred140_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred140_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred177_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -79817,39 +80513,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred200_InternalPerspectiveDsl() {
+    public final boolean synpred156_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred200_InternalPerspectiveDsl_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred22_InternalPerspectiveDsl() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred22_InternalPerspectiveDsl_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred182_InternalPerspectiveDsl() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred182_InternalPerspectiveDsl_fragment(); // can never throw exception
+            synpred156_InternalPerspectiveDsl_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -79901,39 +80569,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred194_InternalPerspectiveDsl() {
+    public final boolean synpred228_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred194_InternalPerspectiveDsl_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred89_InternalPerspectiveDsl() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred89_InternalPerspectiveDsl_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred95_InternalPerspectiveDsl() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred95_InternalPerspectiveDsl_fragment(); // can never throw exception
+            synpred228_InternalPerspectiveDsl_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -79957,11 +80597,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred147_InternalPerspectiveDsl() {
+    public final boolean synpred205_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred147_InternalPerspectiveDsl_fragment(); // can never throw exception
+            synpred205_InternalPerspectiveDsl_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -79971,11 +80611,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred205_InternalPerspectiveDsl() {
+    public final boolean synpred173_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred205_InternalPerspectiveDsl_fragment(); // can never throw exception
+            synpred173_InternalPerspectiveDsl_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -79999,11 +80639,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred154_InternalPerspectiveDsl() {
+    public final boolean synpred72_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred154_InternalPerspectiveDsl_fragment(); // can never throw exception
+            synpred72_InternalPerspectiveDsl_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -80027,6 +80667,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred189_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred189_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred131_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -80041,6 +80695,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred91_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred91_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred23_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -80083,6 +80751,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred178_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred178_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred216_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -80097,6 +80779,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred159_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred159_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred220_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -80111,34 +80807,6 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred88_InternalPerspectiveDsl() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred88_InternalPerspectiveDsl_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred128_InternalPerspectiveDsl() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred128_InternalPerspectiveDsl_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
     public final boolean synpred224_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -80153,20 +80821,6 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred84_InternalPerspectiveDsl() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred84_InternalPerspectiveDsl_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
 
 
     protected DFA5 dfa5 = new DFA5(this);
@@ -80197,17 +80851,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\167\1\uffff\1\127\1\uffff\1\44\1\uffff\1\127\1\uffff";
+    static final String dfa_4s = "\1\171\1\uffff\1\131\1\uffff\1\44\1\uffff\1\131\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\110\uffff\1\3",
+            "\1\2\51\uffff\1\1\112\uffff\1\3",
             "",
-            "\1\4\3\uffff\1\5\5\uffff\1\5\41\uffff\1\5",
+            "\1\4\3\uffff\1\5\5\uffff\1\5\43\uffff\1\5",
             "",
             "\1\6\37\uffff\1\7",
             "",
-            "\1\4\3\uffff\1\5\5\uffff\1\5\41\uffff\1\5",
+            "\1\4\3\uffff\1\5\5\uffff\1\5\43\uffff\1\5",
             ""
     };
 
@@ -80233,16 +80887,16 @@
             this.transition = dfa_7;
         }
         public String getDescription() {
-            return "2818:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );";
+            return "2880:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );";
         }
     }
     static final String dfa_8s = "\43\uffff";
     static final String dfa_9s = "\1\4\1\0\41\uffff";
-    static final String dfa_10s = "\1\174\1\0\41\uffff";
+    static final String dfa_10s = "\1\176\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\41\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\43\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",
             "",
             "",
@@ -80300,7 +80954,7 @@
             this.transition = dfa_13;
         }
         public String getDescription() {
-            return "2872:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );";
+            return "2934:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -80313,7 +80967,7 @@
                         int index7_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred21_InternalPerspectiveDsl()) ) {s = 34;}
+                        if ( (synpred23_InternalPerspectiveDsl()) ) {s = 34;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -80330,7 +80984,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\41\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\43\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",
             "",
             "",
@@ -80382,7 +81036,7 @@
             this.transition = dfa_14;
         }
         public String getDescription() {
-            return "2893:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );";
+            return "2955:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -80395,7 +81049,7 @@
                         int index8_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred22_InternalPerspectiveDsl()) ) {s = 34;}
+                        if ( (synpred24_InternalPerspectiveDsl()) ) {s = 34;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -80426,7 +81080,7 @@
             this.transition = dfa_14;
         }
         public String getDescription() {
-            return "2914:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );";
+            return "2976:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -80439,7 +81093,7 @@
                         int index9_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred23_InternalPerspectiveDsl()) ) {s = 34;}
+                        if ( (synpred25_InternalPerspectiveDsl()) ) {s = 34;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -80495,25 +81149,25 @@
             this.transition = dfa_20;
         }
         public String getDescription() {
-            return "3115:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
+            return "3177:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
         }
     }
     static final String dfa_21s = "\12\uffff";
     static final String dfa_22s = "\4\uffff\5\3\1\uffff";
     static final String dfa_23s = "\1\53\2\4\1\uffff\5\4\1\uffff";
-    static final String dfa_24s = "\1\171\2\61\1\uffff\5\174\1\uffff";
+    static final String dfa_24s = "\1\173\2\61\1\uffff\5\176\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\114\uffff\1\2\1\3",
+            "\1\1\116\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\37\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\37\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\37\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\37\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\37\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\41\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\41\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\41\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\41\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\41\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
             ""
     };
 
@@ -80539,15 +81193,15 @@
             this.transition = dfa_27;
         }
         public String getDescription() {
-            return "3349:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );";
+            return "3411:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );";
         }
     }
     static final String dfa_28s = "\1\4\2\0\40\uffff";
-    static final String dfa_29s = "\1\174\2\0\40\uffff";
+    static final String dfa_29s = "\1\176\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\42\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\44\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",
             "",
@@ -80603,7 +81257,7 @@
             this.transition = dfa_32;
         }
         public String getDescription() {
-            return "3418:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );";
+            return "3480:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -80616,7 +81270,7 @@
                         int index27_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred62_InternalPerspectiveDsl()) ) {s = 3;}
+                        if ( (synpred64_InternalPerspectiveDsl()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
@@ -80631,7 +81285,7 @@
                         int index27_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred62_InternalPerspectiveDsl()) ) {s = 3;}
+                        if ( (synpred64_InternalPerspectiveDsl()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
@@ -80649,11 +81303,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\174\26\uffff\1\0\10\uffff";
+    static final String dfa_35s = "\1\176\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\42\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\44\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",
             "",
             "",
             "",
@@ -80708,7 +81362,7 @@
             this.transition = dfa_38;
         }
         public String getDescription() {
-            return "3439:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );";
+            return "3501:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -80721,9 +81375,9 @@
                         int index28_23 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred70_InternalPerspectiveDsl()) ) {s = 30;}
+                        if ( (synpred72_InternalPerspectiveDsl()) ) {s = 30;}
 
-                        else if ( (synpred71_InternalPerspectiveDsl()) ) {s = 31;}
+                        else if ( (synpred73_InternalPerspectiveDsl()) ) {s = 31;}
 
                          
                         input.seek(index28_23);
@@ -80738,7 +81392,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\42\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\44\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",
             "",
             "",
@@ -80790,7 +81444,7 @@
             this.transition = dfa_39;
         }
         public String getDescription() {
-            return "3610:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );";
+            return "3672:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -80803,7 +81457,7 @@
                         int index31_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred84_InternalPerspectiveDsl()) ) {s = 34;}
+                        if ( (synpred86_InternalPerspectiveDsl()) ) {s = 34;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -80834,7 +81488,7 @@
             this.transition = dfa_32;
         }
         public String getDescription() {
-            return "3715:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );";
+            return "3777:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -80847,7 +81501,7 @@
                         int index36_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred89_InternalPerspectiveDsl()) ) {s = 3;}
+                        if ( (synpred91_InternalPerspectiveDsl()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
@@ -80862,7 +81516,7 @@
                         int index36_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred89_InternalPerspectiveDsl()) ) {s = 3;}
+                        if ( (synpred91_InternalPerspectiveDsl()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
@@ -80893,7 +81547,7 @@
             this.transition = dfa_32;
         }
         public String getDescription() {
-            return "3796:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );";
+            return "3858:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -80906,7 +81560,7 @@
                         int index39_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred95_InternalPerspectiveDsl()) ) {s = 3;}
+                        if ( (synpred97_InternalPerspectiveDsl()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
@@ -80921,7 +81575,7 @@
                         int index39_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred95_InternalPerspectiveDsl()) ) {s = 3;}
+                        if ( (synpred97_InternalPerspectiveDsl()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
@@ -80939,11 +81593,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\174\7\0\2\uffff";
+    static final String dfa_42s = "\1\176\7\0\2\uffff";
     static final String dfa_43s = "\10\uffff\1\2\1\1";
-    static final String dfa_44s = "\1\uffff\1\3\1\0\1\6\1\5\1\4\1\1\1\2\2\uffff}>";
+    static final String dfa_44s = "\1\uffff\1\3\1\6\1\0\1\1\1\4\1\5\1\2\2\uffff}>";
     static final String[] dfa_45s = {
-            "\5\10\5\uffff\2\10\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\27\10\3\uffff\2\10\37\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\41\uffff\1\10\1\uffff\32\10\5\uffff\2\10\1\uffff\2\10",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -80975,40 +81629,40 @@
             this.transition = dfa_45;
         }
         public String getDescription() {
-            return "8837:2: ( rule__XAssignment__Group_1_1__0 )?";
+            return "9034:2: ( rule__XAssignment__Group_1_1__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA69_2 = input.LA(1);
+                        int LA69_3 = input.LA(1);
 
                          
-                        int index69_2 = input.index();
+                        int index69_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred125_InternalPerspectiveDsl()) ) {s = 9;}
+                        if ( (synpred127_InternalPerspectiveDsl()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index69_2);
+                        input.seek(index69_3);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA69_6 = input.LA(1);
+                        int LA69_4 = input.LA(1);
 
                          
-                        int index69_6 = input.index();
+                        int index69_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred125_InternalPerspectiveDsl()) ) {s = 9;}
+                        if ( (synpred127_InternalPerspectiveDsl()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index69_6);
+                        input.seek(index69_4);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
@@ -81018,7 +81672,7 @@
                         int index69_7 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred125_InternalPerspectiveDsl()) ) {s = 9;}
+                        if ( (synpred127_InternalPerspectiveDsl()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
@@ -81033,7 +81687,7 @@
                         int index69_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred125_InternalPerspectiveDsl()) ) {s = 9;}
+                        if ( (synpred127_InternalPerspectiveDsl()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
@@ -81048,7 +81702,7 @@
                         int index69_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred125_InternalPerspectiveDsl()) ) {s = 9;}
+                        if ( (synpred127_InternalPerspectiveDsl()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
@@ -81057,33 +81711,33 @@
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA69_4 = input.LA(1);
+                        int LA69_6 = input.LA(1);
 
                          
-                        int index69_4 = input.index();
+                        int index69_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred125_InternalPerspectiveDsl()) ) {s = 9;}
+                        if ( (synpred127_InternalPerspectiveDsl()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index69_4);
+                        input.seek(index69_6);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA69_3 = input.LA(1);
+                        int LA69_2 = input.LA(1);
 
                          
-                        int index69_3 = input.index();
+                        int index69_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred125_InternalPerspectiveDsl()) ) {s = 9;}
+                        if ( (synpred127_InternalPerspectiveDsl()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index69_3);
+                        input.seek(index69_2);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -81096,11 +81750,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\174\1\uffff\10\0\1\uffff";
+    static final String dfa_48s = "\1\176\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\5\1\4\1\3\1\6\1\0\1\2\1\1\1\7\1\uffff}>";
+    static final String dfa_50s = "\2\uffff\1\3\1\7\1\0\1\4\1\6\1\1\1\2\1\5\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\37\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\41\uffff\1\1\1\uffff\32\1\5\uffff\2\1\1\uffff\2\1",
             "",
             "\1\uffff",
             "\1\uffff",
@@ -81133,65 +81787,20 @@
             this.transition = dfa_51;
         }
         public String getDescription() {
-            return "()* loopback of 10133:2: ( rule__XOtherOperatorExpression__Group_1__0 )*";
+            return "()* loopback of 10330:2: ( rule__XOtherOperatorExpression__Group_1__0 )*";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA75_6 = input.LA(1);
-
-                         
-                        int index75_6 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index75_6);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
-                        int LA75_8 = input.LA(1);
-
-                         
-                        int index75_8 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index75_8);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
-                        int LA75_7 = input.LA(1);
-
-                         
-                        int index75_7 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index75_7);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 3 : 
                         int LA75_4 = input.LA(1);
 
                          
                         int index75_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 10;}
+                        if ( (synpred133_InternalPerspectiveDsl()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
@@ -81199,29 +81808,44 @@
                         input.seek(index75_4);
                         if ( s>=0 ) return s;
                         break;
-                    case 4 : 
-                        int LA75_3 = input.LA(1);
+                    case 1 : 
+                        int LA75_7 = input.LA(1);
 
                          
-                        int index75_3 = input.index();
+                        int index75_7 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 10;}
+                        if ( (synpred133_InternalPerspectiveDsl()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index75_3);
+                        input.seek(index75_7);
                         if ( s>=0 ) return s;
                         break;
-                    case 5 : 
+                    case 2 : 
+                        int LA75_8 = input.LA(1);
+
+                         
+                        int index75_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred133_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index75_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
                         int LA75_2 = input.LA(1);
 
                          
                         int index75_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 10;}
+                        if ( (synpred133_InternalPerspectiveDsl()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
@@ -81229,14 +81853,14 @@
                         input.seek(index75_2);
                         if ( s>=0 ) return s;
                         break;
-                    case 6 : 
+                    case 4 : 
                         int LA75_5 = input.LA(1);
 
                          
                         int index75_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 10;}
+                        if ( (synpred133_InternalPerspectiveDsl()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
@@ -81244,14 +81868,14 @@
                         input.seek(index75_5);
                         if ( s>=0 ) return s;
                         break;
-                    case 7 : 
+                    case 5 : 
                         int LA75_9 = input.LA(1);
 
                          
                         int index75_9 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 10;}
+                        if ( (synpred133_InternalPerspectiveDsl()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
@@ -81259,6 +81883,36 @@
                         input.seek(index75_9);
                         if ( s>=0 ) return s;
                         break;
+                    case 6 : 
+                        int LA75_6 = input.LA(1);
+
+                         
+                        int index75_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred133_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index75_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA75_3 = input.LA(1);
+
+                         
+                        int index75_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred133_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index75_3);
+                        if ( s>=0 ) return s;
+                        break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
@@ -81270,11 +81924,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\174\1\0\114\uffff";
+    static final String dfa_55s = "\1\176\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\37\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\41\uffff\1\2\1\uffff\1\1\31\2\5\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -81376,7 +82030,7 @@
             this.transition = dfa_58;
         }
         public String getDescription() {
-            return "11727:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?";
+            return "11924:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -81389,7 +82043,7 @@
                         int index82_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred138_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred140_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -81406,7 +82060,7 @@
         }
     }
     static final String[] dfa_59s = {
-            "\5\2\5\uffff\45\2\3\uffff\2\2\37\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\41\uffff\1\2\1\uffff\5\2\1\1\24\2\5\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -81501,7 +82155,7 @@
             this.transition = dfa_59;
         }
         public String getDescription() {
-            return "11753:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?";
+            return "11950:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -81514,7 +82168,7 @@
                         int index83_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred139_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred141_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -81532,11 +82186,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\174\2\0\43\uffff";
+    static final String dfa_62s = "\1\176\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\42\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\44\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",
             "",
@@ -81597,7 +82251,7 @@
             this.transition = dfa_65;
         }
         public String getDescription() {
-            return "12726:2: ( rule__XClosure__Group_1__0 )?";
+            return "12923:2: ( rule__XClosure__Group_1__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -81610,7 +82264,7 @@
                         int index91_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred147_InternalPerspectiveDsl()) ) {s = 3;}
+                        if ( (synpred149_InternalPerspectiveDsl()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
@@ -81625,7 +82279,7 @@
                         int index91_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred147_InternalPerspectiveDsl()) ) {s = 3;}
+                        if ( (synpred149_InternalPerspectiveDsl()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
@@ -81643,11 +82297,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\174\2\0\37\uffff";
+    static final String dfa_68s = "\1\176\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\42\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\44\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",
             "",
@@ -81704,7 +82358,7 @@
             this.transition = dfa_71;
         }
         public String getDescription() {
-            return "14157:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?";
+            return "14354:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -81717,7 +82371,7 @@
                         int index101_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred157_InternalPerspectiveDsl()) ) {s = 3;}
+                        if ( (synpred159_InternalPerspectiveDsl()) ) {s = 3;}
 
                         else if ( (true) ) {s = 4;}
 
@@ -81732,7 +82386,7 @@
                         int index101_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred157_InternalPerspectiveDsl()) ) {s = 3;}
+                        if ( (synpred159_InternalPerspectiveDsl()) ) {s = 3;}
 
                         else if ( (true) ) {s = 4;}
 
@@ -81763,7 +82417,7 @@
             this.transition = dfa_58;
         }
         public String getDescription() {
-            return "16290:2: ( rule__XFeatureCall__Group_3__0 )?";
+            return "16487:2: ( rule__XFeatureCall__Group_3__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -81776,7 +82430,7 @@
                         int index114_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred172_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -81807,7 +82461,7 @@
             this.transition = dfa_59;
         }
         public String getDescription() {
-            return "16316:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?";
+            return "16513:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -81820,7 +82474,7 @@
                         int index115_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred171_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred173_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -81837,7 +82491,7 @@
         }
     }
     static final String[] dfa_72s = {
-            "\5\2\5\uffff\15\2\1\1\27\2\3\uffff\2\2\37\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\41\uffff\1\2\1\uffff\32\2\5\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -81932,7 +82586,7 @@
             this.transition = dfa_72;
         }
         public String getDescription() {
-            return "16776:2: ( rule__XConstructorCall__Group_3__0 )?";
+            return "16973:2: ( rule__XConstructorCall__Group_3__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -81945,7 +82599,7 @@
                         int index119_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred175_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred177_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -81976,7 +82630,7 @@
             this.transition = dfa_58;
         }
         public String getDescription() {
-            return "16803:2: ( rule__XConstructorCall__Group_4__0 )?";
+            return "17000:2: ( rule__XConstructorCall__Group_4__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -81989,7 +82643,7 @@
                         int index120_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred178_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -82020,7 +82674,7 @@
             this.transition = dfa_59;
         }
         public String getDescription() {
-            return "16829:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?";
+            return "17026:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -82033,7 +82687,7 @@
                         int index121_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred177_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred179_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -82051,11 +82705,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\174\40\0\55\uffff";
+    static final String dfa_75s = "\1\176\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\37\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\41\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",
@@ -82155,7 +82809,7 @@
             this.transition = dfa_78;
         }
         public String getDescription() {
-            return "17720:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?";
+            return "17917:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -82168,7 +82822,7 @@
                         int index126_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82183,7 +82837,7 @@
                         int index126_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82198,7 +82852,7 @@
                         int index126_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82213,7 +82867,7 @@
                         int index126_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82228,7 +82882,7 @@
                         int index126_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82243,7 +82897,7 @@
                         int index126_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82258,7 +82912,7 @@
                         int index126_7 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82273,7 +82927,7 @@
                         int index126_8 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82288,7 +82942,7 @@
                         int index126_9 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82303,7 +82957,7 @@
                         int index126_10 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82318,7 +82972,7 @@
                         int index126_11 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82333,7 +82987,7 @@
                         int index126_12 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82348,7 +83002,7 @@
                         int index126_13 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82363,7 +83017,7 @@
                         int index126_14 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82378,7 +83032,7 @@
                         int index126_15 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82393,7 +83047,7 @@
                         int index126_16 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82408,7 +83062,7 @@
                         int index126_17 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82423,7 +83077,7 @@
                         int index126_18 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82438,7 +83092,7 @@
                         int index126_19 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82453,7 +83107,7 @@
                         int index126_20 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82468,7 +83122,7 @@
                         int index126_21 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82483,7 +83137,7 @@
                         int index126_22 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82498,7 +83152,7 @@
                         int index126_23 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82513,7 +83167,7 @@
                         int index126_24 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82528,7 +83182,7 @@
                         int index126_25 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82543,7 +83197,7 @@
                         int index126_26 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82558,7 +83212,7 @@
                         int index126_27 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82573,7 +83227,7 @@
                         int index126_28 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82588,7 +83242,7 @@
                         int index126_29 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82603,7 +83257,7 @@
                         int index126_30 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82618,7 +83272,7 @@
                         int index126_31 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82633,7 +83287,7 @@
                         int index126_32 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalPerspectiveDsl()) ) {s = 77;}
+                        if ( (synpred184_InternalPerspectiveDsl()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
@@ -82652,11 +83306,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\174\1\0\115\uffff";
+    static final String dfa_82s = "\1\176\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\37\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\41\uffff\1\2\1\uffff\32\2\1\uffff\1\2\3\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -82759,7 +83413,7 @@
             this.transition = dfa_85;
         }
         public String getDescription() {
-            return "19077:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?";
+            return "19274:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -82772,7 +83426,7 @@
                         int index135_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred191_InternalPerspectiveDsl()) ) {s = 78;}
+                        if ( (synpred193_InternalPerspectiveDsl()) ) {s = 78;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -82803,7 +83457,7 @@
             this.transition = dfa_85;
         }
         public String getDescription() {
-            return "19347:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?";
+            return "19544:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -82816,7 +83470,7 @@
                         int index138_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred194_InternalPerspectiveDsl()) ) {s = 78;}
+                        if ( (synpred196_InternalPerspectiveDsl()) ) {s = 78;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -82845,7 +83499,7 @@
     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,0x0020000000000000L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x3A00000000000000L,0x0080000000000000L});
     public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x4080000000000000L,0x000000000000000CL});
     public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x4000000000000002L,0x000000000000000CL});
     public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000000020L});
@@ -82856,8 +83510,8 @@
     public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
     public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x1000000000000000L,0x0000000000000003L});
     public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x4000000000000000L,0x000000000000000CL});
-    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x1800000000000000L,0x0040000000000012L});
-    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000000000000L,0x0000000000467FE0L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x1800000000000000L,0x0100000000000012L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000000000000L,0x0000000001C67FE0L});
     public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
     public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
     public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
@@ -82867,113 +83521,115 @@
     public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
     public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
     public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
-    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
-    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000000300000L});
-    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000800000000000L});
-    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000400000000010L,0x0080000000000000L});
-    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0001000000000010L});
-    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000001000000010L});
-    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0047E10C080001F0L,0x1002FF8A67000000L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000000L,0x0000000000300000L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000080L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000800000000000L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000400000000010L,0x0200000000000000L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0001000000000010L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000001000000010L});
+    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[]{0x0000000000000002L,0x0000000008000000L});
-    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0047E10C080001F0L,0x1002FF8A63000000L});
-    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000002000L});
-    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0047E10C080001F0L,0x1002FF8A73000000L});
-    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
-    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
-    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0001E00000000010L});
-    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x000000000C1F0000L});
-    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000000008000000L});
-    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000006000000L});
-    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000000004000L});
-    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000000004002L});
-    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000000008002L});
-    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000001E00000L});
-    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000000001E00002L});
-    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x000000000E000000L,0x0000000080000000L});
-    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x000000000E000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000000080000010L,0x0000000002000000L});
-    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
-    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x00000003FC000000L});
-    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x00000003FC000002L});
-    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000000040000000L});
-    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x0000000004000000L});
-    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000088000000L});
-    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0000000C00000000L});
-    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000C00000002L});
-    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x000000F000000000L});
-    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x000000F000000002L});
-    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0000010C00000000L});
-    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
-    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000060000000000L});
-    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000080000000000L,0x0300000000000000L});
-    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000080000000002L,0x0300000000000000L});
-    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0000080000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0003E00008000010L});
-    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0000000000000000L,0x0000000042000000L});
-    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0000000080000010L,0x0008000002000000L});
-    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000004000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0047E10C880001F0L,0x1402FF8A67000000L});
-    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x00C7E10C080001F0L,0x1002FF8A63000000L});
-    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0047F10C880001F0L,0x1C02FF8A63000000L});
-    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000000080000010L,0x0400000002000000L});
-    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0047F10C080001F2L,0x1802FF8A63000000L});
-    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
-    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0047E10C080001F0L,0x400BFE299C000000L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0047E10C080001F0L,0x400BFE298C000000L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0047E10C080001F0L,0x400BFE29CC000000L});
+    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[]{0x0001E00000000010L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x000000000C1F0000L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000008000000L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000006000000L});
+    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000000004002L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000000000008002L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000000001E00000L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x0000000001E00002L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x000000000E000000L,0x0000000200000000L});
+    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x000000000E000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000000080000010L,0x0000000008000000L});
+    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
+    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x00000003FC000000L});
+    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x00000003FC000002L});
+    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000088000000L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0000000C00000000L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0000000C00000002L});
+    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x000000F000000000L});
+    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x000000F000000002L});
+    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000010C00000000L});
+    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000060000000000L});
+    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0000080000000000L,0x0C00000000000000L});
+    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0000080000000002L,0x0C00000000000000L});
+    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0000080000000000L,0x0400000000000000L});
+    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0003E00008000010L});
+    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000000000000L,0x0000000108000000L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0000000080000010L,0x0020000008000000L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0000000004000000L,0x0000000020000000L});
+    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0047E10C880001F0L,0x500BFE299C000000L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x00C7E10C080001F0L,0x400BFE298C000000L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0047F10C880001F0L,0x700BFE298C000000L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000080000010L,0x1000000008000000L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0047F10C080001F2L,0x600BFE298C000000L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
     public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
-    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0047E10C880001F0L,0x1002FF8A63000000L});
-    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0080000080000010L,0x000000700A000000L});
-    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0000000080000012L,0x000000500A000000L});
-    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
-    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000080000010L,0x000000500A000000L});
-    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
-    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0047F10C080001F0L,0x1802FF8A63800000L});
-    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0047E10C080001F0L,0x1002FF8A63800000L});
-    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0047F10C080001F0L,0x1802FF8A63000000L});
-    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x00C7F10C080001F0L,0x1802FF8A63000000L});
-    public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x0000100000000000L,0x0800000000000000L});
-    public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
-    public static final BitSet FOLLOW_115 = new BitSet(new long[]{0x0000000008000000L,0x0000000042000000L});
-    public static final BitSet FOLLOW_116 = new BitSet(new long[]{0x0004000000000000L,0x1000000000000000L});
-    public static final BitSet FOLLOW_117 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_118 = new BitSet(new long[]{0x00000000000001C0L});
-    public static final BitSet FOLLOW_119 = new BitSet(new long[]{0x00040000000001E0L,0x1000180060000000L});
-    public static final BitSet FOLLOW_120 = new BitSet(new long[]{0x0000000000000000L,0x0000000044000000L});
-    public static final BitSet FOLLOW_121 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
-    public static final BitSet FOLLOW_122 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_123 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
+    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0047E10C880001F0L,0x400BFE298C000000L});
+    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0080000080000010L,0x000001C028000000L});
+    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000080000012L,0x0000014028000000L});
+    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000080000010L,0x0000014028000000L});
+    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0047F10C080001F0L,0x600BFE298E000000L});
+    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0047E10C080001F0L,0x400BFE298E000000L});
+    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0047F10C080001F0L,0x600BFE298C000000L});
+    public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
+    public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x00C7F10C080001F0L,0x600BFE298C000000L});
+    public static final BitSet FOLLOW_115 = new BitSet(new long[]{0x0000100000000000L,0x2000000000000000L});
+    public static final BitSet FOLLOW_116 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_117 = new BitSet(new long[]{0x0000000008000000L,0x0000000108000000L});
+    public static final BitSet FOLLOW_118 = new BitSet(new long[]{0x0004000000000000L,0x4000000000000000L});
+    public static final BitSet FOLLOW_119 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_120 = new BitSet(new long[]{0x00000000000001C0L});
+    public static final BitSet FOLLOW_121 = new BitSet(new long[]{0x00040000000001E0L,0x4000600180000000L});
+    public static final BitSet FOLLOW_122 = new BitSet(new long[]{0x0000000000000000L,0x0000000110000000L});
+    public static final BitSet FOLLOW_123 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
     public static final BitSet FOLLOW_124 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_125 = new BitSet(new long[]{0x0000000000000000L,0x0005000000000000L});
-    public static final BitSet FOLLOW_126 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
-    public static final BitSet FOLLOW_127 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_128 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_129 = new BitSet(new long[]{0x0000080000000000L});
-    public static final BitSet FOLLOW_130 = new BitSet(new long[]{0x0000080000000002L});
-    public static final BitSet FOLLOW_131 = new BitSet(new long[]{0x0000000000000180L});
-    public static final BitSet FOLLOW_132 = new BitSet(new long[]{0x0000000080000010L,0x0000000006000000L});
-    public static final BitSet FOLLOW_133 = new BitSet(new long[]{0x0002200000000000L});
-    public static final BitSet FOLLOW_134 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
-    public static final BitSet FOLLOW_135 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
-    public static final BitSet FOLLOW_136 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_137 = new BitSet(new long[]{0x3800000000000002L});
-    public static final BitSet FOLLOW_138 = new BitSet(new long[]{0x9000000000000002L,0x0000000000000003L});
-    public static final BitSet FOLLOW_139 = new BitSet(new long[]{0x1000000000000002L,0x0000000000000003L});
-    public static final BitSet FOLLOW_140 = new BitSet(new long[]{0x1800000000000002L,0x0040000000000012L});
-    public static final BitSet FOLLOW_141 = new BitSet(new long[]{0x0000000000000002L,0x0000000000300000L});
+    public static final BitSet FOLLOW_125 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_126 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_127 = new BitSet(new long[]{0x0000000000000000L,0x0014000000000000L});
+    public static final BitSet FOLLOW_128 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_129 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
+    public static final BitSet FOLLOW_130 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_131 = new BitSet(new long[]{0x0000080000000000L});
+    public static final BitSet FOLLOW_132 = new BitSet(new long[]{0x0000080000000002L});
+    public static final BitSet FOLLOW_133 = new BitSet(new long[]{0x0000000000000180L});
+    public static final BitSet FOLLOW_134 = new BitSet(new long[]{0x0000000080000010L,0x0000000018000000L});
+    public static final BitSet FOLLOW_135 = new BitSet(new long[]{0x0002200000000000L});
+    public static final BitSet FOLLOW_136 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
+    public static final BitSet FOLLOW_137 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
+    public static final BitSet FOLLOW_138 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_139 = new BitSet(new long[]{0x3800000000000002L});
+    public static final BitSet FOLLOW_140 = new BitSet(new long[]{0x9000000000000002L,0x0000000000000003L});
+    public static final BitSet FOLLOW_141 = new BitSet(new long[]{0x1000000000000002L,0x0000000000000003L});
+    public static final BitSet FOLLOW_142 = new BitSet(new long[]{0x1800000000000002L,0x0100000000000012L});
+    public static final BitSet FOLLOW_143 = new BitSet(new long[]{0x0000000000000002L,0x0000000000300000L});
 
 }
diff --git a/org.eclipse.osbp.xtext.perspective.tests/LICENSE.txt b/org.eclipse.osbp.xtext.perspective.tests/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.xtext.perspective.tests/LICENSE.txt
+++ b/org.eclipse.osbp.xtext.perspective.tests/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.xtext.perspective.tests/about.html b/org.eclipse.osbp.xtext.perspective.tests/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.xtext.perspective.tests/about.html
+++ b/org.eclipse.osbp.xtext.perspective.tests/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.xtext.perspective.tests/about.properties b/org.eclipse.osbp.xtext.perspective.tests/about.properties
index b8970f7..e5e7cb6 100644
--- a/org.eclipse.osbp.xtext.perspective.tests/about.properties
+++ b/org.eclipse.osbp.xtext.perspective.tests/about.properties
@@ -1,9 +1,11 @@
 #
 # Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 #
 # Contributors:
 #    Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation
@@ -17,9 +19,11 @@
 featureText=\
 Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
 All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\n
diff --git a/org.eclipse.osbp.xtext.perspective.tests/build.properties b/org.eclipse.osbp.xtext.perspective.tests/build.properties
index b95c9a6..931c49c 100644
--- a/org.eclipse.osbp.xtext.perspective.tests/build.properties
+++ b/org.eclipse.osbp.xtext.perspective.tests/build.properties
@@ -4,7 +4,7 @@
 			   .,\
                license.html,\
                LICENSE.txt,\
-               epl-v10.html
+               epl-2.0.html
 src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
                LICENSE.txt,\
-               epl-v10.html			   
+               epl-2.0.html			   
diff --git a/org.eclipse.osbp.xtext.perspective.tests/epl-2.0.html b/org.eclipse.osbp.xtext.perspective.tests/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.tests/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.perspective.tests/epl-v10.html b/org.eclipse.osbp.xtext.perspective.tests/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.xtext.perspective.tests/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.perspective.tests/license.html b/org.eclipse.osbp.xtext.perspective.tests/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.xtext.perspective.tests/license.html
+++ b/org.eclipse.osbp.xtext.perspective.tests/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.perspective.tests/pom.xml b/org.eclipse.osbp.xtext.perspective.tests/pom.xml
index c00c75e..95eaccd 100644
--- a/org.eclipse.osbp.xtext.perspective.tests/pom.xml
+++ b/org.eclipse.osbp.xtext.perspective.tests/pom.xml
@@ -2,9 +2,11 @@
 <!--#======================================================================= -->
 <!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
 <!--# All rights reserved. This program and the accompanying materials -->
-<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
diff --git a/org.eclipse.osbp.xtext.perspective.tests/src-gen/org/eclipse/osbp/xtext/perspective/tests/PerspectiveDslInjectorProvider.java b/org.eclipse.osbp.xtext.perspective.tests/src-gen/org/eclipse/osbp/xtext/perspective/tests/PerspectiveDslInjectorProvider.java
index 812e43c..e46085e 100644
--- a/org.eclipse.osbp.xtext.perspective.tests/src-gen/org/eclipse/osbp/xtext/perspective/tests/PerspectiveDslInjectorProvider.java
+++ b/org.eclipse.osbp.xtext.perspective.tests/src-gen/org/eclipse/osbp/xtext/perspective/tests/PerspectiveDslInjectorProvider.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/LICENSE.txt b/org.eclipse.osbp.xtext.perspective.ui/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/LICENSE.txt
+++ b/org.eclipse.osbp.xtext.perspective.ui/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.xtext.perspective.ui/about.html b/org.eclipse.osbp.xtext.perspective.ui/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/about.html
+++ b/org.eclipse.osbp.xtext.perspective.ui/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.xtext.perspective.ui/about.properties b/org.eclipse.osbp.xtext.perspective.ui/about.properties
index 188430e..029a9c0 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/about.properties
+++ b/org.eclipse.osbp.xtext.perspective.ui/about.properties
@@ -1,9 +1,11 @@
 #
 # Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 #
 # Contributors:
 #    Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation
@@ -17,9 +19,11 @@
 featureText=\
 Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
 All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\n
diff --git a/org.eclipse.osbp.xtext.perspective.ui/build.properties b/org.eclipse.osbp.xtext.perspective.ui/build.properties
index c7fe03b..a682e6b 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/build.properties
+++ b/org.eclipse.osbp.xtext.perspective.ui/build.properties
@@ -13,7 +13,7 @@
                templates/,\
                license.html,\
                LICENSE.txt,\
-               epl-v10.html,\
+               epl-2.0.html,\
                icons/,\
                src/,\
                src-gen/,\
@@ -22,5 +22,5 @@
                i18n/,\
                license.html,\
                LICENSE.txt,\
-               epl-v10.html,\
+               epl-2.0.html,\
                icons/
diff --git a/org.eclipse.osbp.xtext.perspective.ui/epl-2.0.html b/org.eclipse.osbp.xtext.perspective.ui/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ui/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.perspective.ui/epl-v10.html b/org.eclipse.osbp.xtext.perspective.ui/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.xtext.perspective.ui/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.perspective.ui/license.html b/org.eclipse.osbp.xtext.perspective.ui/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/license.html
+++ b/org.eclipse.osbp.xtext.perspective.ui/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.perspective.ui/pom.xml b/org.eclipse.osbp.xtext.perspective.ui/pom.xml
index 364a22c..1df70da 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/pom.xml
+++ b/org.eclipse.osbp.xtext.perspective.ui/pom.xml
@@ -2,9 +2,11 @@
 <!--#======================================================================= -->
 <!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
 <!--# All rights reserved. This program and the accompanying materials -->
-<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/AbstractPerspectiveDslUiModule.java b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/AbstractPerspectiveDslUiModule.java
index d411346..2ae723c 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/AbstractPerspectiveDslUiModule.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/AbstractPerspectiveDslUiModule.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslExecutableExtensionFactory.java b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslExecutableExtensionFactory.java
index 1a9bd4b..271eaea 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslExecutableExtensionFactory.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslExecutableExtensionFactory.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
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 51f6198..2a78594 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
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -130,9 +132,6 @@
 	public void completePerspectiveGrid_Ref(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
 	}
-	public void completePerspectiveBean_Ref(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
-	}
 	public void completePerspectiveChart_Ref(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
 	}
@@ -169,6 +168,12 @@
 	public void completePerspectiveDataInterchange_Ref(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
 	}
+	public void completePerspectiveTitle_HtmlName(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePerspectiveDashboard_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
 
 	public void complete_PerspectiveModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
@@ -203,9 +208,6 @@
 	public void complete_PerspectiveGrid(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_PerspectiveBean(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
 	public void complete_PerspectiveChart(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
@@ -221,6 +223,9 @@
 	public void complete_PerspectiveDialog(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_PerspectiveBPMN(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void complete_PerspectiveKanban(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
@@ -233,6 +238,12 @@
 	public void complete_PerspectiveDataInterchange(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_PerspectiveTitle(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PerspectiveDashboard(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void complete_TRANSLATABLEID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/internal/PerspectiveActivator.java b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/internal/PerspectiveActivator.java
index 8c7fed0..641185c 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/internal/PerspectiveActivator.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/internal/PerspectiveActivator.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDSLDocumentationTranslator.java b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDSLDocumentationTranslator.java
index 2b85ff3..f2ee1b3 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDSLDocumentationTranslator.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDSLDocumentationTranslator.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslEObjectHover.java b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslEObjectHover.java
index 16ab705..2671c03 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslEObjectHover.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslEObjectHover.java
@@ -3,9 +3,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *                                                                            
  * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
+ * are made available under the terms of the Eclipse Public License 2.0        
  * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
+ * https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ * SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  * Contributors:   
  * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslEObjectHoverDocumentationProvider.java b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslEObjectHoverDocumentationProvider.java
index c429afc..c50443e 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslEObjectHoverDocumentationProvider.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslEObjectHoverDocumentationProvider.java
@@ -3,9 +3,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *                                                                            
  * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
+ * are made available under the terms of the Eclipse Public License 2.0        
  * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
+ * https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ * SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  * Contributors:   
  * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslEObjectHoverProvider.java b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslEObjectHoverProvider.java
index f6e24f2..d403774 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslEObjectHoverProvider.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslEObjectHoverProvider.java
@@ -3,9 +3,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *                                                                            
  * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
+ * are made available under the terms of the Eclipse Public License 2.0        
  * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
+ * https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ * SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  * Contributors:   
  * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslUiModule.java b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslUiModule.java
index 4e62b01..71c5ef3 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslUiModule.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslUiModule.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalHelper.java b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalHelper.java
index d0f96a3..c8cdfe3 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalHelper.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalHelper.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.xtend b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.xtend
index ceff623..76e0d07 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.xtend
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.xtend b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.xtend
index b11077b..d779e6e 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.xtend
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/handler/ConvertE4PerspectiveToOSBPHandler.java b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/handler/ConvertE4PerspectiveToOSBPHandler.java
index 4b09465..04bfc71 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/handler/ConvertE4PerspectiveToOSBPHandler.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/handler/ConvertE4PerspectiveToOSBPHandler.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslDescriptionLabelProvider.xtend b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslDescriptionLabelProvider.xtend
index ad0b26f..4eff30e 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslDescriptionLabelProvider.xtend
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslDescriptionLabelProvider.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.xtend b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.xtend
index b0290be..e593915 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.xtend
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/outline/PerspectiveDslOutlineTreeProvider.xtend b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/outline/PerspectiveDslOutlineTreeProvider.xtend
index 86c63ff..a034091 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/outline/PerspectiveDslOutlineTreeProvider.xtend
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/outline/PerspectiveDslOutlineTreeProvider.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.xtend b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.xtend
index 866f360..2c2b294 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.xtend
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/IconNameTextApplier.java b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/IconNameTextApplier.java
index aca0a16..8febbd1 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/IconNameTextApplier.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/IconNameTextApplier.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.java b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.java
index dcc731b..94b5ee9 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
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 e7ccae9..48846bf 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
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslDescriptionLabelProvider.java b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslDescriptionLabelProvider.java
index d1e7244..8e3219e 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslDescriptionLabelProvider.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslDescriptionLabelProvider.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.java b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.java
index a38bedb..19d7368 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/outline/PerspectiveDslOutlineTreeProvider.java b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/outline/PerspectiveDslOutlineTreeProvider.java
index e54933a..234916c 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/outline/PerspectiveDslOutlineTreeProvider.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/outline/PerspectiveDslOutlineTreeProvider.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.java b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.java
index b587ae8..80fdd3c 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/LICENSE.txt b/org.eclipse.osbp.xtext.perspective/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.xtext.perspective/LICENSE.txt
+++ b/org.eclipse.osbp.xtext.perspective/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.xtext.perspective/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.perspective/META-INF/MANIFEST.MF
index 364894a..b2f1bfe 100644
--- a/org.eclipse.osbp.xtext.perspective/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.xtext.perspective/META-INF/MANIFEST.MF
@@ -70,7 +70,8 @@
  org.eclipse.osbp.bpmn2.ecore;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.datainterchange;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.oxtype;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.xtend.lib
+ org.eclipse.xtend.lib,
+ org.eclipse.jdt.core
 Import-Package: javax.validation,
  javax.validation.constraints,
  org.apache.commons.lang,
diff --git a/org.eclipse.osbp.xtext.perspective/about.html b/org.eclipse.osbp.xtext.perspective/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.xtext.perspective/about.html
+++ b/org.eclipse.osbp.xtext.perspective/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.xtext.perspective/about.properties b/org.eclipse.osbp.xtext.perspective/about.properties
index 90a4520..153ee8d 100644
--- a/org.eclipse.osbp.xtext.perspective/about.properties
+++ b/org.eclipse.osbp.xtext.perspective/about.properties
@@ -1,9 +1,11 @@
 #
 # Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 #
 # Contributors:
 #    Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation
@@ -17,9 +19,11 @@
 featureText=\
 Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
 All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\n
diff --git a/org.eclipse.osbp.xtext.perspective/build.properties b/org.eclipse.osbp.xtext.perspective/build.properties
index 9cd218d..48aa379 100644
--- a/org.eclipse.osbp.xtext.perspective/build.properties
+++ b/org.eclipse.osbp.xtext.perspective/build.properties
@@ -10,8 +10,8 @@
                plugin.properties,\
                license.html,\
                LICENSE.txt,\
-               epl-v10.html
+               epl-2.0.html
 src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
                LICENSE.txt,\
-               epl-v10.html			   
+               epl-2.0.html			   
 
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/Perspective.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/Perspective.java
index b2fb924..2d89a39 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/Perspective.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/Perspective.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBPMN.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBPMN.java
new file mode 100644
index 0000000..0aff1a4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBPMN.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License 2.0  
+ *  which accompanies this distribution, and is available at 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Perspective BPMN</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveBPMN()
+ * @model
+ * @generated
+ */
+public interface PerspectiveBPMN extends PerspectiveView {
+} // PerspectiveBPMN
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBase.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBase.java
index 6a12592..cabac19 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBase.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBase.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBean.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBean.java
deleted file mode 100644
index 5bb8443..0000000
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBean.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
- *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
- * 
- *  Based on ideas from Xtext, Xtend, Xcore
- *   
- *  Contributors{  
- *  		Joerg Riegel - Initial implementation 
- *  
- */
-package org.eclipse.osbp.xtext.perspective;
-
-import org.eclipse.osbp.xtext.table.Table;
-
-import org.eclipse.xtext.common.types.JvmTypeReference;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Perspective Bean</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRef <em>Ref</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
- * </ul>
- *
- * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveBean()
- * @model
- * @generated
- */
-public interface PerspectiveBean extends PerspectiveView {
-	/**
-	 * Returns the value of the '<em><b>Ref</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Ref</em>' reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Ref</em>' reference.
-	 * @see #setRef(Table)
-	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveBean_Ref()
-	 * @model
-	 * @generated
-	 */
-	Table getRef();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRef <em>Ref</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Ref</em>' reference.
-	 * @see #getRef()
-	 * @generated
-	 */
-	void setRef(Table value);
-
-	/**
-	 * Returns the value of the '<em><b>Ref Type Jvm</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Ref Type Jvm</em>' containment reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Ref Type Jvm</em>' containment reference.
-	 * @see #setRefTypeJvm(JvmTypeReference)
-	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveBean_RefTypeJvm()
-	 * @model containment="true" resolveProxies="true"
-	 * @generated
-	 */
-	JvmTypeReference getRefTypeJvm();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRefTypeJvm <em>Ref Type Jvm</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Ref Type Jvm</em>' containment reference.
-	 * @see #getRefTypeJvm()
-	 * @generated
-	 */
-	void setRefTypeJvm(JvmTypeReference value);
-
-} // PerspectiveBean
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveChart.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveChart.java
index 0238189..0071183 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveChart.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveChart.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDashboard.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDashboard.java
new file mode 100644
index 0000000..c7b6bff
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDashboard.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License 2.0  
+ *  which accompanies this distribution, and is available at 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Perspective Dashboard</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveDashboard#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveDashboard()
+ * @model
+ * @generated
+ */
+public interface PerspectiveDashboard extends PerspectiveView {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveDashboard_Name()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveDashboard#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+} // PerspectiveDashboard
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDataInterchange.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDataInterchange.java
index 98b4f45..634b6a5 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDataInterchange.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDataInterchange.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDialog.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDialog.java
index 5112494..15d7df3 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDialog.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDialog.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslFactory.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslFactory.java
index a104e3b..2786576 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslFactory.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslFactory.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
@@ -141,15 +143,6 @@
 	PerspectiveGrid createPerspectiveGrid();
 
 	/**
-	 * Returns a new object of class '<em>Perspective Bean</em>'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Perspective Bean</em>'.
-	 * @generated
-	 */
-	PerspectiveBean createPerspectiveBean();
-
-	/**
 	 * Returns a new object of class '<em>Perspective Chart</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -195,6 +188,15 @@
 	PerspectiveDialog createPerspectiveDialog();
 
 	/**
+	 * Returns a new object of class '<em>Perspective BPMN</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Perspective BPMN</em>'.
+	 * @generated
+	 */
+	PerspectiveBPMN createPerspectiveBPMN();
+
+	/**
 	 * Returns a new object of class '<em>Perspective Kanban</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -231,6 +233,24 @@
 	PerspectiveDataInterchange createPerspectiveDataInterchange();
 
 	/**
+	 * Returns a new object of class '<em>Perspective Title</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Perspective Title</em>'.
+	 * @generated
+	 */
+	PerspectiveTitle createPerspectiveTitle();
+
+	/**
+	 * Returns a new object of class '<em>Perspective Dashboard</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Perspective Dashboard</em>'.
+	 * @generated
+	 */
+	PerspectiveDashboard createPerspectiveDashboard();
+
+	/**
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslPackage.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslPackage.java
index 4051455..f25aaae 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
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
@@ -37,7 +39,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslFactory
  * @model kind="package"
- *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='perspective' modelName='PerspectiveDsl' prefix='PerspectiveDsl' updateClasspath='false' loadInitialization='false' literalsInterface='true' copyrightText='Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\n All rights reserved. This program and the accompanying materials \n are made available under the terms of the Eclipse Public License v1.0 \n which accompanies this distribution, and is available at \n http{//www.eclipse.org/legal/epl-v10.html \n\n Based on ideas from Xtext, Xtend, Xcore\n  \n Contributors{  \n \t\tJoerg Riegel - Initial implementation \n ' basePackage='org.eclipse.osbp.xtext'"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='perspective' modelName='PerspectiveDsl' prefix='PerspectiveDsl' updateClasspath='false' loadInitialization='false' literalsInterface='true' copyrightText='Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\r\n All rights reserved. This program and the accompanying materials \r\n are made available under the terms of the Eclipse Public License 2.0  \r\n which accompanies this distribution, and is available at \r\n https://www.eclipse.org/legal/epl-v2.0/ \r\n\r\nSPDX-License-Identifier: EPL-2.0 \r\n\r\n Based on ideas from Xtext, Xtend, Xcore\r\n  \r\n Contributors:  \r\n \t\tJoerg Riegel - Initial implementation \r\n ' basePackage='org.eclipse.osbp.xtext'"
  *        annotation="http://www.eclipse.org/emf/2002/Ecore rootPackage='perspectivedsl'"
  * @generated
  */
@@ -934,61 +936,6 @@
 	int PERSPECTIVE_GRID_OPERATION_COUNT = PERSPECTIVE_VIEW_OPERATION_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveBeanImpl <em>Perspective Bean</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveBeanImpl
-	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveBean()
-	 * @generated
-	 */
-	int PERSPECTIVE_BEAN = 13;
-
-	/**
-	 * The feature id for the '<em><b>Ref</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PERSPECTIVE_BEAN__REF = PERSPECTIVE_VIEW_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Ref Type Jvm</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PERSPECTIVE_BEAN__REF_TYPE_JVM = PERSPECTIVE_VIEW_FEATURE_COUNT + 1;
-
-	/**
-	 * The number of structural features of the '<em>Perspective Bean</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PERSPECTIVE_BEAN_FEATURE_COUNT = PERSPECTIVE_VIEW_FEATURE_COUNT + 2;
-
-	/**
-	 * The operation id for the '<em>EResolve Proxy</em>' operation.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PERSPECTIVE_BEAN___ERESOLVE_PROXY__INTERNALEOBJECT = PERSPECTIVE_VIEW___ERESOLVE_PROXY__INTERNALEOBJECT;
-
-	/**
-	 * The number of operations of the '<em>Perspective Bean</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PERSPECTIVE_BEAN_OPERATION_COUNT = PERSPECTIVE_VIEW_OPERATION_COUNT + 0;
-
-	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveChartImpl <em>Perspective Chart</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -996,7 +943,7 @@
 	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveChart()
 	 * @generated
 	 */
-	int PERSPECTIVE_CHART = 14;
+	int PERSPECTIVE_CHART = 13;
 
 	/**
 	 * The feature id for the '<em><b>Ref</b></em>' reference.
@@ -1051,7 +998,7 @@
 	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveReport()
 	 * @generated
 	 */
-	int PERSPECTIVE_REPORT = 15;
+	int PERSPECTIVE_REPORT = 14;
 
 	/**
 	 * The feature id for the '<em><b>Ref</b></em>' reference.
@@ -1106,7 +1053,7 @@
 	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveOrganization()
 	 * @generated
 	 */
-	int PERSPECTIVE_ORGANIZATION = 16;
+	int PERSPECTIVE_ORGANIZATION = 15;
 
 	/**
 	 * The feature id for the '<em><b>Ref</b></em>' reference.
@@ -1152,7 +1099,7 @@
 	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveTopology()
 	 * @generated
 	 */
-	int PERSPECTIVE_TOPOLOGY = 17;
+	int PERSPECTIVE_TOPOLOGY = 16;
 
 	/**
 	 * The feature id for the '<em><b>Ref</b></em>' reference.
@@ -1207,7 +1154,7 @@
 	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveDialog()
 	 * @generated
 	 */
-	int PERSPECTIVE_DIALOG = 18;
+	int PERSPECTIVE_DIALOG = 17;
 
 	/**
 	 * The feature id for the '<em><b>Ref</b></em>' reference.
@@ -1255,6 +1202,43 @@
 	int PERSPECTIVE_DIALOG_OPERATION_COUNT = PERSPECTIVE_VIEW_OPERATION_COUNT + 0;
 
 	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveBPMNImpl <em>Perspective BPMN</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveBPMNImpl
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveBPMN()
+	 * @generated
+	 */
+	int PERSPECTIVE_BPMN = 18;
+
+	/**
+	 * The number of structural features of the '<em>Perspective BPMN</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_BPMN_FEATURE_COUNT = PERSPECTIVE_VIEW_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_BPMN___ERESOLVE_PROXY__INTERNALEOBJECT = PERSPECTIVE_VIEW___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Perspective BPMN</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_BPMN_OPERATION_COUNT = PERSPECTIVE_VIEW_OPERATION_COUNT + 0;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveKanbanImpl <em>Perspective Kanban</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1475,6 +1459,98 @@
 	int PERSPECTIVE_DATA_INTERCHANGE_OPERATION_COUNT = PERSPECTIVE_VIEW_OPERATION_COUNT + 0;
 
 	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveTitleImpl <em>Perspective Title</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveTitleImpl
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveTitle()
+	 * @generated
+	 */
+	int PERSPECTIVE_TITLE = 23;
+
+	/**
+	 * The feature id for the '<em><b>Html Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_TITLE__HTML_NAME = PERSPECTIVE_VIEW_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Perspective Title</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_TITLE_FEATURE_COUNT = PERSPECTIVE_VIEW_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_TITLE___ERESOLVE_PROXY__INTERNALEOBJECT = PERSPECTIVE_VIEW___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Perspective Title</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_TITLE_OPERATION_COUNT = PERSPECTIVE_VIEW_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveDashboardImpl <em>Perspective Dashboard</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDashboardImpl
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveDashboard()
+	 * @generated
+	 */
+	int PERSPECTIVE_DASHBOARD = 24;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_DASHBOARD__NAME = PERSPECTIVE_VIEW_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Perspective Dashboard</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_DASHBOARD_FEATURE_COUNT = PERSPECTIVE_VIEW_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_DASHBOARD___ERESOLVE_PROXY__INTERNALEOBJECT = PERSPECTIVE_VIEW___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Perspective Dashboard</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_DASHBOARD_OPERATION_COUNT = PERSPECTIVE_VIEW_OPERATION_COUNT + 0;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.perspective.SashOrientation <em>Sash Orientation</em>}' enum.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1482,7 +1558,7 @@
 	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getSashOrientation()
 	 * @generated
 	 */
-	int SASH_ORIENTATION = 23;
+	int SASH_ORIENTATION = 25;
 
 	/**
 	 * The meta object id for the '<em>Internal EObject</em>' data type.
@@ -1492,7 +1568,7 @@
 	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getInternalEObject()
 	 * @generated
 	 */
-	int INTERNAL_EOBJECT = 24;
+	int INTERNAL_EOBJECT = 26;
 
 
 	/**
@@ -1955,38 +2031,6 @@
 	EReference getPerspectiveGrid_RefTypeJvm();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean <em>Perspective Bean</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Perspective Bean</em>'.
-	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveBean
-	 * @generated
-	 */
-	EClass getPerspectiveBean();
-
-	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRef <em>Ref</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Ref</em>'.
-	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRef()
-	 * @see #getPerspectiveBean()
-	 * @generated
-	 */
-	EReference getPerspectiveBean_Ref();
-
-	/**
-	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRefTypeJvm <em>Ref Type Jvm</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference '<em>Ref Type Jvm</em>'.
-	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRefTypeJvm()
-	 * @see #getPerspectiveBean()
-	 * @generated
-	 */
-	EReference getPerspectiveBean_RefTypeJvm();
-
-	/**
 	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveChart <em>Perspective Chart</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2136,6 +2180,16 @@
 	EReference getPerspectiveDialog_RefTypeJvm();
 
 	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveBPMN <em>Perspective BPMN</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Perspective BPMN</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveBPMN
+	 * @generated
+	 */
+	EClass getPerspectiveBPMN();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveKanban <em>Perspective Kanban</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2264,6 +2318,48 @@
 	EReference getPerspectiveDataInterchange_RefTypeJvm();
 
 	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveTitle <em>Perspective Title</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Perspective Title</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveTitle
+	 * @generated
+	 */
+	EClass getPerspectiveTitle();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.perspective.PerspectiveTitle#getHtmlName <em>Html Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Html Name</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveTitle#getHtmlName()
+	 * @see #getPerspectiveTitle()
+	 * @generated
+	 */
+	EAttribute getPerspectiveTitle_HtmlName();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveDashboard <em>Perspective Dashboard</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Perspective Dashboard</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDashboard
+	 * @generated
+	 */
+	EClass getPerspectiveDashboard();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.perspective.PerspectiveDashboard#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDashboard#getName()
+	 * @see #getPerspectiveDashboard()
+	 * @generated
+	 */
+	EAttribute getPerspectiveDashboard_Name();
+
+	/**
 	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.perspective.SashOrientation <em>Sash Orientation</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2678,32 +2774,6 @@
 		EReference PERSPECTIVE_GRID__REF_TYPE_JVM = eINSTANCE.getPerspectiveGrid_RefTypeJvm();
 
 		/**
-		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveBeanImpl <em>Perspective Bean</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveBeanImpl
-		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveBean()
-		 * @generated
-		 */
-		EClass PERSPECTIVE_BEAN = eINSTANCE.getPerspectiveBean();
-
-		/**
-		 * The meta object literal for the '<em><b>Ref</b></em>' reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference PERSPECTIVE_BEAN__REF = eINSTANCE.getPerspectiveBean_Ref();
-
-		/**
-		 * The meta object literal for the '<em><b>Ref Type Jvm</b></em>' containment reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference PERSPECTIVE_BEAN__REF_TYPE_JVM = eINSTANCE.getPerspectiveBean_RefTypeJvm();
-
-		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveChartImpl <em>Perspective Chart</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2826,6 +2896,16 @@
 		EReference PERSPECTIVE_DIALOG__REF_TYPE_JVM = eINSTANCE.getPerspectiveDialog_RefTypeJvm();
 
 		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveBPMNImpl <em>Perspective BPMN</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveBPMNImpl
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveBPMN()
+		 * @generated
+		 */
+		EClass PERSPECTIVE_BPMN = eINSTANCE.getPerspectiveBPMN();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveKanbanImpl <em>Perspective Kanban</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2930,6 +3010,42 @@
 		EReference PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM = eINSTANCE.getPerspectiveDataInterchange_RefTypeJvm();
 
 		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveTitleImpl <em>Perspective Title</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveTitleImpl
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveTitle()
+		 * @generated
+		 */
+		EClass PERSPECTIVE_TITLE = eINSTANCE.getPerspectiveTitle();
+
+		/**
+		 * The meta object literal for the '<em><b>Html Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PERSPECTIVE_TITLE__HTML_NAME = eINSTANCE.getPerspectiveTitle_HtmlName();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveDashboardImpl <em>Perspective Dashboard</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDashboardImpl
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveDashboard()
+		 * @generated
+		 */
+		EClass PERSPECTIVE_DASHBOARD = eINSTANCE.getPerspectiveDashboard();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PERSPECTIVE_DASHBOARD__NAME = eINSTANCE.getPerspectiveDashboard_Name();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.perspective.SashOrientation <em>Sash Orientation</em>}' enum.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveElement.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveElement.java
index e589de8..4666f37 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveElement.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveElement.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveGrid.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveGrid.java
index e81f102..9433d04 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveGrid.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveGrid.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveKanban.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveKanban.java
index f46e893..a229cc8 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveKanban.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveKanban.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveLazyResolver.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveLazyResolver.java
index b015f1c..72f929a 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveLazyResolver.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveLazyResolver.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveModel.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveModel.java
index 79549f2..8db9e50 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveModel.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveModel.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveOrganization.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveOrganization.java
index aea46e1..622e6a8 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveOrganization.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveOrganization.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePackage.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePackage.java
index 4985578..1f2f258 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePackage.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePackage.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePart.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePart.java
index 7ae959e..329912b 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePart.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePart.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
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 52fb005..aa87cc3 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
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveReport.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveReport.java
index 503678c..f36401c 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveReport.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveReport.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSashContainer.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSashContainer.java
index 0a5825b..2d0b8c7 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSashContainer.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSashContainer.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSearch.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSearch.java
index 46e4b57..ceea502 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSearch.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSearch.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSelection.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSelection.java
index fde4950..809a4e6 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSelection.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSelection.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTable.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTable.java
index 612d997..4628a87 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTable.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTable.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTitle.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTitle.java
new file mode 100644
index 0000000..6cebb93
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTitle.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License 2.0  
+ *  which accompanies this distribution, and is available at 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Perspective Title</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveTitle#getHtmlName <em>Html Name</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveTitle()
+ * @model
+ * @generated
+ */
+public interface PerspectiveTitle extends PerspectiveView {
+	/**
+	 * Returns the value of the '<em><b>Html Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Html Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Html Name</em>' attribute.
+	 * @see #setHtmlName(String)
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveTitle_HtmlName()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getHtmlName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveTitle#getHtmlName <em>Html Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Html Name</em>' attribute.
+	 * @see #getHtmlName()
+	 * @generated
+	 */
+	void setHtmlName(String value);
+
+} // PerspectiveTitle
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTopology.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTopology.java
index 0b35123..6b08727 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTopology.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTopology.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveView.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveView.java
index 4479aa2..859e4a2 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveView.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveView.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveWelcome.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveWelcome.java
index 77d3ba9..92e490e 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveWelcome.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveWelcome.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/SashOrientation.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/SashOrientation.java
index a13d308..b85e6b7 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/SashOrientation.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/SashOrientation.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBPMNImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBPMNImpl.java
new file mode 100644
index 0000000..f1cbbde
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBPMNImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License 2.0  
+ *  which accompanies this distribution, and is available at 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.perspective.PerspectiveBPMN;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Perspective BPMN</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PerspectiveBPMNImpl extends PerspectiveLazyResolverImpl implements PerspectiveBPMN {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PerspectiveBPMNImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PerspectiveDslPackage.Literals.PERSPECTIVE_BPMN;
+	}
+
+} //PerspectiveBPMNImpl
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBaseImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBaseImpl.java
index 69da3fb..2a4ffba 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBaseImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBaseImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBeanImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBeanImpl.java
deleted file mode 100644
index c8d9813..0000000
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBeanImpl.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/**
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
- *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
- * 
- *  Based on ideas from Xtext, Xtend, Xcore
- *   
- *  Contributors{  
- *  		Joerg Riegel - Initial implementation 
- *  
- */
-package org.eclipse.osbp.xtext.perspective.impl;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.NotificationChain;
-
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.InternalEObject;
-
-import org.eclipse.emf.ecore.impl.ENotificationImpl;
-
-import org.eclipse.osbp.xtext.perspective.PerspectiveBean;
-import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
-
-import org.eclipse.osbp.xtext.table.Table;
-
-import org.eclipse.xtext.common.types.JvmTypeReference;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Perspective Bean</b></em>'.
- * <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * </p>
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveBeanImpl#getRef <em>Ref</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveBeanImpl#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
- * </ul>
- *
- * @generated
- */
-public class PerspectiveBeanImpl extends PerspectiveLazyResolverImpl implements PerspectiveBean {
-	/**
-	 * The cached value of the '{@link #getRef() <em>Ref</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getRef()
-	 * @generated
-	 * @ordered
-	 */
-	protected Table ref;
-
-	/**
-	 * The cached value of the '{@link #getRefTypeJvm() <em>Ref Type Jvm</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getRefTypeJvm()
-	 * @generated
-	 * @ordered
-	 */
-	protected JvmTypeReference refTypeJvm;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected PerspectiveBeanImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return PerspectiveDslPackage.Literals.PERSPECTIVE_BEAN;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public Table getRef() {
-		if (ref != null && ref.eIsProxy()) {
-			InternalEObject oldRef = (InternalEObject)ref;
-			ref = (Table)eResolveProxy(oldRef);
-			if (ref != oldRef) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, PerspectiveDslPackage.PERSPECTIVE_BEAN__REF, oldRef, ref));
-			}
-		}
-		return ref;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public Table basicGetRef() {
-		return ref;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setRef(Table newRef) {
-		Table oldRef = ref;
-		ref = newRef;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_BEAN__REF, oldRef, ref));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public JvmTypeReference getRefTypeJvm() {
-		if (refTypeJvm != null && refTypeJvm.eIsProxy()) {
-			InternalEObject oldRefTypeJvm = (InternalEObject)refTypeJvm;
-			refTypeJvm = (JvmTypeReference)eResolveProxy(oldRefTypeJvm);
-			if (refTypeJvm != oldRefTypeJvm) {
-				InternalEObject newRefTypeJvm = (InternalEObject)refTypeJvm;
-				NotificationChain msgs = oldRefTypeJvm.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM, null, null);
-				if (newRefTypeJvm.eInternalContainer() == null) {
-					msgs = newRefTypeJvm.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM, null, msgs);
-				}
-				if (msgs != null) msgs.dispatch();
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM, oldRefTypeJvm, refTypeJvm));
-			}
-		}
-		return refTypeJvm;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public JvmTypeReference basicGetRefTypeJvm() {
-		return refTypeJvm;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NotificationChain basicSetRefTypeJvm(JvmTypeReference newRefTypeJvm, NotificationChain msgs) {
-		JvmTypeReference oldRefTypeJvm = refTypeJvm;
-		refTypeJvm = newRefTypeJvm;
-		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM, oldRefTypeJvm, newRefTypeJvm);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
-		}
-		return msgs;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setRefTypeJvm(JvmTypeReference newRefTypeJvm) {
-		if (newRefTypeJvm != refTypeJvm) {
-			NotificationChain msgs = null;
-			if (refTypeJvm != null)
-				msgs = ((InternalEObject)refTypeJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM, null, msgs);
-			if (newRefTypeJvm != null)
-				msgs = ((InternalEObject)newRefTypeJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM, null, msgs);
-			msgs = basicSetRefTypeJvm(newRefTypeJvm, msgs);
-			if (msgs != null) msgs.dispatch();
-		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM, newRefTypeJvm, newRefTypeJvm));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
-		switch (featureID) {
-			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM:
-				return basicSetRefTypeJvm(null, msgs);
-		}
-		return super.eInverseRemove(otherEnd, featureID, msgs);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType) {
-		switch (featureID) {
-			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF:
-				if (resolve) return getRef();
-				return basicGetRef();
-			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM:
-				if (resolve) return getRefTypeJvm();
-				return basicGetRefTypeJvm();
-		}
-		return super.eGet(featureID, resolve, coreType);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eSet(int featureID, Object newValue) {
-		switch (featureID) {
-			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF:
-				setRef((Table)newValue);
-				return;
-			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM:
-				setRefTypeJvm((JvmTypeReference)newValue);
-				return;
-		}
-		super.eSet(featureID, newValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF:
-				setRef((Table)null);
-				return;
-			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM:
-				setRefTypeJvm((JvmTypeReference)null);
-				return;
-		}
-		super.eUnset(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF:
-				return ref != null;
-			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM:
-				return refTypeJvm != null;
-		}
-		return super.eIsSet(featureID);
-	}
-
-} //PerspectiveBeanImpl
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveChartImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveChartImpl.java
index 633a60d..619df30 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveChartImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveChartImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDashboardImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDashboardImpl.java
new file mode 100644
index 0000000..64648d2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDashboardImpl.java
@@ -0,0 +1,175 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License 2.0  
+ *  which accompanies this distribution, and is available at 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.perspective.PerspectiveDashboard;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Perspective Dashboard</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveDashboardImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PerspectiveDashboardImpl extends PerspectiveLazyResolverImpl implements PerspectiveDashboard {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PerspectiveDashboardImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PerspectiveDslPackage.Literals.PERSPECTIVE_DASHBOARD;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_DASHBOARD__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_DASHBOARD__NAME:
+				return getName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_DASHBOARD__NAME:
+				setName((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_DASHBOARD__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_DASHBOARD__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PerspectiveDashboardImpl
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDataInterchangeImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDataInterchangeImpl.java
index 7e506f5..1a66aad 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDataInterchangeImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDataInterchangeImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDialogImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDialogImpl.java
index 320e52c..261ca51 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDialogImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDialogImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslFactoryImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslFactoryImpl.java
index 9bfd2c8..9dbd748 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslFactoryImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslFactoryImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
@@ -81,16 +83,18 @@
 			case PerspectiveDslPackage.PERSPECTIVE_SELECTION: return createPerspectiveSelection();
 			case PerspectiveDslPackage.PERSPECTIVE_TABLE: return createPerspectiveTable();
 			case PerspectiveDslPackage.PERSPECTIVE_GRID: return createPerspectiveGrid();
-			case PerspectiveDslPackage.PERSPECTIVE_BEAN: return createPerspectiveBean();
 			case PerspectiveDslPackage.PERSPECTIVE_CHART: return createPerspectiveChart();
 			case PerspectiveDslPackage.PERSPECTIVE_REPORT: return createPerspectiveReport();
 			case PerspectiveDslPackage.PERSPECTIVE_ORGANIZATION: return createPerspectiveOrganization();
 			case PerspectiveDslPackage.PERSPECTIVE_TOPOLOGY: return createPerspectiveTopology();
 			case PerspectiveDslPackage.PERSPECTIVE_DIALOG: return createPerspectiveDialog();
+			case PerspectiveDslPackage.PERSPECTIVE_BPMN: return createPerspectiveBPMN();
 			case PerspectiveDslPackage.PERSPECTIVE_KANBAN: return createPerspectiveKanban();
 			case PerspectiveDslPackage.PERSPECTIVE_WELCOME: return createPerspectiveWelcome();
 			case PerspectiveDslPackage.PERSPECTIVE_SEARCH: return createPerspectiveSearch();
 			case PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE: return createPerspectiveDataInterchange();
+			case PerspectiveDslPackage.PERSPECTIVE_TITLE: return createPerspectiveTitle();
+			case PerspectiveDslPackage.PERSPECTIVE_DASHBOARD: return createPerspectiveDashboard();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -255,16 +259,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public PerspectiveBean createPerspectiveBean() {
-		PerspectiveBeanImpl perspectiveBean = new PerspectiveBeanImpl();
-		return perspectiveBean;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	public PerspectiveChart createPerspectiveChart() {
 		PerspectiveChartImpl perspectiveChart = new PerspectiveChartImpl();
 		return perspectiveChart;
@@ -315,6 +309,16 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public PerspectiveBPMN createPerspectiveBPMN() {
+		PerspectiveBPMNImpl perspectiveBPMN = new PerspectiveBPMNImpl();
+		return perspectiveBPMN;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public PerspectiveKanban createPerspectiveKanban() {
 		PerspectiveKanbanImpl perspectiveKanban = new PerspectiveKanbanImpl();
 		return perspectiveKanban;
@@ -355,6 +359,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public PerspectiveTitle createPerspectiveTitle() {
+		PerspectiveTitleImpl perspectiveTitle = new PerspectiveTitleImpl();
+		return perspectiveTitle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PerspectiveDashboard createPerspectiveDashboard() {
+		PerspectiveDashboardImpl perspectiveDashboard = new PerspectiveDashboardImpl();
+		return perspectiveDashboard;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public SashOrientation createSashOrientationFromString(EDataType eDataType, String initialValue) {
 		SashOrientation result = SashOrientation.get(initialValue);
 		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslPackageImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslPackageImpl.java
index 0c1a439..ecead62 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
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
@@ -42,9 +44,10 @@
 import org.eclipse.osbp.xtext.organizationdsl.OrganizationDSLPackage;
 
 import org.eclipse.osbp.xtext.perspective.Perspective;
+import org.eclipse.osbp.xtext.perspective.PerspectiveBPMN;
 import org.eclipse.osbp.xtext.perspective.PerspectiveBase;
-import org.eclipse.osbp.xtext.perspective.PerspectiveBean;
 import org.eclipse.osbp.xtext.perspective.PerspectiveChart;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDashboard;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDialog;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDslFactory;
@@ -63,6 +66,7 @@
 import org.eclipse.osbp.xtext.perspective.PerspectiveSearch;
 import org.eclipse.osbp.xtext.perspective.PerspectiveSelection;
 import org.eclipse.osbp.xtext.perspective.PerspectiveTable;
+import org.eclipse.osbp.xtext.perspective.PerspectiveTitle;
 import org.eclipse.osbp.xtext.perspective.PerspectiveTopology;
 import org.eclipse.osbp.xtext.perspective.PerspectiveView;
 import org.eclipse.osbp.xtext.perspective.PerspectiveWelcome;
@@ -181,13 +185,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass perspectiveBeanEClass = null;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	private EClass perspectiveChartEClass = null;
 
 	/**
@@ -223,6 +220,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EClass perspectiveBPMNEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EClass perspectiveKanbanEClass = null;
 
 	/**
@@ -251,6 +255,20 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EClass perspectiveTitleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass perspectiveDashboardEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EEnum sashOrientationEEnum = null;
 
 	/**
@@ -721,33 +739,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getPerspectiveBean() {
-		return perspectiveBeanEClass;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EReference getPerspectiveBean_Ref() {
-		return (EReference)perspectiveBeanEClass.getEStructuralFeatures().get(0);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EReference getPerspectiveBean_RefTypeJvm() {
-		return (EReference)perspectiveBeanEClass.getEStructuralFeatures().get(1);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	public EClass getPerspectiveChart() {
 		return perspectiveChartEClass;
 	}
@@ -874,6 +865,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EClass getPerspectiveBPMN() {
+		return perspectiveBPMNEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getPerspectiveKanban() {
 		return perspectiveKanbanEClass;
 	}
@@ -982,6 +982,42 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EClass getPerspectiveTitle() {
+		return perspectiveTitleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPerspectiveTitle_HtmlName() {
+		return (EAttribute)perspectiveTitleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPerspectiveDashboard() {
+		return perspectiveDashboardEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPerspectiveDashboard_Name() {
+		return (EAttribute)perspectiveDashboardEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EEnum getSashOrientation() {
 		return sashOrientationEEnum;
 	}
@@ -1079,10 +1115,6 @@
 		createEReference(perspectiveGridEClass, PERSPECTIVE_GRID__REF);
 		createEReference(perspectiveGridEClass, PERSPECTIVE_GRID__REF_TYPE_JVM);
 
-		perspectiveBeanEClass = createEClass(PERSPECTIVE_BEAN);
-		createEReference(perspectiveBeanEClass, PERSPECTIVE_BEAN__REF);
-		createEReference(perspectiveBeanEClass, PERSPECTIVE_BEAN__REF_TYPE_JVM);
-
 		perspectiveChartEClass = createEClass(PERSPECTIVE_CHART);
 		createEReference(perspectiveChartEClass, PERSPECTIVE_CHART__REF);
 		createEReference(perspectiveChartEClass, PERSPECTIVE_CHART__REF_TYPE_JVM);
@@ -1102,6 +1134,8 @@
 		createEReference(perspectiveDialogEClass, PERSPECTIVE_DIALOG__REF);
 		createEReference(perspectiveDialogEClass, PERSPECTIVE_DIALOG__REF_TYPE_JVM);
 
+		perspectiveBPMNEClass = createEClass(PERSPECTIVE_BPMN);
+
 		perspectiveKanbanEClass = createEClass(PERSPECTIVE_KANBAN);
 		createEReference(perspectiveKanbanEClass, PERSPECTIVE_KANBAN__DTO_REF);
 		createEReference(perspectiveKanbanEClass, PERSPECTIVE_KANBAN__CARD_REF);
@@ -1118,6 +1152,12 @@
 		createEReference(perspectiveDataInterchangeEClass, PERSPECTIVE_DATA_INTERCHANGE__REF);
 		createEReference(perspectiveDataInterchangeEClass, PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM);
 
+		perspectiveTitleEClass = createEClass(PERSPECTIVE_TITLE);
+		createEAttribute(perspectiveTitleEClass, PERSPECTIVE_TITLE__HTML_NAME);
+
+		perspectiveDashboardEClass = createEClass(PERSPECTIVE_DASHBOARD);
+		createEAttribute(perspectiveDashboardEClass, PERSPECTIVE_DASHBOARD__NAME);
+
 		// Create enums
 		sashOrientationEEnum = createEEnum(SASH_ORIENTATION);
 
@@ -1180,16 +1220,18 @@
 		perspectiveSelectionEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveTableEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveGridEClass.getESuperTypes().add(this.getPerspectiveView());
-		perspectiveBeanEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveChartEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveReportEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveOrganizationEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveTopologyEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveDialogEClass.getESuperTypes().add(this.getPerspectiveView());
+		perspectiveBPMNEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveKanbanEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveWelcomeEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveSearchEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveDataInterchangeEClass.getESuperTypes().add(this.getPerspectiveView());
+		perspectiveTitleEClass.getESuperTypes().add(this.getPerspectiveView());
+		perspectiveDashboardEClass.getESuperTypes().add(this.getPerspectiveView());
 
 		// Initialize classes, features, and operations; add parameters
 		initEClass(perspectiveModelEClass, PerspectiveModel.class, "PerspectiveModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -1250,10 +1292,6 @@
 		initEReference(getPerspectiveGrid_Ref(), theTableDSLPackage.getTable(), null, "ref", null, 0, 1, PerspectiveGrid.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getPerspectiveGrid_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveGrid.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(perspectiveBeanEClass, PerspectiveBean.class, "PerspectiveBean", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getPerspectiveBean_Ref(), theTableDSLPackage.getTable(), null, "ref", null, 0, 1, PerspectiveBean.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getPerspectiveBean_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveBean.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-
 		initEClass(perspectiveChartEClass, PerspectiveChart.class, "PerspectiveChart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getPerspectiveChart_Ref(), theChartDSLPackage.getChart(), null, "ref", null, 0, 1, PerspectiveChart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getPerspectiveChart_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveChart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -1273,6 +1311,8 @@
 		initEReference(getPerspectiveDialog_Ref(), theDialogDSLPackage.getDialog(), null, "ref", null, 0, 1, PerspectiveDialog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getPerspectiveDialog_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveDialog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+		initEClass(perspectiveBPMNEClass, PerspectiveBPMN.class, "PerspectiveBPMN", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
 		initEClass(perspectiveKanbanEClass, PerspectiveKanban.class, "PerspectiveKanban", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getPerspectiveKanban_DtoRef(), theOSBPDtoPackage.getLDto(), null, "dtoRef", null, 0, 1, PerspectiveKanban.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getPerspectiveKanban_CardRef(), theDialogDSLPackage.getDialog(), null, "cardRef", null, 0, 1, PerspectiveKanban.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -1289,6 +1329,12 @@
 		initEReference(getPerspectiveDataInterchange_Ref(), theDataDSLPackage.getDataInterchangePackage(), null, "ref", null, 0, 1, PerspectiveDataInterchange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getPerspectiveDataInterchange_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveDataInterchange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+		initEClass(perspectiveTitleEClass, PerspectiveTitle.class, "PerspectiveTitle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPerspectiveTitle_HtmlName(), theEcorePackage.getEString(), "htmlName", null, 0, 1, PerspectiveTitle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(perspectiveDashboardEClass, PerspectiveDashboard.class, "PerspectiveDashboard", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPerspectiveDashboard_Name(), theEcorePackage.getEString(), "name", null, 0, 1, PerspectiveDashboard.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
 		// Initialize enums and add enum literals
 		initEEnum(sashOrientationEEnum, SashOrientation.class, "SashOrientation");
 		addEEnumLiteral(sashOrientationEEnum, SashOrientation.HORIZONTAL);
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveElementImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveElementImpl.java
index 0d795b7..ea8e184 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveElementImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveElementImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveGridImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveGridImpl.java
index 0460e9d..73fff34 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveGridImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveGridImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveImpl.java
index 532c0ec..0bd02c0 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveKanbanImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveKanbanImpl.java
index d5f6021..0ccabfa 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveKanbanImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveKanbanImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveLazyResolverImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveLazyResolverImpl.java
index a0c5782..90ac89c 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveLazyResolverImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveLazyResolverImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveModelImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveModelImpl.java
index d009684..fe903d1 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveModelImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveModelImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveOrganizationImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveOrganizationImpl.java
index c0bd443..687f7c6 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveOrganizationImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveOrganizationImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePackageImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePackageImpl.java
index 031c2a6..64070be 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePackageImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePackageImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartImpl.java
index 28a3c4c..f038fbe 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
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 9e57d10..31921f6 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
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveReportImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveReportImpl.java
index d32e76f..00d5f4f 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveReportImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveReportImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSashContainerImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSashContainerImpl.java
index 3b1eac4..0772fa5 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSashContainerImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSashContainerImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSearchImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSearchImpl.java
index 980e88d..0f31151 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSearchImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSearchImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSelectionImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSelectionImpl.java
index d4be362..a41ebc6 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSelectionImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSelectionImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTableImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTableImpl.java
index 9781b0d..b1da528 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTableImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTableImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTitleImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTitleImpl.java
new file mode 100644
index 0000000..dae7be5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTitleImpl.java
@@ -0,0 +1,175 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License 2.0  
+ *  which accompanies this distribution, and is available at 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
+import org.eclipse.osbp.xtext.perspective.PerspectiveTitle;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Perspective Title</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveTitleImpl#getHtmlName <em>Html Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PerspectiveTitleImpl extends PerspectiveLazyResolverImpl implements PerspectiveTitle {
+	/**
+	 * The default value of the '{@link #getHtmlName() <em>Html Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHtmlName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String HTML_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getHtmlName() <em>Html Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHtmlName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String htmlName = HTML_NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PerspectiveTitleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PerspectiveDslPackage.Literals.PERSPECTIVE_TITLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getHtmlName() {
+		return htmlName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHtmlName(String newHtmlName) {
+		String oldHtmlName = htmlName;
+		htmlName = newHtmlName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_TITLE__HTML_NAME, oldHtmlName, htmlName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_TITLE__HTML_NAME:
+				return getHtmlName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_TITLE__HTML_NAME:
+				setHtmlName((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_TITLE__HTML_NAME:
+				setHtmlName(HTML_NAME_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_TITLE__HTML_NAME:
+				return HTML_NAME_EDEFAULT == null ? htmlName != null : !HTML_NAME_EDEFAULT.equals(htmlName);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (htmlName: ");
+		result.append(htmlName);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PerspectiveTitleImpl
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTopologyImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTopologyImpl.java
index 57450aa..edddfaa 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTopologyImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTopologyImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveWelcomeImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveWelcomeImpl.java
index 85ebdbe..e9ca9bd 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveWelcomeImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveWelcomeImpl.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslAdapterFactory.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslAdapterFactory.java
index c6bd578..2acee37 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslAdapterFactory.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslAdapterFactory.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
@@ -134,10 +136,6 @@
 				return createPerspectiveGridAdapter();
 			}
 			@Override
-			public Adapter casePerspectiveBean(PerspectiveBean object) {
-				return createPerspectiveBeanAdapter();
-			}
-			@Override
 			public Adapter casePerspectiveChart(PerspectiveChart object) {
 				return createPerspectiveChartAdapter();
 			}
@@ -158,6 +156,10 @@
 				return createPerspectiveDialogAdapter();
 			}
 			@Override
+			public Adapter casePerspectiveBPMN(PerspectiveBPMN object) {
+				return createPerspectiveBPMNAdapter();
+			}
+			@Override
 			public Adapter casePerspectiveKanban(PerspectiveKanban object) {
 				return createPerspectiveKanbanAdapter();
 			}
@@ -174,6 +176,14 @@
 				return createPerspectiveDataInterchangeAdapter();
 			}
 			@Override
+			public Adapter casePerspectiveTitle(PerspectiveTitle object) {
+				return createPerspectiveTitleAdapter();
+			}
+			@Override
+			public Adapter casePerspectiveDashboard(PerspectiveDashboard object) {
+				return createPerspectiveDashboardAdapter();
+			}
+			@Override
 			public Adapter caseLLazyResolver(LLazyResolver object) {
 				return createLLazyResolverAdapter();
 			}
@@ -384,20 +394,6 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean <em>Perspective Bean</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveBean
-	 * @generated
-	 */
-	public Adapter createPerspectiveBeanAdapter() {
-		return null;
-	}
-
-	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveChart <em>Perspective Chart</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
@@ -468,6 +464,20 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveBPMN <em>Perspective BPMN</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveBPMN
+	 * @generated
+	 */
+	public Adapter createPerspectiveBPMNAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveKanban <em>Perspective Kanban</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
@@ -524,6 +534,34 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveTitle <em>Perspective Title</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveTitle
+	 * @generated
+	 */
+	public Adapter createPerspectiveTitleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveDashboard <em>Perspective Dashboard</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDashboard
+	 * @generated
+	 */
+	public Adapter createPerspectiveDashboardAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver <em>LLazy Resolver</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslSwitch.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslSwitch.java
index 728efe4..dc2e669 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslSwitch.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslSwitch.java
@@ -1,13 +1,15 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http{//www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
- *  Contributors{  
+ *  Contributors:  
  *  		Joerg Riegel - Initial implementation 
  *  
  */
@@ -177,14 +179,6 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case PerspectiveDslPackage.PERSPECTIVE_BEAN: {
-				PerspectiveBean perspectiveBean = (PerspectiveBean)theEObject;
-				T result = casePerspectiveBean(perspectiveBean);
-				if (result == null) result = casePerspectiveView(perspectiveBean);
-				if (result == null) result = casePerspectiveLazyResolver(perspectiveBean);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
 			case PerspectiveDslPackage.PERSPECTIVE_CHART: {
 				PerspectiveChart perspectiveChart = (PerspectiveChart)theEObject;
 				T result = casePerspectiveChart(perspectiveChart);
@@ -225,6 +219,14 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case PerspectiveDslPackage.PERSPECTIVE_BPMN: {
+				PerspectiveBPMN perspectiveBPMN = (PerspectiveBPMN)theEObject;
+				T result = casePerspectiveBPMN(perspectiveBPMN);
+				if (result == null) result = casePerspectiveView(perspectiveBPMN);
+				if (result == null) result = casePerspectiveLazyResolver(perspectiveBPMN);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case PerspectiveDslPackage.PERSPECTIVE_KANBAN: {
 				PerspectiveKanban perspectiveKanban = (PerspectiveKanban)theEObject;
 				T result = casePerspectiveKanban(perspectiveKanban);
@@ -257,6 +259,22 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case PerspectiveDslPackage.PERSPECTIVE_TITLE: {
+				PerspectiveTitle perspectiveTitle = (PerspectiveTitle)theEObject;
+				T result = casePerspectiveTitle(perspectiveTitle);
+				if (result == null) result = casePerspectiveView(perspectiveTitle);
+				if (result == null) result = casePerspectiveLazyResolver(perspectiveTitle);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case PerspectiveDslPackage.PERSPECTIVE_DASHBOARD: {
+				PerspectiveDashboard perspectiveDashboard = (PerspectiveDashboard)theEObject;
+				T result = casePerspectiveDashboard(perspectiveDashboard);
+				if (result == null) result = casePerspectiveView(perspectiveDashboard);
+				if (result == null) result = casePerspectiveLazyResolver(perspectiveDashboard);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			default: return defaultCase(theEObject);
 		}
 	}
@@ -457,21 +475,6 @@
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Perspective Bean</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Perspective Bean</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T casePerspectiveBean(PerspectiveBean object) {
-		return null;
-	}
-
-	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Perspective Chart</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
@@ -547,6 +550,21 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Perspective BPMN</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Perspective BPMN</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePerspectiveBPMN(PerspectiveBPMN object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Perspective Kanban</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
@@ -607,6 +625,36 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Perspective Title</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Perspective Title</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePerspectiveTitle(PerspectiveTitle object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Perspective Dashboard</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Perspective Dashboard</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePerspectiveDashboard(PerspectiveDashboard object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>LLazy Resolver</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
diff --git a/org.eclipse.osbp.xtext.perspective/epl-2.0.html b/org.eclipse.osbp.xtext.perspective/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.perspective/epl-v10.html b/org.eclipse.osbp.xtext.perspective/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.xtext.perspective/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.perspective/license.html b/org.eclipse.osbp.xtext.perspective/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.xtext.perspective/license.html
+++ b/org.eclipse.osbp.xtext.perspective/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.perspective/model/PerspectiveDsl.xcore b/org.eclipse.osbp.xtext.perspective/model/PerspectiveDsl.xcore
index c69e241..3f8415a 100644
--- a/org.eclipse.osbp.xtext.perspective/model/PerspectiveDsl.xcore
+++ b/org.eclipse.osbp.xtext.perspective/model/PerspectiveDsl.xcore
@@ -7,13 +7,15 @@
 @GenModel(literalsInterface="true")
 @GenModel(copyrightText="Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  All rights reserved. This program and the accompanying materials 
- are made available under the terms of the Eclipse Public License v1.0 
+ are made available under the terms of the Eclipse Public License 2.0  
  which accompanies this distribution, and is available at 
- http{//www.eclipse.org/legal/epl-v10.html 
+ https://www.eclipse.org/legal/epl-2.0/ 
+ 
+ SPDX-License-Identifier: EPL-2.0 
 
  Based on ideas from Xtext, Xtend, Xcore
   
- Contributors{  
+ Contributors:  
  		Joerg Riegel - Initial implementation 
  ")
 @Ecore(nsURI="http://osbp.eclipse.org/xtext/perspective/PerspectiveDsl")
@@ -112,11 +114,6 @@
 	contains resolving  JvmTypeReference refTypeJvm
 }
 
-class PerspectiveBean extends PerspectiveView {
-	refers Table ref
-	contains resolving  JvmTypeReference refTypeJvm
-}
-
 class PerspectiveChart extends PerspectiveView {
 	refers Chart ref
 	contains resolving   JvmTypeReference refTypeJvm
@@ -141,6 +138,9 @@
 	contains resolving  JvmTypeReference refTypeJvm
 }
 
+class PerspectiveBPMN extends PerspectiveView {
+}
+
 class PerspectiveKanban extends PerspectiveView {
 	refers LDto dtoRef
 	refers Dialog cardRef
@@ -161,6 +161,14 @@
 	contains resolving  JvmTypeReference refTypeJvm
 }
 
+class PerspectiveTitle extends PerspectiveView {
+	String htmlName
+}
+
+class PerspectiveDashboard extends PerspectiveView {
+	String name
+}
+
 enum SashOrientation {
 	HORIZONTAL as 'horizontal'
 	VERTICAL as 'vertical'
diff --git a/org.eclipse.osbp.xtext.perspective/plugin.properties b/org.eclipse.osbp.xtext.perspective/plugin.properties
index 310d0c2..cec0919 100644
--- a/org.eclipse.osbp.xtext.perspective/plugin.properties
+++ b/org.eclipse.osbp.xtext.perspective/plugin.properties
@@ -1,12 +1,14 @@
 # Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 #  All rights reserved. This program and the accompanying materials 
-#  are made available under the terms of the Eclipse Public License v1.0 
+#  are made available under the terms of the Eclipse Public License 2.0  
 #  which accompanies this distribution, and is available at 
-#  http{//www.eclipse.org/legal/epl-v10.html 
+#  https://www.eclipse.org/legal/epl-2.0/ 
+# 
+#  SPDX-License-Identifier: EPL-2.0 
 # 
 #  Based on ideas from Xtext, Xtend, Xcore
 #   
-#  Contributors{  
+#  Contributors:  
 #  		Joerg Riegel - Initial implementation 
 #  
 
diff --git a/org.eclipse.osbp.xtext.perspective/plugin.xml b/org.eclipse.osbp.xtext.perspective/plugin.xml
index 1aec273..31515e2 100644
--- a/org.eclipse.osbp.xtext.perspective/plugin.xml
+++ b/org.eclipse.osbp.xtext.perspective/plugin.xml
@@ -4,9 +4,11 @@
 <!--
  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
   All rights reserved. This program and the accompanying materials 
-  are made available under the terms of the Eclipse Public License v1.0 
+  are made available under the terms of the Eclipse Public License 2.0  
   which accompanies this distribution, and is available at 
-  http{//www.eclipse.org/legal/epl-v10.html 
+  https://www.eclipse.org/legal/epl-2.0/
+
+  SPDX-License-Identifier: EPL-2.0
  
   Based on ideas from Xtext, Xtend, Xcore
    
diff --git a/org.eclipse.osbp.xtext.perspective/pom.xml b/org.eclipse.osbp.xtext.perspective/pom.xml
index 26ad089..f1c4d20 100644
--- a/org.eclipse.osbp.xtext.perspective/pom.xml
+++ b/org.eclipse.osbp.xtext.perspective/pom.xml
@@ -2,9 +2,11 @@
 <!--#======================================================================= -->
 <!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
 <!--# All rights reserved. This program and the accompanying materials -->
-<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/AbstractPerspectiveDslRuntimeModule.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/AbstractPerspectiveDslRuntimeModule.java
index 12230bd..09b66a0 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/AbstractPerspectiveDslRuntimeModule.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/AbstractPerspectiveDslRuntimeModule.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
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 d7dfcec..8a74297 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/PerspectiveDslStandaloneSetupGenerated.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslStandaloneSetupGenerated.java
index 6c80302..f5b6bfb 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslStandaloneSetupGenerated.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslStandaloneSetupGenerated.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslAntlrTokenFileProvider.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslAntlrTokenFileProvider.java
index 75d4fa9..dc5558e 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslAntlrTokenFileProvider.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslAntlrTokenFileProvider.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslParser.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslParser.java
index f22478e..719d9fb 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslParser.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslParser.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
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 fbd4e13..04cf9c1 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
@@ -1172,83 +1172,83 @@
 		}
 		    |
 		{
-			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveBeanParserRuleCall_3());
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_3());
 		}
-		this_PerspectiveBean_3=rulePerspectiveBean
+		this_PerspectiveReport_3=rulePerspectiveReport
 		{
-			$current = $this_PerspectiveBean_3.current;
+			$current = $this_PerspectiveReport_3.current;
 			afterParserOrEnumRuleCall();
 		}
 		    |
 		{
-			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_4());
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_4());
 		}
-		this_PerspectiveReport_4=rulePerspectiveReport
+		this_PerspectiveOrganization_4=rulePerspectiveOrganization
 		{
-			$current = $this_PerspectiveReport_4.current;
+			$current = $this_PerspectiveOrganization_4.current;
 			afterParserOrEnumRuleCall();
 		}
 		    |
 		{
-			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_5());
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_5());
 		}
-		this_PerspectiveOrganization_5=rulePerspectiveOrganization
+		this_PerspectiveTopology_5=rulePerspectiveTopology
 		{
-			$current = $this_PerspectiveOrganization_5.current;
+			$current = $this_PerspectiveTopology_5.current;
 			afterParserOrEnumRuleCall();
 		}
 		    |
 		{
-			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_6());
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_6());
 		}
-		this_PerspectiveTopology_6=rulePerspectiveTopology
+		this_PerspectiveDialog_6=rulePerspectiveDialog
 		{
-			$current = $this_PerspectiveTopology_6.current;
+			$current = $this_PerspectiveDialog_6.current;
 			afterParserOrEnumRuleCall();
 		}
 		    |
 		{
-			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_7());
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_7());
 		}
-		this_PerspectiveDialog_7=rulePerspectiveDialog
+		this_PerspectiveGrid_7=rulePerspectiveGrid
 		{
-			$current = $this_PerspectiveDialog_7.current;
+			$current = $this_PerspectiveGrid_7.current;
 			afterParserOrEnumRuleCall();
 		}
 		    |
 		{
-			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_8());
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_8());
 		}
-		this_PerspectiveGrid_8=rulePerspectiveGrid
+		this_PerspectiveWelcome_8=rulePerspectiveWelcome
 		{
-			$current = $this_PerspectiveGrid_8.current;
+			$current = $this_PerspectiveWelcome_8.current;
 			afterParserOrEnumRuleCall();
 		}
 		    |
 		{
-			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_9());
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_9());
 		}
-		this_PerspectiveWelcome_9=rulePerspectiveWelcome
+		this_PerspectiveSearch_9=rulePerspectiveSearch
 		{
-			$current = $this_PerspectiveWelcome_9.current;
+			$current = $this_PerspectiveSearch_9.current;
 			afterParserOrEnumRuleCall();
 		}
 		    |
 		{
-			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_10());
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_10());
 		}
-		this_PerspectiveSearch_10=rulePerspectiveSearch
+		this_PerspectiveDataInterchange_10=rulePerspectiveDataInterchange
 		{
-			$current = $this_PerspectiveSearch_10.current;
+			$current = $this_PerspectiveDataInterchange_10.current;
 			afterParserOrEnumRuleCall();
 		}
 		    |
 		{
-			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_11());
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveBPMNParserRuleCall_11());
 		}
-		this_PerspectiveDataInterchange_11=rulePerspectiveDataInterchange
+		this_PerspectiveBPMN_11=rulePerspectiveBPMN
 		{
-			$current = $this_PerspectiveDataInterchange_11.current;
+			$current = $this_PerspectiveBPMN_11.current;
 			afterParserOrEnumRuleCall();
 		}
 		    |
@@ -1260,6 +1260,24 @@
 			$current = $this_PerspectiveKanban_12.current;
 			afterParserOrEnumRuleCall();
 		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveTitleParserRuleCall_13());
+		}
+		this_PerspectiveTitle_13=rulePerspectiveTitle
+		{
+			$current = $this_PerspectiveTitle_13.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDashboardParserRuleCall_14());
+		}
+		this_PerspectiveDashboard_14=rulePerspectiveDashboard
+		{
+			$current = $this_PerspectiveDashboard_14.current;
+			afterParserOrEnumRuleCall();
+		}
 	)
 ;
 
@@ -1329,9 +1347,9 @@
 					$current);
 			}
 		)
-		otherlv_1='table'
+		otherlv_1='readOnlyTable'
 		{
-			newLeafNode(otherlv_1, grammarAccess.getPerspectiveTableAccess().getTableKeyword_1());
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveTableAccess().getReadOnlyTableKeyword_1());
 		}
 		(
 			(
@@ -1372,9 +1390,9 @@
 					$current);
 			}
 		)
-		otherlv_1='grid'
+		otherlv_1='editableTable'
 		{
-			newLeafNode(otherlv_1, grammarAccess.getPerspectiveGridAccess().getGridKeyword_1());
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveGridAccess().getEditableTableKeyword_1());
 		}
 		(
 			(
@@ -1392,49 +1410,6 @@
 	)
 ;
 
-// Entry rule entryRulePerspectiveBean
-entryRulePerspectiveBean returns [EObject current=null]:
-	{ newCompositeNode(grammarAccess.getPerspectiveBeanRule()); }
-	iv_rulePerspectiveBean=rulePerspectiveBean
-	{ $current=$iv_rulePerspectiveBean.current; }
-	EOF;
-
-// Rule PerspectiveBean
-rulePerspectiveBean returns [EObject current=null]
-@init {
-	enterRule();
-}
-@after {
-	leaveRule();
-}:
-	(
-		(
-			{
-				$current = forceCreateModelElement(
-					grammarAccess.getPerspectiveBeanAccess().getPerspectiveBeanAction_0(),
-					$current);
-			}
-		)
-		otherlv_1='bean'
-		{
-			newLeafNode(otherlv_1, grammarAccess.getPerspectiveBeanAccess().getBeanKeyword_1());
-		}
-		(
-			(
-				{
-					if ($current==null) {
-						$current = createModelElement(grammarAccess.getPerspectiveBeanRule());
-					}
-				}
-				otherlv_2=RULE_ID
-				{
-					newLeafNode(otherlv_2, grammarAccess.getPerspectiveBeanAccess().getRefTableCrossReference_2_0());
-				}
-			)
-		)
-	)
-;
-
 // Entry rule entryRulePerspectiveChart
 entryRulePerspectiveChart returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveChartRule()); }
@@ -1650,6 +1625,36 @@
 	)
 ;
 
+// Entry rule entryRulePerspectiveBPMN
+entryRulePerspectiveBPMN returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getPerspectiveBPMNRule()); }
+	iv_rulePerspectiveBPMN=rulePerspectiveBPMN
+	{ $current=$iv_rulePerspectiveBPMN.current; }
+	EOF;
+
+// Rule PerspectiveBPMN
+rulePerspectiveBPMN returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveBPMNAccess().getPerspectiveBPMNAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='bpmn'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1());
+		}
+	)
+;
+
 // Entry rule entryRulePerspectiveKanban
 entryRulePerspectiveKanban returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveKanbanRule()); }
@@ -1931,6 +1936,102 @@
 	)
 ;
 
+// Entry rule entryRulePerspectiveTitle
+entryRulePerspectiveTitle returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getPerspectiveTitleRule()); }
+	iv_rulePerspectiveTitle=rulePerspectiveTitle
+	{ $current=$iv_rulePerspectiveTitle.current; }
+	EOF;
+
+// Rule PerspectiveTitle
+rulePerspectiveTitle returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveTitleAccess().getPerspectiveTitleAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='title'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveTitleAccess().getTitleKeyword_1());
+		}
+		(
+			(
+				lv_htmlName_2_0=RULE_STRING
+				{
+					newLeafNode(lv_htmlName_2_0, grammarAccess.getPerspectiveTitleAccess().getHtmlNameSTRINGTerminalRuleCall_2_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveTitleRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"htmlName",
+						lv_htmlName_2_0,
+						"org.eclipse.xtext.xbase.Xtype.STRING");
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRulePerspectiveDashboard
+entryRulePerspectiveDashboard returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getPerspectiveDashboardRule()); }
+	iv_rulePerspectiveDashboard=rulePerspectiveDashboard
+	{ $current=$iv_rulePerspectiveDashboard.current; }
+	EOF;
+
+// Rule PerspectiveDashboard
+rulePerspectiveDashboard returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveDashboardAccess().getPerspectiveDashboardAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='name'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveDashboardAccess().getNameKeyword_1());
+		}
+		(
+			(
+				lv_name_2_0=RULE_STRING
+				{
+					newLeafNode(lv_name_2_0, grammarAccess.getPerspectiveDashboardAccess().getNameSTRINGTerminalRuleCall_2_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveDashboardRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"name",
+						lv_name_2_0,
+						"org.eclipse.xtext.xbase.Xtype.STRING");
+				}
+			)
+		)
+	)
+;
+
 // Entry rule entryRuleTRANSLATABLEID
 entryRuleTRANSLATABLEID returns [String current=null]:
 	{ newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); }
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 2d75b9a..680532a 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,114 +1,116 @@
-'!'=89
-'!='=74
-'!=='=76
-'#'=60
-'%'=88
-'%='=67
-'&&'=72
-'&'=122
-'('=56
-')'=58
-'*'=52
-'**'=86
-'*='=65
-'+'=84
-'++'=91
-'+='=63
-','=57
-'-'=85
-'--'=92
-'-='=64
-'->'=78
-'.'=93
-'..'=80
-'..<'=79
-'/'=87
-'/='=66
-':'=100
-'::'=94
-';'=54
-'<'=68
-'<>'=82
-'='=59
-'=='=73
-'==='=75
-'=>'=81
-'>'=69
-'>='=70
-'?'=121
-'?.'=95
-'?:'=83
-'@'=55
-'['=61
-']'=62
+'!'=91
+'!='=76
+'!=='=78
+'#'=62
+'%'=90
+'%='=69
+'&&'=74
+'&'=124
+'('=58
+')'=60
+'*'=54
+'**'=88
+'*='=67
+'+'=86
+'++'=93
+'+='=65
+','=59
+'-'=87
+'--'=94
+'-='=66
+'->'=80
+'.'=95
+'..'=82
+'..<'=81
+'/'=89
+'/='=68
+':'=102
+'::'=96
+';'=56
+'<'=70
+'<>'=84
+'='=61
+'=='=75
+'==='=77
+'=>'=83
+'>'=71
+'>='=72
+'?'=123
+'?.'=97
+'?:'=85
+'@'=57
+'['=63
+']'=64
 'accessibility'=21
-'as'=90
-'bean'=34
+'as'=92
+'bpmn'=39
 'card'=42
-'case'=102
-'catch'=120
-'chart'=35
+'case'=104
+'catch'=122
+'chart'=34
 'dataInterchange'=48
-'default'=101
+'default'=103
 'depth'=46
 'describedBy'=17
-'dialog'=39
-'do'=105
-'else'=98
-'extends'=108
-'extension'=51
-'false'=111
+'dialog'=38
+'do'=107
+'editableTable'=33
+'else'=100
+'extends'=110
+'extension'=53
+'false'=113
 'filterColumns'=47
-'finally'=118
-'for'=103
-'grid'=33
-'horizontal'=123
+'finally'=120
+'for'=105
+'horizontal'=125
 'iconURI'=20
-'if'=97
-'import'=49
+'if'=99
+'import'=51
 'in'=45
-'instanceof'=77
+'instanceof'=79
 'isClosable'=30
 'kanban'=40
-'new'=110
-'ns'=53
-'null'=113
+'name'=50
+'new'=112
+'ns'=55
+'null'=115
 'of'=41
-'organigram'=37
+'organigram'=36
 'orientation'=24
 'package'=13
 'part'=28
 'partStack'=27
 'perspective'=16
 'process'=18
-'report'=36
-'return'=116
+'readOnlyTable'=32
+'report'=35
+'return'=118
 'sashContainer'=23
 'search'=44
 'select'=31
 'selectedElement'=25
 'spaceVolume'=26
-'static'=50
-'super'=109
-'switch'=99
-'synchronized'=119
-'table'=32
-'throw'=115
+'static'=52
+'super'=111
+'switch'=101
+'synchronized'=121
+'throw'=117
+'title'=49
 'toolbar'=22
-'topology'=38
-'true'=112
-'try'=117
-'typeof'=114
+'topology'=37
+'true'=114
+'try'=119
+'typeof'=116
 'usertask'=19
-'val'=107
-'var'=106
-'vertical'=124
+'val'=109
+'var'=108
+'vertical'=126
 'view'=29
 'welcome'=43
-'while'=104
+'while'=106
 '{'=14
-'|'=96
-'||'=71
+'|'=98
+'||'=73
 '}'=15
 RULE_ANY_OTHER=12
 RULE_DECIMAL=8
@@ -144,6 +146,8 @@
 T__122=122
 T__123=123
 T__124=124
+T__125=125
+T__126=126
 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 fd6c13d..e5d6661 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
@@ -33,7 +33,9 @@
     public static final int T__68=68;
     public static final int T__69=69;
     public static final int T__62=62;
+    public static final int T__126=126;
     public static final int T__63=63;
+    public static final int T__125=125;
     public static final int T__64=64;
     public static final int T__65=65;
     public static final int T__37=37;
@@ -550,10 +552,10 @@
         try {
             int _type = T__32;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:30:7: ( 'table' )
-            // InternalPerspectiveDsl.g:30:9: 'table'
+            // InternalPerspectiveDsl.g:30:7: ( 'readOnlyTable' )
+            // InternalPerspectiveDsl.g:30:9: 'readOnlyTable'
             {
-            match("table"); 
+            match("readOnlyTable"); 
 
 
             }
@@ -571,10 +573,10 @@
         try {
             int _type = T__33;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:31:7: ( 'grid' )
-            // InternalPerspectiveDsl.g:31:9: 'grid'
+            // InternalPerspectiveDsl.g:31:7: ( 'editableTable' )
+            // InternalPerspectiveDsl.g:31:9: 'editableTable'
             {
-            match("grid"); 
+            match("editableTable"); 
 
 
             }
@@ -592,10 +594,10 @@
         try {
             int _type = T__34;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:32:7: ( 'bean' )
-            // InternalPerspectiveDsl.g:32:9: 'bean'
+            // InternalPerspectiveDsl.g:32:7: ( 'chart' )
+            // InternalPerspectiveDsl.g:32:9: 'chart'
             {
-            match("bean"); 
+            match("chart"); 
 
 
             }
@@ -613,10 +615,10 @@
         try {
             int _type = T__35;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:33:7: ( 'chart' )
-            // InternalPerspectiveDsl.g:33:9: 'chart'
+            // InternalPerspectiveDsl.g:33:7: ( 'report' )
+            // InternalPerspectiveDsl.g:33:9: 'report'
             {
-            match("chart"); 
+            match("report"); 
 
 
             }
@@ -634,10 +636,10 @@
         try {
             int _type = T__36;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:34:7: ( 'report' )
-            // InternalPerspectiveDsl.g:34:9: 'report'
+            // InternalPerspectiveDsl.g:34:7: ( 'organigram' )
+            // InternalPerspectiveDsl.g:34:9: 'organigram'
             {
-            match("report"); 
+            match("organigram"); 
 
 
             }
@@ -655,10 +657,10 @@
         try {
             int _type = T__37;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:35:7: ( 'organigram' )
-            // InternalPerspectiveDsl.g:35:9: 'organigram'
+            // InternalPerspectiveDsl.g:35:7: ( 'topology' )
+            // InternalPerspectiveDsl.g:35:9: 'topology'
             {
-            match("organigram"); 
+            match("topology"); 
 
 
             }
@@ -676,10 +678,10 @@
         try {
             int _type = T__38;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:36:7: ( 'topology' )
-            // InternalPerspectiveDsl.g:36:9: 'topology'
+            // InternalPerspectiveDsl.g:36:7: ( 'dialog' )
+            // InternalPerspectiveDsl.g:36:9: 'dialog'
             {
-            match("topology"); 
+            match("dialog"); 
 
 
             }
@@ -697,10 +699,10 @@
         try {
             int _type = T__39;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:37:7: ( 'dialog' )
-            // InternalPerspectiveDsl.g:37:9: 'dialog'
+            // InternalPerspectiveDsl.g:37:7: ( 'bpmn' )
+            // InternalPerspectiveDsl.g:37:9: 'bpmn'
             {
-            match("dialog"); 
+            match("bpmn"); 
 
 
             }
@@ -907,10 +909,10 @@
         try {
             int _type = T__49;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:47:7: ( 'import' )
-            // InternalPerspectiveDsl.g:47:9: 'import'
+            // InternalPerspectiveDsl.g:47:7: ( 'title' )
+            // InternalPerspectiveDsl.g:47:9: 'title'
             {
-            match("import"); 
+            match("title"); 
 
 
             }
@@ -928,10 +930,10 @@
         try {
             int _type = T__50;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:48:7: ( 'static' )
-            // InternalPerspectiveDsl.g:48:9: 'static'
+            // InternalPerspectiveDsl.g:48:7: ( 'name' )
+            // InternalPerspectiveDsl.g:48:9: 'name'
             {
-            match("static"); 
+            match("name"); 
 
 
             }
@@ -949,10 +951,10 @@
         try {
             int _type = T__51;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:49:7: ( 'extension' )
-            // InternalPerspectiveDsl.g:49:9: 'extension'
+            // InternalPerspectiveDsl.g:49:7: ( 'import' )
+            // InternalPerspectiveDsl.g:49:9: 'import'
             {
-            match("extension"); 
+            match("import"); 
 
 
             }
@@ -970,10 +972,11 @@
         try {
             int _type = T__52;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:50:7: ( '*' )
-            // InternalPerspectiveDsl.g:50:9: '*'
+            // InternalPerspectiveDsl.g:50:7: ( 'static' )
+            // InternalPerspectiveDsl.g:50:9: 'static'
             {
-            match('*'); 
+            match("static"); 
+
 
             }
 
@@ -990,10 +993,10 @@
         try {
             int _type = T__53;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:51:7: ( 'ns' )
-            // InternalPerspectiveDsl.g:51:9: 'ns'
+            // InternalPerspectiveDsl.g:51:7: ( 'extension' )
+            // InternalPerspectiveDsl.g:51:9: 'extension'
             {
-            match("ns"); 
+            match("extension"); 
 
 
             }
@@ -1011,10 +1014,10 @@
         try {
             int _type = T__54;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:52:7: ( ';' )
-            // InternalPerspectiveDsl.g:52:9: ';'
+            // InternalPerspectiveDsl.g:52:7: ( '*' )
+            // InternalPerspectiveDsl.g:52:9: '*'
             {
-            match(';'); 
+            match('*'); 
 
             }
 
@@ -1031,10 +1034,11 @@
         try {
             int _type = T__55;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:53:7: ( '@' )
-            // InternalPerspectiveDsl.g:53:9: '@'
+            // InternalPerspectiveDsl.g:53:7: ( 'ns' )
+            // InternalPerspectiveDsl.g:53:9: 'ns'
             {
-            match('@'); 
+            match("ns"); 
+
 
             }
 
@@ -1051,10 +1055,10 @@
         try {
             int _type = T__56;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:54:7: ( '(' )
-            // InternalPerspectiveDsl.g:54:9: '('
+            // InternalPerspectiveDsl.g:54:7: ( ';' )
+            // InternalPerspectiveDsl.g:54:9: ';'
             {
-            match('('); 
+            match(';'); 
 
             }
 
@@ -1071,10 +1075,10 @@
         try {
             int _type = T__57;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:55:7: ( ',' )
-            // InternalPerspectiveDsl.g:55:9: ','
+            // InternalPerspectiveDsl.g:55:7: ( '@' )
+            // InternalPerspectiveDsl.g:55:9: '@'
             {
-            match(','); 
+            match('@'); 
 
             }
 
@@ -1091,10 +1095,10 @@
         try {
             int _type = T__58;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:56:7: ( ')' )
-            // InternalPerspectiveDsl.g:56:9: ')'
+            // InternalPerspectiveDsl.g:56:7: ( '(' )
+            // InternalPerspectiveDsl.g:56:9: '('
             {
-            match(')'); 
+            match('('); 
 
             }
 
@@ -1111,10 +1115,10 @@
         try {
             int _type = T__59;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:57:7: ( '=' )
-            // InternalPerspectiveDsl.g:57:9: '='
+            // InternalPerspectiveDsl.g:57:7: ( ',' )
+            // InternalPerspectiveDsl.g:57:9: ','
             {
-            match('='); 
+            match(','); 
 
             }
 
@@ -1131,10 +1135,10 @@
         try {
             int _type = T__60;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:58:7: ( '#' )
-            // InternalPerspectiveDsl.g:58:9: '#'
+            // InternalPerspectiveDsl.g:58:7: ( ')' )
+            // InternalPerspectiveDsl.g:58:9: ')'
             {
-            match('#'); 
+            match(')'); 
 
             }
 
@@ -1151,10 +1155,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('='); 
 
             }
 
@@ -1171,10 +1175,10 @@
         try {
             int _type = T__62;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:60:7: ( ']' )
-            // InternalPerspectiveDsl.g:60:9: ']'
+            // InternalPerspectiveDsl.g:60:7: ( '#' )
+            // InternalPerspectiveDsl.g:60:9: '#'
             {
-            match(']'); 
+            match('#'); 
 
             }
 
@@ -1191,11 +1195,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('['); 
 
             }
 
@@ -1212,11 +1215,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(']'); 
 
             }
 
@@ -1233,10 +1235,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("+="); 
 
 
             }
@@ -1254,10 +1256,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("-="); 
 
 
             }
@@ -1275,10 +1277,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("*="); 
 
 
             }
@@ -1296,10 +1298,11 @@
         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("/="); 
+
 
             }
 
@@ -1316,10 +1319,11 @@
         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("%="); 
+
 
             }
 
@@ -1336,11 +1340,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('<'); 
 
             }
 
@@ -1357,11 +1360,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('>'); 
 
             }
 
@@ -1378,10 +1380,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(">="); 
 
 
             }
@@ -1399,10 +1401,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("||"); 
 
 
             }
@@ -1420,10 +1422,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("&&"); 
 
 
             }
@@ -1441,10 +1443,10 @@
         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("=="); 
 
 
             }
@@ -1462,10 +1464,10 @@
         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("!="); 
 
 
             }
@@ -1483,10 +1485,10 @@
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:75:7: ( 'instanceof' )
-            // InternalPerspectiveDsl.g:75:9: 'instanceof'
+            // InternalPerspectiveDsl.g:75:7: ( '===' )
+            // InternalPerspectiveDsl.g:75:9: '==='
             {
-            match("instanceof"); 
+            match("==="); 
 
 
             }
@@ -1504,10 +1506,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("!=="); 
 
 
             }
@@ -1525,10 +1527,10 @@
         try {
             int _type = T__79;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:77:7: ( '..<' )
-            // InternalPerspectiveDsl.g:77:9: '..<'
+            // InternalPerspectiveDsl.g:77:7: ( 'instanceof' )
+            // InternalPerspectiveDsl.g:77:9: 'instanceof'
             {
-            match("..<"); 
+            match("instanceof"); 
 
 
             }
@@ -1546,10 +1548,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("->"); 
 
 
             }
@@ -1567,10 +1569,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("..<"); 
 
 
             }
@@ -1588,10 +1590,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(".."); 
 
 
             }
@@ -1609,10 +1611,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("=>"); 
 
 
             }
@@ -1630,10 +1632,11 @@
         try {
             int _type = T__84;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:82:7: ( '+' )
-            // InternalPerspectiveDsl.g:82:9: '+'
+            // InternalPerspectiveDsl.g:82:7: ( '<>' )
+            // InternalPerspectiveDsl.g:82:9: '<>'
             {
-            match('+'); 
+            match("<>"); 
+
 
             }
 
@@ -1650,10 +1653,11 @@
         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("?:"); 
+
 
             }
 
@@ -1670,11 +1674,10 @@
         try {
             int _type = T__86;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:84:7: ( '**' )
-            // InternalPerspectiveDsl.g:84:9: '**'
+            // InternalPerspectiveDsl.g:84:7: ( '+' )
+            // InternalPerspectiveDsl.g:84:9: '+'
             {
-            match("**"); 
-
+            match('+'); 
 
             }
 
@@ -1691,10 +1694,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('-'); 
 
             }
 
@@ -1711,10 +1714,11 @@
         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("**"); 
+
 
             }
 
@@ -1731,10 +1735,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('/'); 
 
             }
 
@@ -1751,11 +1755,10 @@
         try {
             int _type = T__90;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:88:7: ( 'as' )
-            // InternalPerspectiveDsl.g:88:9: 'as'
+            // InternalPerspectiveDsl.g:88:7: ( '%' )
+            // InternalPerspectiveDsl.g:88:9: '%'
             {
-            match("as"); 
-
+            match('%'); 
 
             }
 
@@ -1772,11 +1775,10 @@
         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('!'); 
 
             }
 
@@ -1793,10 +1795,10 @@
         try {
             int _type = T__92;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:90:7: ( '--' )
-            // InternalPerspectiveDsl.g:90:9: '--'
+            // InternalPerspectiveDsl.g:90:7: ( 'as' )
+            // InternalPerspectiveDsl.g:90:9: 'as'
             {
-            match("--"); 
+            match("as"); 
 
 
             }
@@ -1814,10 +1816,11 @@
         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("++"); 
+
 
             }
 
@@ -1834,10 +1837,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("--"); 
 
 
             }
@@ -1855,11 +1858,10 @@
         try {
             int _type = T__95;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:93:7: ( '?.' )
-            // InternalPerspectiveDsl.g:93:9: '?.'
+            // InternalPerspectiveDsl.g:93:7: ( '.' )
+            // InternalPerspectiveDsl.g:93:9: '.'
             {
-            match("?."); 
-
+            match('.'); 
 
             }
 
@@ -1876,10 +1878,11 @@
         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("::"); 
+
 
             }
 
@@ -1896,10 +1899,10 @@
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:95:7: ( 'if' )
-            // InternalPerspectiveDsl.g:95:9: 'if'
+            // InternalPerspectiveDsl.g:95:7: ( '?.' )
+            // InternalPerspectiveDsl.g:95:9: '?.'
             {
-            match("if"); 
+            match("?."); 
 
 
             }
@@ -1917,11 +1920,10 @@
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:96:7: ( 'else' )
-            // InternalPerspectiveDsl.g:96:9: 'else'
+            // InternalPerspectiveDsl.g:96:7: ( '|' )
+            // InternalPerspectiveDsl.g:96:9: '|'
             {
-            match("else"); 
-
+            match('|'); 
 
             }
 
@@ -1938,10 +1940,10 @@
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:97:7: ( 'switch' )
-            // InternalPerspectiveDsl.g:97:9: 'switch'
+            // InternalPerspectiveDsl.g:97:7: ( 'if' )
+            // InternalPerspectiveDsl.g:97:9: 'if'
             {
-            match("switch"); 
+            match("if"); 
 
 
             }
@@ -1959,10 +1961,11 @@
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:98:8: ( ':' )
-            // InternalPerspectiveDsl.g:98:10: ':'
+            // InternalPerspectiveDsl.g:98:8: ( 'else' )
+            // InternalPerspectiveDsl.g:98:10: 'else'
             {
-            match(':'); 
+            match("else"); 
+
 
             }
 
@@ -1979,10 +1982,10 @@
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:99:8: ( 'default' )
-            // InternalPerspectiveDsl.g:99:10: 'default'
+            // InternalPerspectiveDsl.g:99:8: ( 'switch' )
+            // InternalPerspectiveDsl.g:99:10: 'switch'
             {
-            match("default"); 
+            match("switch"); 
 
 
             }
@@ -2000,11 +2003,10 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:100:8: ( 'case' )
-            // InternalPerspectiveDsl.g:100:10: 'case'
+            // InternalPerspectiveDsl.g:100:8: ( ':' )
+            // InternalPerspectiveDsl.g:100:10: ':'
             {
-            match("case"); 
-
+            match(':'); 
 
             }
 
@@ -2021,10 +2023,10 @@
         try {
             int _type = T__103;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:101:8: ( 'for' )
-            // InternalPerspectiveDsl.g:101:10: 'for'
+            // InternalPerspectiveDsl.g:101:8: ( 'default' )
+            // InternalPerspectiveDsl.g:101:10: 'default'
             {
-            match("for"); 
+            match("default"); 
 
 
             }
@@ -2042,10 +2044,10 @@
         try {
             int _type = T__104;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:102:8: ( 'while' )
-            // InternalPerspectiveDsl.g:102:10: 'while'
+            // InternalPerspectiveDsl.g:102:8: ( 'case' )
+            // InternalPerspectiveDsl.g:102:10: 'case'
             {
-            match("while"); 
+            match("case"); 
 
 
             }
@@ -2063,10 +2065,10 @@
         try {
             int _type = T__105;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:103:8: ( 'do' )
-            // InternalPerspectiveDsl.g:103:10: 'do'
+            // InternalPerspectiveDsl.g:103:8: ( 'for' )
+            // InternalPerspectiveDsl.g:103:10: 'for'
             {
-            match("do"); 
+            match("for"); 
 
 
             }
@@ -2084,10 +2086,10 @@
         try {
             int _type = T__106;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:104:8: ( 'var' )
-            // InternalPerspectiveDsl.g:104:10: 'var'
+            // InternalPerspectiveDsl.g:104:8: ( 'while' )
+            // InternalPerspectiveDsl.g:104:10: 'while'
             {
-            match("var"); 
+            match("while"); 
 
 
             }
@@ -2105,10 +2107,10 @@
         try {
             int _type = T__107;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:105:8: ( 'val' )
-            // InternalPerspectiveDsl.g:105:10: 'val'
+            // InternalPerspectiveDsl.g:105:8: ( 'do' )
+            // InternalPerspectiveDsl.g:105:10: 'do'
             {
-            match("val"); 
+            match("do"); 
 
 
             }
@@ -2126,10 +2128,10 @@
         try {
             int _type = T__108;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:106:8: ( 'extends' )
-            // InternalPerspectiveDsl.g:106:10: 'extends'
+            // InternalPerspectiveDsl.g:106:8: ( 'var' )
+            // InternalPerspectiveDsl.g:106:10: 'var'
             {
-            match("extends"); 
+            match("var"); 
 
 
             }
@@ -2147,10 +2149,10 @@
         try {
             int _type = T__109;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:107:8: ( 'super' )
-            // InternalPerspectiveDsl.g:107:10: 'super'
+            // InternalPerspectiveDsl.g:107:8: ( 'val' )
+            // InternalPerspectiveDsl.g:107:10: 'val'
             {
-            match("super"); 
+            match("val"); 
 
 
             }
@@ -2168,10 +2170,10 @@
         try {
             int _type = T__110;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:108:8: ( 'new' )
-            // InternalPerspectiveDsl.g:108:10: 'new'
+            // InternalPerspectiveDsl.g:108:8: ( 'extends' )
+            // InternalPerspectiveDsl.g:108:10: 'extends'
             {
-            match("new"); 
+            match("extends"); 
 
 
             }
@@ -2189,10 +2191,10 @@
         try {
             int _type = T__111;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:109:8: ( 'false' )
-            // InternalPerspectiveDsl.g:109:10: 'false'
+            // InternalPerspectiveDsl.g:109:8: ( 'super' )
+            // InternalPerspectiveDsl.g:109:10: 'super'
             {
-            match("false"); 
+            match("super"); 
 
 
             }
@@ -2210,10 +2212,10 @@
         try {
             int _type = T__112;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:110:8: ( 'true' )
-            // InternalPerspectiveDsl.g:110:10: 'true'
+            // InternalPerspectiveDsl.g:110:8: ( 'new' )
+            // InternalPerspectiveDsl.g:110:10: 'new'
             {
-            match("true"); 
+            match("new"); 
 
 
             }
@@ -2231,10 +2233,10 @@
         try {
             int _type = T__113;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:111:8: ( 'null' )
-            // InternalPerspectiveDsl.g:111:10: 'null'
+            // InternalPerspectiveDsl.g:111:8: ( 'false' )
+            // InternalPerspectiveDsl.g:111:10: 'false'
             {
-            match("null"); 
+            match("false"); 
 
 
             }
@@ -2252,10 +2254,10 @@
         try {
             int _type = T__114;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:112:8: ( 'typeof' )
-            // InternalPerspectiveDsl.g:112:10: 'typeof'
+            // InternalPerspectiveDsl.g:112:8: ( 'true' )
+            // InternalPerspectiveDsl.g:112:10: 'true'
             {
-            match("typeof"); 
+            match("true"); 
 
 
             }
@@ -2273,10 +2275,10 @@
         try {
             int _type = T__115;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:113:8: ( 'throw' )
-            // InternalPerspectiveDsl.g:113:10: 'throw'
+            // InternalPerspectiveDsl.g:113:8: ( 'null' )
+            // InternalPerspectiveDsl.g:113:10: 'null'
             {
-            match("throw"); 
+            match("null"); 
 
 
             }
@@ -2294,10 +2296,10 @@
         try {
             int _type = T__116;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:114:8: ( 'return' )
-            // InternalPerspectiveDsl.g:114:10: 'return'
+            // InternalPerspectiveDsl.g:114:8: ( 'typeof' )
+            // InternalPerspectiveDsl.g:114:10: 'typeof'
             {
-            match("return"); 
+            match("typeof"); 
 
 
             }
@@ -2315,10 +2317,10 @@
         try {
             int _type = T__117;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:115:8: ( 'try' )
-            // InternalPerspectiveDsl.g:115:10: 'try'
+            // InternalPerspectiveDsl.g:115:8: ( 'throw' )
+            // InternalPerspectiveDsl.g:115:10: 'throw'
             {
-            match("try"); 
+            match("throw"); 
 
 
             }
@@ -2336,10 +2338,10 @@
         try {
             int _type = T__118;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:116:8: ( 'finally' )
-            // InternalPerspectiveDsl.g:116:10: 'finally'
+            // InternalPerspectiveDsl.g:116:8: ( 'return' )
+            // InternalPerspectiveDsl.g:116:10: 'return'
             {
-            match("finally"); 
+            match("return"); 
 
 
             }
@@ -2357,10 +2359,10 @@
         try {
             int _type = T__119;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:117:8: ( 'synchronized' )
-            // InternalPerspectiveDsl.g:117:10: 'synchronized'
+            // InternalPerspectiveDsl.g:117:8: ( 'try' )
+            // InternalPerspectiveDsl.g:117:10: 'try'
             {
-            match("synchronized"); 
+            match("try"); 
 
 
             }
@@ -2378,10 +2380,10 @@
         try {
             int _type = T__120;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:118:8: ( 'catch' )
-            // InternalPerspectiveDsl.g:118:10: 'catch'
+            // InternalPerspectiveDsl.g:118:8: ( 'finally' )
+            // InternalPerspectiveDsl.g:118:10: 'finally'
             {
-            match("catch"); 
+            match("finally"); 
 
 
             }
@@ -2399,10 +2401,11 @@
         try {
             int _type = T__121;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:119:8: ( '?' )
-            // InternalPerspectiveDsl.g:119:10: '?'
+            // InternalPerspectiveDsl.g:119:8: ( 'synchronized' )
+            // InternalPerspectiveDsl.g:119:10: 'synchronized'
             {
-            match('?'); 
+            match("synchronized"); 
+
 
             }
 
@@ -2419,10 +2422,11 @@
         try {
             int _type = T__122;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:120:8: ( '&' )
-            // InternalPerspectiveDsl.g:120:10: '&'
+            // InternalPerspectiveDsl.g:120:8: ( 'catch' )
+            // InternalPerspectiveDsl.g:120:10: 'catch'
             {
-            match('&'); 
+            match("catch"); 
+
 
             }
 
@@ -2439,11 +2443,10 @@
         try {
             int _type = T__123;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:121:8: ( 'horizontal' )
-            // InternalPerspectiveDsl.g:121:10: 'horizontal'
+            // InternalPerspectiveDsl.g:121:8: ( '?' )
+            // InternalPerspectiveDsl.g:121:10: '?'
             {
-            match("horizontal"); 
-
+            match('?'); 
 
             }
 
@@ -2460,8 +2463,49 @@
         try {
             int _type = T__124;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:122:8: ( 'vertical' )
-            // InternalPerspectiveDsl.g:122:10: 'vertical'
+            // InternalPerspectiveDsl.g:122:8: ( '&' )
+            // InternalPerspectiveDsl.g:122:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__124"
+
+    // $ANTLR start "T__125"
+    public final void mT__125() throws RecognitionException {
+        try {
+            int _type = T__125;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:123:8: ( 'horizontal' )
+            // InternalPerspectiveDsl.g:123:10: 'horizontal'
+            {
+            match("horizontal"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__125"
+
+    // $ANTLR start "T__126"
+    public final void mT__126() throws RecognitionException {
+        try {
+            int _type = T__126;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:124:8: ( 'vertical' )
+            // InternalPerspectiveDsl.g:124:10: 'vertical'
             {
             match("vertical"); 
 
@@ -2474,17 +2518,17 @@
         finally {
         }
     }
-    // $ANTLR end "T__124"
+    // $ANTLR end "T__126"
 
     // $ANTLR start "RULE_HEX"
     public final void mRULE_HEX() throws RecognitionException {
         try {
             int _type = RULE_HEX;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:8870:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // InternalPerspectiveDsl.g:8870:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalPerspectiveDsl.g:8971:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalPerspectiveDsl.g:8971:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // InternalPerspectiveDsl.g:8870:12: ( '0x' | '0X' )
+            // InternalPerspectiveDsl.g:8971:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -2512,7 +2556,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8870:13: '0x'
+                    // InternalPerspectiveDsl.g:8971:13: '0x'
                     {
                     match("0x"); 
 
@@ -2520,7 +2564,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:8870:18: '0X'
+                    // InternalPerspectiveDsl.g:8971:18: '0X'
                     {
                     match("0X"); 
 
@@ -2530,7 +2574,7 @@
 
             }
 
-            // InternalPerspectiveDsl.g:8870:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalPerspectiveDsl.g:8971:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -2568,7 +2612,7 @@
                 cnt2++;
             } while (true);
 
-            // InternalPerspectiveDsl.g:8870:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalPerspectiveDsl.g:8971:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -2577,10 +2621,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8870:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalPerspectiveDsl.g:8971:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // InternalPerspectiveDsl.g:8870:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalPerspectiveDsl.g:8971:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -2598,7 +2642,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:8870:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalPerspectiveDsl.g:8971:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -2622,7 +2666,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:8870:84: ( 'l' | 'L' )
+                            // InternalPerspectiveDsl.g:8971:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -2661,11 +2705,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:8872:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // InternalPerspectiveDsl.g:8872:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalPerspectiveDsl.g:8973:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalPerspectiveDsl.g:8973:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // InternalPerspectiveDsl.g:8872:21: ( '0' .. '9' | '_' )*
+            // InternalPerspectiveDsl.g:8973:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -2714,11 +2758,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:8874:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // InternalPerspectiveDsl.g:8874:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalPerspectiveDsl.g:8975:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalPerspectiveDsl.g:8975:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             {
             mRULE_INT(); 
-            // InternalPerspectiveDsl.g:8874:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalPerspectiveDsl.g:8975:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -2727,7 +2771,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8874:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalPerspectiveDsl.g:8975:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -2738,7 +2782,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // InternalPerspectiveDsl.g:8874:36: ( '+' | '-' )?
+                    // InternalPerspectiveDsl.g:8975:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -2771,7 +2815,7 @@
 
             }
 
-            // InternalPerspectiveDsl.g:8874:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalPerspectiveDsl.g:8975:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -2783,7 +2827,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8874:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalPerspectiveDsl.g:8975:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -2807,7 +2851,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:8874:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalPerspectiveDsl.g:8975: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();
@@ -2840,10 +2884,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:8876:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // InternalPerspectiveDsl.g:8876:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalPerspectiveDsl.g:8977:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalPerspectiveDsl.g:8977:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // InternalPerspectiveDsl.g:8876:11: ( '^' )?
+            // InternalPerspectiveDsl.g:8977:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -2852,7 +2896,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8876:11: '^'
+                    // InternalPerspectiveDsl.g:8977:11: '^'
                     {
                     match('^'); 
 
@@ -2870,7 +2914,7 @@
                 recover(mse);
                 throw mse;}
 
-            // InternalPerspectiveDsl.g:8876:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalPerspectiveDsl.g:8977:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -2919,10 +2963,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:8878:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // InternalPerspectiveDsl.g:8878:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalPerspectiveDsl.g:8979:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalPerspectiveDsl.g:8979:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // InternalPerspectiveDsl.g:8878:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalPerspectiveDsl.g:8979:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -2940,10 +2984,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8878:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalPerspectiveDsl.g:8979:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // InternalPerspectiveDsl.g:8878:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalPerspectiveDsl.g:8979:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -2959,7 +3003,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:8878:21: '\\\\' .
+                    	    // InternalPerspectiveDsl.g:8979:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2967,7 +3011,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalPerspectiveDsl.g:8878:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalPerspectiveDsl.g:8979:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2987,7 +3031,7 @@
                         }
                     } while (true);
 
-                    // InternalPerspectiveDsl.g:8878:44: ( '\"' )?
+                    // InternalPerspectiveDsl.g:8979:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -2996,7 +3040,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:8878:44: '\"'
+                            // InternalPerspectiveDsl.g:8979:44: '\"'
                             {
                             match('\"'); 
 
@@ -3009,10 +3053,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:8878:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalPerspectiveDsl.g:8979:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // InternalPerspectiveDsl.g:8878:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalPerspectiveDsl.g:8979:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -3028,7 +3072,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:8878:55: '\\\\' .
+                    	    // InternalPerspectiveDsl.g:8979:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -3036,7 +3080,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalPerspectiveDsl.g:8878:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalPerspectiveDsl.g:8979:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -3056,7 +3100,7 @@
                         }
                     } while (true);
 
-                    // InternalPerspectiveDsl.g:8878:79: ( '\\'' )?
+                    // InternalPerspectiveDsl.g:8979:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -3065,7 +3109,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:8878:79: '\\''
+                            // InternalPerspectiveDsl.g:8979:79: '\\''
                             {
                             match('\''); 
 
@@ -3096,12 +3140,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:8880:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // InternalPerspectiveDsl.g:8880:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalPerspectiveDsl.g:8981:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalPerspectiveDsl.g:8981:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // InternalPerspectiveDsl.g:8880:24: ( options {greedy=false; } : . )*
+            // InternalPerspectiveDsl.g:8981:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -3126,7 +3170,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:8880:52: .
+            	    // InternalPerspectiveDsl.g:8981:52: .
             	    {
             	    matchAny(); 
 
@@ -3156,12 +3200,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:8882:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // InternalPerspectiveDsl.g:8882:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalPerspectiveDsl.g:8983:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalPerspectiveDsl.g:8983:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // InternalPerspectiveDsl.g:8882:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalPerspectiveDsl.g:8983:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -3174,7 +3218,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:8882:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalPerspectiveDsl.g:8983: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();
@@ -3194,7 +3238,7 @@
                 }
             } while (true);
 
-            // InternalPerspectiveDsl.g:8882:40: ( ( '\\r' )? '\\n' )?
+            // InternalPerspectiveDsl.g:8983:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -3203,9 +3247,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8882:41: ( '\\r' )? '\\n'
+                    // InternalPerspectiveDsl.g:8983:41: ( '\\r' )? '\\n'
                     {
-                    // InternalPerspectiveDsl.g:8882:41: ( '\\r' )?
+                    // InternalPerspectiveDsl.g:8983:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -3214,7 +3258,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:8882:41: '\\r'
+                            // InternalPerspectiveDsl.g:8983:41: '\\r'
                             {
                             match('\r'); 
 
@@ -3246,10 +3290,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:8884:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // InternalPerspectiveDsl.g:8884:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalPerspectiveDsl.g:8985:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalPerspectiveDsl.g:8985:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // InternalPerspectiveDsl.g:8884:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalPerspectiveDsl.g:8985:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -3303,8 +3347,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:8886:16: ( . )
-            // InternalPerspectiveDsl.g:8886:18: .
+            // InternalPerspectiveDsl.g:8987:16: ( . )
+            // InternalPerspectiveDsl.g:8987:18: .
             {
             matchAny(); 
 
@@ -3319,8 +3363,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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt21=121;
+        // InternalPerspectiveDsl.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=123;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
@@ -4108,63 +4152,77 @@
                 }
                 break;
             case 113 :
-                // InternalPerspectiveDsl.g:1:707: RULE_HEX
+                // InternalPerspectiveDsl.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // InternalPerspectiveDsl.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // InternalPerspectiveDsl.g:1:721: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 114 :
-                // InternalPerspectiveDsl.g:1:716: RULE_INT
+            case 116 :
+                // InternalPerspectiveDsl.g:1:730: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 115 :
-                // InternalPerspectiveDsl.g:1:725: RULE_DECIMAL
+            case 117 :
+                // InternalPerspectiveDsl.g:1:739: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 116 :
-                // InternalPerspectiveDsl.g:1:738: RULE_ID
+            case 118 :
+                // InternalPerspectiveDsl.g:1:752: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 117 :
-                // InternalPerspectiveDsl.g:1:746: RULE_STRING
+            case 119 :
+                // InternalPerspectiveDsl.g:1:760: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 118 :
-                // InternalPerspectiveDsl.g:1:758: RULE_ML_COMMENT
+            case 120 :
+                // InternalPerspectiveDsl.g:1:772: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 119 :
-                // InternalPerspectiveDsl.g:1:774: RULE_SL_COMMENT
+            case 121 :
+                // InternalPerspectiveDsl.g:1:788: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 120 :
-                // InternalPerspectiveDsl.g:1:790: RULE_WS
+            case 122 :
+                // InternalPerspectiveDsl.g:1:804: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 121 :
-                // InternalPerspectiveDsl.g:1:798: RULE_ANY_OTHER
+            case 123 :
+                // InternalPerspectiveDsl.g:1:812: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -4178,40 +4236,39 @@
 
     protected DFA21 dfa21 = new DFA21(this);
     static final String DFA21_eotS =
-        "\1\uffff\1\67\2\uffff\20\67\1\146\1\67\5\uffff\1\161\3\uffff\1\167\1\173\1\177\1\u0081\1\u0083\1\u0085\1\u0087\1\u0089\1\u008b\1\u008d\1\u0090\1\u0092\1\67\2\u0096\1\63\5\uffff\3\67\3\uffff\3\67\1\u00a3\3\67\1\u00a8\1\67\1\u00aa\1\67\1\u00ac\15\67\1\u00be\20\67\3\uffff\1\u00d4\2\67\5\uffff\1\u00d8\32\uffff\1\u00da\1\uffff\1\u00dc\6\uffff\1\67\1\uffff\1\u0096\4\uffff\11\67\1\uffff\4\67\1\uffff\1\67\1\uffff\1\67\1\uffff\4\67\1\u00f1\14\67\1\uffff\1\67\1\u00ff\1\u0100\16\67\1\u010f\3\67\1\uffff\1\u0113\1\67\6\uffff\2\67\1\u0118\20\67\1\u0129\1\uffff\14\67\1\u0136\2\uffff\1\67\1\u0138\1\u0139\1\67\1\u013b\1\u013c\10\67\1\uffff\2\67\1\u0147\1\uffff\1\u0148\3\67\1\uffff\3\67\1\u014f\13\67\1\u015b\1\uffff\1\67\1\u015d\6\67\1\u0164\3\67\1\uffff\1\67\2\uffff\1\u0169\2\uffff\1\u016a\4\67\1\u016f\2\67\1\u0172\1\67\2\uffff\6\67\1\uffff\1\67\1\u017c\5\67\1\u0182\3\67\1\uffff\1\u0186\1\uffff\1\67\1\u0189\1\u018a\1\67\1\u018c\1\u018d\1\uffff\4\67\2\uffff\1\u0192\1\u0193\1\u0194\1\67\1\uffff\2\67\1\uffff\3\67\1\u019b\2\67\1\u019e\1\67\1\u01a0\1\uffff\2\67\1\u01a3\2\67\1\uffff\1\67\1\u01a7\1\67\1\uffff\2\67\2\uffff\1\67\2\uffff\4\67\3\uffff\1\u01b0\1\67\1\u01b2\1\67\1\u01b4\1\67\1\uffff\2\67\1\uffff\1\67\1\uffff\1\67\1\u01ba\1\uffff\3\67\1\uffff\1\u01be\6\67\1\u01c5\1\uffff\1\67\1\uffff\1\67\1\uffff\1\67\1\u01c9\3\67\1\uffff\3\67\1\uffff\6\67\1\uffff\1\67\1\u01d7\1\67\1\uffff\3\67\1\u01dc\1\u01dd\6\67\1\u01e4\1\67\1\uffff\1\u01e6\1\u01e7\1\u01e8\1\67\2\uffff\3\67\1\u01ed\1\67\1\u01ef\1\uffff\1\67\3\uffff\4\67\1\uffff\1\u01f5\1\uffff\2\67\1\u01f8\1\u01f9\1\67\1\uffff\1\u01fb\1\67\2\uffff\1\67\1\uffff\1\u01fe\1\u01ff\2\uffff";
+        "\1\uffff\1\66\2\uffff\20\66\1\151\5\uffff\1\161\3\uffff\1\167\1\173\1\177\1\u0081\1\u0083\1\u0085\1\u0087\1\u0089\1\u008b\1\u008d\1\u0090\1\u0092\1\66\2\u0096\1\62\5\uffff\3\66\3\uffff\3\66\1\u00a3\3\66\1\u00a8\1\66\1\u00aa\1\66\1\u00ac\15\66\1\u00be\21\66\1\u00d6\2\66\10\uffff\1\u00da\32\uffff\1\u00dc\1\uffff\1\u00de\6\uffff\1\66\1\uffff\1\u0096\4\uffff\11\66\1\uffff\4\66\1\uffff\1\66\1\uffff\1\66\1\uffff\4\66\1\u00f3\14\66\1\uffff\1\66\1\u0101\1\u0102\21\66\1\u0114\2\66\1\uffff\1\u0117\1\66\6\uffff\2\66\1\u011c\20\66\1\u012d\1\uffff\14\66\1\u013a\2\uffff\6\66\1\u0141\1\66\1\u0143\1\u0144\1\66\1\u0146\5\66\1\uffff\1\66\1\u014d\1\uffff\1\u014e\3\66\1\uffff\3\66\1\u0155\13\66\1\u0161\1\uffff\1\66\1\u0163\6\66\1\u016a\3\66\1\uffff\6\66\1\uffff\1\u0175\2\uffff\1\u0176\1\uffff\2\66\1\u0179\2\66\1\u017c\2\uffff\6\66\1\uffff\1\66\1\u0184\5\66\1\u018a\3\66\1\uffff\1\u018e\1\uffff\1\66\1\u0191\1\u0192\1\66\1\u0194\1\u0195\1\uffff\5\66\1\u019b\1\u019c\3\66\2\uffff\1\u01a0\1\66\1\uffff\2\66\1\uffff\1\66\1\u01a5\2\66\1\u01a8\1\66\1\u01aa\1\uffff\2\66\1\u01ad\2\66\1\uffff\1\66\1\u01b1\1\66\1\uffff\2\66\2\uffff\1\66\2\uffff\5\66\2\uffff\2\66\1\u01bd\1\uffff\1\u01be\1\66\1\u01c0\1\66\1\uffff\2\66\1\uffff\1\66\1\uffff\1\66\1\u01c6\1\uffff\3\66\1\uffff\1\u01ca\6\66\1\u01d1\3\66\2\uffff\1\66\1\uffff\1\66\1\u01d7\3\66\1\uffff\3\66\1\uffff\6\66\1\uffff\2\66\1\u01e6\2\66\1\uffff\3\66\1\u01ec\1\u01ed\6\66\1\u01f4\2\66\1\uffff\1\66\1\u01f8\1\u01f9\1\u01fa\1\66\2\uffff\3\66\1\u01ff\1\66\1\u0201\1\uffff\3\66\3\uffff\4\66\1\uffff\1\u0209\1\uffff\4\66\1\u020e\1\u020f\1\66\1\uffff\1\u0211\1\u0212\1\u0213\1\66\2\uffff\1\66\3\uffff\1\u0216\1\u0217\2\uffff";
     static final String DFA21_eofS =
-        "\u0200\uffff";
+        "\u0218\uffff";
     static final String DFA21_minS =
-        "\1\0\1\141\2\uffff\1\141\1\163\2\143\2\141\1\146\1\141\1\162\1\145\1\141\1\145\1\141\1\145\1\141\1\154\1\52\1\145\5\uffff\1\75\3\uffff\1\53\1\55\1\52\1\75\1\76\1\75\1\174\1\46\1\75\2\56\1\72\1\157\2\60\1\44\5\uffff\1\143\1\162\1\157\3\uffff\1\146\1\141\1\164\1\44\1\145\1\157\1\103\1\44\1\160\1\44\1\143\1\44\1\157\1\142\1\165\1\160\1\162\1\163\3\141\1\151\1\160\1\156\1\147\1\44\1\145\1\154\1\162\1\151\2\141\1\162\1\160\1\156\1\154\1\151\1\154\1\162\1\154\1\164\1\163\3\uffff\1\44\1\167\1\154\5\uffff\1\75\32\uffff\1\75\1\uffff\1\74\6\uffff\1\162\1\uffff\1\60\4\uffff\1\153\1\164\1\163\2\143\1\164\1\141\1\154\1\141\1\uffff\1\162\1\156\1\154\1\164\1\uffff\1\157\1\uffff\1\145\1\uffff\1\154\1\157\1\154\1\145\1\44\1\145\1\157\1\150\1\145\1\162\1\143\2\164\1\145\1\143\1\145\1\141\1\uffff\1\167\2\44\1\164\1\144\1\156\1\162\1\144\1\145\1\143\1\157\1\165\1\142\1\143\1\154\1\164\1\141\1\44\1\163\2\145\1\uffff\1\44\1\154\6\uffff\1\151\1\141\1\44\1\160\1\145\1\162\1\150\1\165\1\157\1\111\1\164\1\125\1\157\1\141\1\162\1\163\1\142\1\154\1\145\1\44\1\uffff\1\157\1\167\1\103\2\143\1\145\1\151\1\143\1\162\1\150\2\156\1\44\2\uffff\1\151\2\44\1\164\2\44\1\150\2\162\1\141\1\157\2\145\1\154\1\uffff\1\145\1\156\1\44\1\uffff\1\44\1\172\1\147\1\164\1\uffff\1\145\1\163\1\151\1\44\1\154\1\147\1\156\1\141\1\122\1\163\1\156\1\164\1\163\1\141\1\157\1\44\1\uffff\1\146\1\44\1\157\1\164\1\150\1\126\1\143\1\150\1\44\1\162\1\164\1\151\1\uffff\1\143\2\uffff\1\44\2\uffff\1\44\1\164\2\156\1\155\1\44\1\162\1\154\1\44\1\144\2\uffff\1\157\1\145\1\141\1\143\1\163\1\142\1\uffff\1\164\1\44\1\164\1\163\1\111\1\141\1\143\1\44\1\151\1\162\1\147\1\uffff\1\44\1\uffff\1\156\2\44\1\157\2\44\1\uffff\1\157\1\141\1\147\1\141\2\uffff\3\44\1\145\1\uffff\1\103\1\171\1\uffff\1\151\1\163\1\156\1\44\1\143\1\164\1\44\1\145\1\44\1\uffff\1\145\1\153\1\44\1\142\1\145\1\uffff\1\142\1\44\1\171\1\uffff\1\164\1\144\2\uffff\1\154\2\uffff\1\156\1\164\1\162\1\154\3\uffff\1\44\1\157\1\44\1\157\1\44\1\164\1\uffff\1\153\1\151\1\uffff\1\144\1\uffff\1\162\1\44\1\uffff\1\154\1\157\1\151\1\uffff\1\44\1\141\1\105\1\165\2\151\1\141\1\44\1\uffff\1\154\1\uffff\1\156\1\uffff\1\141\1\44\1\166\1\102\1\143\1\uffff\1\145\1\146\1\154\1\uffff\1\151\1\154\1\155\1\172\1\157\1\155\1\uffff\1\165\1\44\1\154\1\uffff\1\145\1\171\1\150\2\44\1\151\1\156\3\145\1\156\1\44\1\155\1\uffff\3\44\1\141\2\uffff\1\164\1\145\1\155\1\44\1\144\1\44\1\uffff\1\156\3\uffff\1\156\1\171\1\162\1\145\1\uffff\1\44\1\uffff\1\163\1\147\2\44\1\156\1\uffff\1\44\1\145\2\uffff\1\164\1\uffff\2\44\2\uffff";
+        "\1\0\1\141\2\uffff\1\141\1\163\2\143\1\150\1\141\1\146\1\141\1\145\1\144\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\157\1\103\1\44\1\160\1\44\1\143\1\44\1\157\1\164\1\165\1\160\1\162\1\163\3\141\1\151\1\160\1\156\1\147\1\44\1\145\1\154\1\162\1\141\1\151\1\164\1\163\1\141\1\162\1\155\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\156\1\154\1\164\1\uffff\1\157\1\uffff\1\145\1\uffff\1\154\1\157\1\154\1\145\1\44\1\145\1\157\1\150\1\145\1\162\1\143\2\164\1\145\1\143\1\145\1\141\1\uffff\1\167\2\44\1\164\1\144\1\157\1\165\1\164\2\145\1\162\1\144\1\145\1\143\1\156\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\125\1\157\1\141\1\162\1\163\1\142\1\154\1\145\1\44\1\uffff\1\157\1\167\1\103\2\143\1\145\1\151\1\143\1\162\1\150\2\156\1\44\2\uffff\1\151\1\117\2\162\1\141\1\156\1\44\1\164\2\44\1\150\1\44\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\141\1\157\1\44\1\uffff\1\146\1\44\1\157\1\164\1\150\1\126\1\143\1\150\1\44\1\162\1\164\1\151\1\uffff\1\143\1\156\1\164\1\156\1\142\1\144\1\uffff\1\44\2\uffff\1\44\1\uffff\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\162\1\147\1\uffff\1\44\1\uffff\1\156\2\44\1\157\2\44\1\uffff\1\157\1\141\1\147\1\141\1\154\2\44\1\154\1\151\1\163\2\uffff\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\44\1\171\1\uffff\1\164\1\144\2\uffff\1\154\2\uffff\1\156\1\164\1\162\1\154\1\171\2\uffff\1\145\1\157\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\uffff\1\44\1\141\1\105\1\165\2\151\1\141\1\44\2\124\1\156\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\uffff\1\151\1\154\1\155\1\172\1\157\1\155\1\uffff\2\141\1\44\1\165\1\154\1\uffff\1\145\1\171\1\150\2\44\1\151\1\156\3\145\1\156\1\44\2\142\1\uffff\1\155\3\44\1\141\2\uffff\1\164\1\145\1\155\1\44\1\144\1\44\1\uffff\2\154\1\156\3\uffff\1\156\1\171\1\162\1\145\1\uffff\1\44\1\uffff\2\145\1\163\1\147\2\44\1\156\1\uffff\3\44\1\145\2\uffff\1\164\3\uffff\2\44\2\uffff";
     static final String DFA21_maxS =
-        "\1\uffff\1\162\2\uffff\1\157\3\163\2\171\1\162\1\151\1\162\1\145\1\150\1\145\1\141\1\150\1\157\1\170\1\75\1\165\5\uffff\1\76\3\uffff\1\75\1\76\2\75\1\76\1\75\1\174\1\46\1\75\1\56\2\72\1\157\1\170\1\154\1\172\5\uffff\2\162\1\157\3\uffff\1\163\1\141\1\164\1\172\1\145\1\157\1\103\1\172\1\160\1\172\1\143\1\172\1\160\1\142\1\171\1\160\1\162\1\163\1\154\2\141\1\151\1\160\1\156\1\151\1\172\1\145\2\162\1\151\2\141\2\164\1\156\1\154\1\151\1\156\1\162\1\154\1\164\1\163\3\uffff\1\172\1\167\1\154\5\uffff\1\75\32\uffff\1\75\1\uffff\1\74\6\uffff\1\162\1\uffff\1\154\4\uffff\1\153\1\164\1\163\2\143\1\164\1\141\1\154\1\141\1\uffff\1\162\1\156\1\154\1\164\1\uffff\1\157\1\uffff\1\145\1\uffff\1\154\1\157\1\154\1\145\1\172\1\145\1\157\1\150\1\145\1\162\1\143\2\164\1\145\1\143\1\145\1\141\1\uffff\1\167\2\172\1\164\1\144\1\156\1\162\1\144\1\145\1\143\1\157\1\165\1\142\1\143\1\154\1\164\1\141\1\172\1\163\2\145\1\uffff\1\172\1\154\6\uffff\1\151\1\141\1\172\1\160\1\145\1\162\1\150\1\165\1\157\1\111\1\164\1\125\1\157\1\141\1\162\1\163\1\142\1\154\1\145\1\172\1\uffff\1\157\1\167\1\103\2\143\1\145\1\151\1\143\1\162\1\150\2\156\1\172\2\uffff\1\151\2\172\1\164\2\172\1\150\2\162\1\141\1\157\2\145\1\154\1\uffff\1\145\1\156\1\172\1\uffff\2\172\1\147\1\164\1\uffff\1\145\1\163\1\151\1\172\1\154\1\147\1\156\1\141\1\122\1\163\1\156\1\164\1\163\1\141\1\157\1\172\1\uffff\1\146\1\172\1\157\1\164\1\150\1\126\1\143\1\150\1\172\1\162\1\164\1\151\1\uffff\1\143\2\uffff\1\172\2\uffff\1\172\1\164\2\156\1\155\1\172\1\162\1\154\1\172\1\163\2\uffff\1\157\1\145\1\141\1\143\1\163\1\142\1\uffff\1\164\1\172\1\164\1\163\1\111\1\141\1\143\1\172\1\151\1\162\1\147\1\uffff\1\172\1\uffff\1\156\2\172\1\157\2\172\1\uffff\1\157\1\141\1\147\1\141\2\uffff\3\172\1\145\1\uffff\1\103\1\171\1\uffff\1\151\1\163\1\156\1\172\1\143\1\164\1\172\1\145\1\172\1\uffff\1\145\1\153\1\172\1\142\1\145\1\uffff\1\142\1\172\1\171\1\uffff\1\164\1\144\2\uffff\1\154\2\uffff\1\156\1\164\1\162\1\154\3\uffff\1\172\1\157\1\172\1\157\1\172\1\164\1\uffff\1\153\1\151\1\uffff\1\144\1\uffff\1\162\1\172\1\uffff\1\154\1\157\1\151\1\uffff\1\172\1\141\1\105\1\165\2\151\1\141\1\172\1\uffff\1\154\1\uffff\1\156\1\uffff\1\141\1\172\1\166\1\102\1\143\1\uffff\1\145\1\146\1\154\1\uffff\1\151\1\154\1\155\1\172\1\157\1\155\1\uffff\1\165\1\172\1\154\1\uffff\1\145\1\171\1\150\2\172\1\151\1\156\3\145\1\156\1\172\1\155\1\uffff\3\172\1\141\2\uffff\1\164\1\145\1\155\1\172\1\144\1\172\1\uffff\1\156\3\uffff\1\156\1\171\1\162\1\145\1\uffff\1\172\1\uffff\1\163\1\147\2\172\1\156\1\uffff\1\172\1\145\2\uffff\1\164\1\uffff\2\172\2\uffff";
+        "\1\uffff\1\162\2\uffff\1\157\3\163\2\171\1\162\1\151\1\145\1\170\1\150\1\160\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\157\1\103\1\172\1\160\1\172\1\143\1\172\1\160\1\164\1\171\1\160\1\162\1\163\1\154\2\141\1\151\1\160\1\156\1\151\1\172\1\145\2\162\1\164\1\151\1\164\1\163\1\141\1\164\1\155\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\156\1\154\1\164\1\uffff\1\157\1\uffff\1\145\1\uffff\1\154\1\157\1\154\1\145\1\172\1\145\1\157\1\150\1\145\1\162\1\143\2\164\1\145\1\143\1\145\1\141\1\uffff\1\167\2\172\1\164\1\144\1\157\1\165\1\164\2\145\1\162\1\144\1\145\1\143\1\156\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\125\1\157\1\141\1\162\1\163\1\142\1\154\1\145\1\172\1\uffff\1\157\1\167\1\103\2\143\1\145\1\151\1\143\1\162\1\150\2\156\1\172\2\uffff\1\151\1\117\2\162\1\141\1\156\1\172\1\164\2\172\1\150\1\172\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\141\1\157\1\172\1\uffff\1\146\1\172\1\157\1\164\1\150\1\126\1\143\1\150\1\172\1\162\1\164\1\151\1\uffff\1\143\1\156\1\164\1\156\1\142\1\163\1\uffff\1\172\2\uffff\1\172\1\uffff\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\162\1\147\1\uffff\1\172\1\uffff\1\156\2\172\1\157\2\172\1\uffff\1\157\1\141\1\147\1\141\1\154\2\172\1\154\1\151\1\163\2\uffff\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\172\1\171\1\uffff\1\164\1\144\2\uffff\1\154\2\uffff\1\156\1\164\1\162\1\154\1\171\2\uffff\1\145\1\157\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\uffff\1\172\1\141\1\105\1\165\2\151\1\141\1\172\2\124\1\156\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\uffff\1\151\1\154\1\155\1\172\1\157\1\155\1\uffff\2\141\1\172\1\165\1\154\1\uffff\1\145\1\171\1\150\2\172\1\151\1\156\3\145\1\156\1\172\2\142\1\uffff\1\155\3\172\1\141\2\uffff\1\164\1\145\1\155\1\172\1\144\1\172\1\uffff\2\154\1\156\3\uffff\1\156\1\171\1\162\1\145\1\uffff\1\172\1\uffff\2\145\1\163\1\147\2\172\1\156\1\uffff\3\172\1\145\2\uffff\1\164\3\uffff\2\172\2\uffff";
     static final String DFA21_acceptS =
-        "\2\uffff\1\2\1\3\22\uffff\1\52\1\53\1\54\1\55\1\56\1\uffff\1\60\1\61\1\62\20\uffff\1\164\2\165\1\170\1\171\3\uffff\1\164\1\2\1\3\52\uffff\1\65\1\112\1\50\3\uffff\1\52\1\53\1\54\1\55\1\56\1\uffff\1\105\1\57\1\60\1\61\1\62\1\63\1\117\1\110\1\64\1\102\1\120\1\111\1\66\1\166\1\167\1\113\1\67\1\114\1\106\1\70\1\72\1\71\1\73\1\124\1\74\1\156\1\uffff\1\115\1\uffff\1\121\1\107\1\123\1\155\1\122\1\130\1\uffff\1\161\1\uffff\1\162\1\163\1\165\1\170\11\uffff\1\135\4\uffff\1\41\1\uffff\1\125\1\uffff\1\116\21\uffff\1\35\25\uffff\1\51\2\uffff\1\77\1\75\1\100\1\76\1\103\1\104\24\uffff\1\151\15\uffff\1\136\1\137\16\uffff\1\133\3\uffff\1\142\4\uffff\1\20\20\uffff\1\144\14\uffff\1\21\1\uffff\1\25\1\26\1\uffff\1\36\1\132\12\uffff\1\126\1\145\6\uffff\1\42\13\uffff\1\24\1\uffff\1\147\6\uffff\1\141\4\uffff\1\27\1\154\4\uffff\1\134\2\uffff\1\143\11\uffff\1\33\5\uffff\1\45\3\uffff\1\146\2\uffff\1\23\1\40\1\uffff\1\46\1\127\4\uffff\1\30\1\150\1\34\6\uffff\1\1\2\uffff\1\6\1\uffff\1\131\2\uffff\1\10\3\uffff\1\12\10\uffff\1\37\1\uffff\1\152\1\uffff\1\140\5\uffff\1\7\3\uffff\1\32\6\uffff\1\160\3\uffff\1\17\15\uffff\1\47\4\uffff\1\22\1\101\6\uffff\1\31\1\uffff\1\157\1\4\1\5\4\uffff\1\16\1\uffff\1\14\5\uffff\1\153\2\uffff\1\11\1\13\1\uffff\1\43\2\uffff\1\44\1\15";
+        "\2\uffff\1\2\1\3\21\uffff\1\54\1\55\1\56\1\57\1\60\1\uffff\1\62\1\63\1\64\20\uffff\1\166\2\167\1\172\1\173\3\uffff\1\166\1\2\1\3\56\uffff\1\67\1\114\1\52\1\54\1\55\1\56\1\57\1\60\1\uffff\1\107\1\61\1\62\1\63\1\64\1\65\1\121\1\112\1\66\1\104\1\122\1\113\1\70\1\170\1\171\1\115\1\71\1\116\1\110\1\72\1\74\1\73\1\75\1\126\1\76\1\160\1\uffff\1\117\1\uffff\1\123\1\111\1\125\1\157\1\124\1\132\1\uffff\1\163\1\uffff\1\164\1\165\1\167\1\172\11\uffff\1\137\4\uffff\1\41\1\uffff\1\127\1\uffff\1\120\21\uffff\1\35\27\uffff\1\53\2\uffff\1\101\1\77\1\102\1\100\1\105\1\106\24\uffff\1\153\15\uffff\1\140\1\141\21\uffff\1\135\2\uffff\1\144\4\uffff\1\20\20\uffff\1\146\14\uffff\1\21\6\uffff\1\130\1\uffff\1\36\1\134\1\uffff\1\33\6\uffff\1\46\1\147\6\uffff\1\42\13\uffff\1\45\1\uffff\1\151\6\uffff\1\143\12\uffff\1\26\1\156\2\uffff\1\136\2\uffff\1\145\7\uffff\1\32\5\uffff\1\47\3\uffff\1\150\2\uffff\1\23\1\40\1\uffff\1\50\1\131\5\uffff\1\27\1\152\3\uffff\1\34\4\uffff\1\1\2\uffff\1\6\1\uffff\1\133\2\uffff\1\10\3\uffff\1\12\13\uffff\1\142\1\37\1\uffff\1\154\5\uffff\1\7\3\uffff\1\31\6\uffff\1\162\5\uffff\1\17\16\uffff\1\51\5\uffff\1\22\1\103\6\uffff\1\30\3\uffff\1\161\1\4\1\5\4\uffff\1\16\1\uffff\1\14\7\uffff\1\155\4\uffff\1\11\1\13\1\uffff\1\24\1\25\1\43\2\uffff\1\44\1\15";
     static final String DFA21_specialS =
-        "\1\0\u01ff\uffff}>";
+        "\1\0\u0217\uffff}>";
     static final String[] DFA21_transitionS = {
-            "\11\63\2\62\2\63\1\62\22\63\1\62\1\47\1\60\1\34\1\57\1\42\1\46\1\61\1\30\1\32\1\24\1\37\1\31\1\40\1\50\1\41\1\54\11\55\1\52\1\26\1\43\1\33\1\44\1\51\1\27\32\57\1\35\1\63\1\36\1\56\1\57\1\63\1\7\1\15\1\16\1\4\1\23\1\22\1\14\1\53\1\6\1\57\1\20\2\57\1\25\1\12\1\1\1\57\1\17\1\11\1\10\1\5\1\13\1\21\3\57\1\2\1\45\1\3\uff82\63",
-            "\1\64\3\uffff\1\65\14\uffff\1\66",
+            "\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\15\1\22\1\56\1\52\1\6\1\56\1\20\2\56\1\23\1\12\1\1\1\56\1\14\1\11\1\10\1\5\1\13\1\21\3\56\1\2\1\44\1\3\uff82\62",
+            "\1\63\3\uffff\1\64\14\uffff\1\65",
             "",
             "",
-            "\1\74\3\uffff\1\72\3\uffff\1\73\5\uffff\1\75",
-            "\1\76",
-            "\1\77\2\uffff\1\103\6\uffff\1\102\1\101\4\uffff\1\100",
-            "\1\104\17\uffff\1\105",
-            "\1\107\6\uffff\1\112\6\uffff\1\106\2\uffff\1\110\6\uffff\1\111",
-            "\1\113\3\uffff\1\114\12\uffff\1\115\3\uffff\1\116\1\120\1\uffff\1\117\1\uffff\1\121",
-            "\1\123\13\uffff\1\122",
-            "\1\125\3\uffff\1\126\3\uffff\1\124",
-            "\1\127",
-            "\1\130",
-            "\1\132\6\uffff\1\131",
-            "\1\133",
+            "\1\73\3\uffff\1\71\3\uffff\1\72\5\uffff\1\74",
+            "\1\75",
+            "\1\76\2\uffff\1\102\6\uffff\1\101\1\100\4\uffff\1\77",
+            "\1\103\17\uffff\1\104",
+            "\1\111\1\106\5\uffff\1\105\2\uffff\1\107\6\uffff\1\110",
+            "\1\112\3\uffff\1\113\12\uffff\1\114\3\uffff\1\115\1\117\1\uffff\1\116\1\uffff\1\120",
+            "\1\122\13\uffff\1\121",
+            "\1\124\3\uffff\1\125\3\uffff\1\123",
+            "\1\126",
+            "\1\127\7\uffff\1\131\13\uffff\1\130",
+            "\1\133\6\uffff\1\132",
             "\1\134",
-            "\1\135\2\uffff\1\136",
-            "\1\141\7\uffff\1\137\5\uffff\1\140",
-            "\1\143\13\uffff\1\142",
-            "\1\145\22\uffff\1\144",
-            "\1\150\15\uffff\1\147\1\uffff\1\151",
+            "\1\135",
+            "\1\136\2\uffff\1\137",
+            "\1\142\7\uffff\1\140\5\uffff\1\141",
+            "\1\143\3\uffff\1\145\15\uffff\1\144\1\uffff\1\146",
+            "\1\150\22\uffff\1\147",
             "",
             "",
             "",
@@ -4236,7 +4293,7 @@
             "\1\u0093",
             "\12\u0095\10\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097\13\uffff\1\u0094\6\uffff\1\u0095\2\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097\13\uffff\1\u0094",
             "\12\u0095\10\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097\22\uffff\1\u0095\2\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097",
-            "\1\67\34\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\66\34\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
             "",
             "",
@@ -4251,15 +4308,15 @@
             "\1\u00a0\11\uffff\1\u009f\2\uffff\1\u009e",
             "\1\u00a1",
             "\1\u00a2",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u00a4",
             "\1\u00a5",
             "\1\u00a6",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\22\67\1\u00a7\7\67",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\22\66\1\u00a7\7\66",
             "\1\u00a9",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u00ab",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u00ad\1\u00ae",
             "\1\u00af",
             "\1\u00b0\3\uffff\1\u00b1",
@@ -4273,53 +4330,27 @@
             "\1\u00ba",
             "\1\u00bb",
             "\1\u00bd\1\uffff\1\u00bc",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u00bf",
             "\1\u00c1\5\uffff\1\u00c0",
             "\1\u00c2",
-            "\1\u00c3",
-            "\1\u00c4",
-            "\1\u00c5",
-            "\1\u00c6\1\u00c7\1\u00c8",
-            "\1\u00c9\3\uffff\1\u00ca",
-            "\1\u00cb",
-            "\1\u00cc",
+            "\1\u00c3\16\uffff\1\u00c4\3\uffff\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c7",
+            "\1\u00c8",
+            "\1\u00c9",
+            "\1\u00ca\1\u00cb\1\u00cc",
             "\1\u00cd",
-            "\1\u00ce\1\uffff\1\u00cf",
+            "\1\u00ce",
+            "\1\u00cf",
             "\1\u00d0",
-            "\1\u00d1",
-            "\1\u00d2",
+            "\1\u00d1\1\uffff\1\u00d2",
             "\1\u00d3",
-            "",
-            "",
-            "",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u00d4",
             "\1\u00d5",
-            "\1\u00d6",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u00d7",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\u00d8",
             "",
             "",
             "",
@@ -4330,22 +4361,47 @@
             "",
             "\1\u00d9",
             "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u00db",
             "",
-            "",
-            "",
-            "",
-            "",
-            "",
             "\1\u00dd",
             "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00df",
+            "",
             "\12\u0095\10\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097\22\uffff\1\u0095\2\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097",
             "",
             "",
             "",
             "",
-            "\1\u00de",
-            "\1\u00df",
             "\1\u00e0",
             "\1\u00e1",
             "\1\u00e2",
@@ -4353,23 +4409,23 @@
             "\1\u00e4",
             "\1\u00e5",
             "\1\u00e6",
-            "",
             "\1\u00e7",
             "\1\u00e8",
+            "",
             "\1\u00e9",
             "\1\u00ea",
-            "",
             "\1\u00eb",
-            "",
             "\1\u00ec",
             "",
             "\1\u00ed",
+            "",
             "\1\u00ee",
+            "",
             "\1\u00ef",
             "\1\u00f0",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u00f1",
             "\1\u00f2",
-            "\1\u00f3",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u00f4",
             "\1\u00f5",
             "\1\u00f6",
@@ -4380,12 +4436,12 @@
             "\1\u00fb",
             "\1\u00fc",
             "\1\u00fd",
-            "",
             "\1\u00fe",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\u0101",
-            "\1\u0102",
+            "\1\u00ff",
+            "",
+            "\1\u0100",
+            "\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\u0103",
             "\1\u0104",
             "\1\u0105",
@@ -4398,26 +4454,26 @@
             "\1\u010c",
             "\1\u010d",
             "\1\u010e",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u010f",
             "\1\u0110",
             "\1\u0111",
             "\1\u0112",
-            "",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\u0114",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\u0113",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u0115",
             "\1\u0116",
-            "\1\67\13\uffff\12\67\7\uffff\22\67\1\u0117\7\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\u0118",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u0119",
             "\1\u011a",
-            "\1\u011b",
-            "\1\u011c",
+            "\1\66\13\uffff\12\66\7\uffff\22\66\1\u011b\7\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u011d",
             "\1\u011e",
             "\1\u011f",
@@ -4430,12 +4486,12 @@
             "\1\u0126",
             "\1\u0127",
             "\1\u0128",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "",
+            "\1\u0129",
             "\1\u012a",
             "\1\u012b",
             "\1\u012c",
-            "\1\u012d",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "",
             "\1\u012e",
             "\1\u012f",
             "\1\u0130",
@@ -4444,262 +4500,288 @@
             "\1\u0133",
             "\1\u0134",
             "\1\u0135",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "",
-            "",
+            "\1\u0136",
             "\1\u0137",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\u013a",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0138",
+            "\1\u0139",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "",
+            "",
+            "\1\u013b",
+            "\1\u013c",
             "\1\u013d",
             "\1\u013e",
             "\1\u013f",
             "\1\u0140",
-            "\1\u0141",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\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\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u0145",
-            "\1\u0146",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\u0147",
+            "\1\u0148",
             "\1\u0149",
             "\1\u014a",
             "\1\u014b",
             "",
             "\1\u014c",
-            "\1\u014d",
-            "\1\u014e",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\u014f",
             "\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\u0156",
             "\1\u0157",
             "\1\u0158",
             "\1\u0159",
             "\1\u015a",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "",
+            "\1\u015b",
             "\1\u015c",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u015d",
             "\1\u015e",
             "\1\u015f",
             "\1\u0160",
-            "\1\u0161",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "",
             "\1\u0162",
-            "\1\u0163",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\u0164",
             "\1\u0165",
             "\1\u0166",
             "\1\u0167",
-            "",
             "\1\u0168",
-            "",
-            "",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "",
-            "",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0169",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u016b",
             "\1\u016c",
             "\1\u016d",
+            "",
             "\1\u016e",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u016f",
             "\1\u0170",
             "\1\u0171",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0172",
             "\1\u0174\16\uffff\1\u0173",
             "",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
-            "\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\u0179",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u017a",
-            "",
             "\1\u017b",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "",
+            "",
             "\1\u017d",
             "\1\u017e",
             "\1\u017f",
             "\1\u0180",
             "\1\u0181",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0182",
+            "",
             "\1\u0183",
-            "\1\u0184",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u0185",
-            "",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "",
+            "\1\u0186",
             "\1\u0187",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\4\67\1\u0188\25\67",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u018b",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u018c",
+            "\1\u018d",
             "",
-            "\1\u018e",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "",
             "\1\u018f",
-            "\1\u0190",
-            "\1\u0191",
-            "",
-            "",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\u0195",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u0190\25\66",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\u0193",
+            "\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\u0196",
             "\1\u0197",
-            "",
             "\1\u0198",
             "\1\u0199",
             "\1\u019a",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\u019c",
+            "\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\u019d",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u019e",
             "\1\u019f",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "",
+            "",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u01a1",
+            "",
             "\1\u01a2",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01a3",
+            "",
             "\1\u01a4",
-            "\1\u01a5",
-            "",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u01a6",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\u01a8",
-            "",
+            "\1\u01a7",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u01a9",
-            "\1\u01aa",
-            "",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
             "\1\u01ab",
-            "",
-            "",
             "\1\u01ac",
-            "\1\u01ad",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u01ae",
             "\1\u01af",
             "",
+            "\1\u01b0",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\u01b2",
             "",
-            "",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\u01b1",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u01b3",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01b4",
+            "",
+            "",
             "\1\u01b5",
             "",
+            "",
             "\1\u01b6",
             "\1\u01b7",
-            "",
             "\1\u01b8",
-            "",
             "\1\u01b9",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01ba",
+            "",
             "",
             "\1\u01bb",
             "\1\u01bc",
-            "\1\u01bd",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\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\u01c4",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "",
-            "\1\u01c6",
+            "\1\u01c4",
+            "",
+            "\1\u01c5",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
             "\1\u01c7",
-            "",
             "\1\u01c8",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\u01ca",
+            "\1\u01c9",
+            "",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u01cb",
             "\1\u01cc",
-            "",
             "\1\u01cd",
             "\1\u01ce",
             "\1\u01cf",
-            "",
             "\1\u01d0",
-            "\1\u01d1",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u01d2",
             "\1\u01d3",
             "\1\u01d4",
+            "",
+            "",
             "\1\u01d5",
             "",
             "\1\u01d6",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u01d8",
-            "",
             "\1\u01d9",
             "\1\u01da",
+            "",
             "\1\u01db",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01dc",
+            "\1\u01dd",
+            "",
             "\1\u01de",
             "\1\u01df",
             "\1\u01e0",
             "\1\u01e1",
             "\1\u01e2",
             "\1\u01e3",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01e4",
             "\1\u01e5",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\u01e7",
+            "\1\u01e8",
             "",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u01e9",
-            "",
-            "",
             "\1\u01ea",
             "\1\u01eb",
-            "\1\u01ec",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u01ee",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "",
+            "\1\u01ef",
             "\1\u01f0",
-            "",
-            "",
-            "",
             "\1\u01f1",
             "\1\u01f2",
             "\1\u01f3",
-            "\1\u01f4",
-            "",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\u01f5",
             "\1\u01f6",
+            "",
             "\1\u01f7",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\u01fa",
+            "\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\u01fb",
             "",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
             "\1\u01fc",
-            "",
-            "",
             "\1\u01fd",
+            "\1\u01fe",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\u0200",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
-            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0202",
+            "\1\u0203",
+            "\1\u0204",
+            "",
+            "",
+            "",
+            "\1\u0205",
+            "\1\u0206",
+            "\1\u0207",
+            "\1\u0208",
+            "",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "",
+            "\1\u020a",
+            "\1\u020b",
+            "\1\u020c",
+            "\1\u020d",
+            "\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\u0210",
+            "",
+            "\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\u0214",
+            "",
+            "",
+            "\1\u0215",
+            "",
+            "",
+            "",
+            "\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",
             "",
             ""
     };
@@ -4734,7 +4816,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 | 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 | 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;
@@ -4766,13 +4848,13 @@
 
                         else if ( (LA21_0=='v') ) {s = 11;}
 
-                        else if ( (LA21_0=='g') ) {s = 12;}
+                        else if ( (LA21_0=='r') ) {s = 12;}
 
-                        else if ( (LA21_0=='b') ) {s = 13;}
+                        else if ( (LA21_0=='e') ) {s = 13;}
 
                         else if ( (LA21_0=='c') ) {s = 14;}
 
-                        else if ( (LA21_0=='r') ) {s = 15;}
+                        else if ( (LA21_0=='b') ) {s = 15;}
 
                         else if ( (LA21_0=='k') ) {s = 16;}
 
@@ -4780,71 +4862,69 @@
 
                         else if ( (LA21_0=='f') ) {s = 18;}
 
-                        else if ( (LA21_0=='e') ) {s = 19;}
+                        else if ( (LA21_0=='n') ) {s = 19;}
 
                         else if ( (LA21_0=='*') ) {s = 20;}
 
-                        else if ( (LA21_0=='n') ) {s = 21;}
+                        else if ( (LA21_0==';') ) {s = 21;}
 
-                        else if ( (LA21_0==';') ) {s = 22;}
+                        else if ( (LA21_0=='@') ) {s = 22;}
 
-                        else if ( (LA21_0=='@') ) {s = 23;}
+                        else if ( (LA21_0=='(') ) {s = 23;}
 
-                        else if ( (LA21_0=='(') ) {s = 24;}
+                        else if ( (LA21_0==',') ) {s = 24;}
 
-                        else if ( (LA21_0==',') ) {s = 25;}
+                        else if ( (LA21_0==')') ) {s = 25;}
 
-                        else if ( (LA21_0==')') ) {s = 26;}
+                        else if ( (LA21_0=='=') ) {s = 26;}
 
-                        else if ( (LA21_0=='=') ) {s = 27;}
+                        else if ( (LA21_0=='#') ) {s = 27;}
 
-                        else if ( (LA21_0=='#') ) {s = 28;}
+                        else if ( (LA21_0=='[') ) {s = 28;}
 
-                        else if ( (LA21_0=='[') ) {s = 29;}
+                        else if ( (LA21_0==']') ) {s = 29;}
 
-                        else if ( (LA21_0==']') ) {s = 30;}
+                        else if ( (LA21_0=='+') ) {s = 30;}
 
-                        else if ( (LA21_0=='+') ) {s = 31;}
+                        else if ( (LA21_0=='-') ) {s = 31;}
 
-                        else if ( (LA21_0=='-') ) {s = 32;}
+                        else if ( (LA21_0=='/') ) {s = 32;}
 
-                        else if ( (LA21_0=='/') ) {s = 33;}
+                        else if ( (LA21_0=='%') ) {s = 33;}
 
-                        else if ( (LA21_0=='%') ) {s = 34;}
+                        else if ( (LA21_0=='<') ) {s = 34;}
 
-                        else if ( (LA21_0=='<') ) {s = 35;}
+                        else if ( (LA21_0=='>') ) {s = 35;}
 
-                        else if ( (LA21_0=='>') ) {s = 36;}
+                        else if ( (LA21_0=='|') ) {s = 36;}
 
-                        else if ( (LA21_0=='|') ) {s = 37;}
+                        else if ( (LA21_0=='&') ) {s = 37;}
 
-                        else if ( (LA21_0=='&') ) {s = 38;}
+                        else if ( (LA21_0=='!') ) {s = 38;}
 
-                        else if ( (LA21_0=='!') ) {s = 39;}
+                        else if ( (LA21_0=='.') ) {s = 39;}
 
-                        else if ( (LA21_0=='.') ) {s = 40;}
+                        else if ( (LA21_0=='?') ) {s = 40;}
 
-                        else if ( (LA21_0=='?') ) {s = 41;}
+                        else if ( (LA21_0==':') ) {s = 41;}
 
-                        else if ( (LA21_0==':') ) {s = 42;}
+                        else if ( (LA21_0=='h') ) {s = 42;}
 
-                        else if ( (LA21_0=='h') ) {s = 43;}
+                        else if ( (LA21_0=='0') ) {s = 43;}
 
-                        else if ( (LA21_0=='0') ) {s = 44;}
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 44;}
 
-                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 45;}
+                        else if ( (LA21_0=='^') ) {s = 45;}
 
-                        else if ( (LA21_0=='^') ) {s = 46;}
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='g'||LA21_0=='j'||(LA21_0>='l' && LA21_0<='m')||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 46;}
 
-                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='j'||(LA21_0>='l' && LA21_0<='m')||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 47;}
+                        else if ( (LA21_0=='\"') ) {s = 47;}
 
-                        else if ( (LA21_0=='\"') ) {s = 48;}
+                        else if ( (LA21_0=='\'') ) {s = 48;}
 
-                        else if ( (LA21_0=='\'') ) {s = 49;}
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 49;}
 
-                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 50;}
-
-                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 51;}
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 50;}
 
                         if ( s>=0 ) return s;
                         break;
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslParser.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslParser.java
index 10fe850..780b81e 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
@@ -25,9 +25,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -38,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'", "'sashContainer'", "'orientation'", "'selectedElement'", "'spaceVolume'", "'partStack'", "'part'", "'view'", "'isClosable'", "'select'", "'table'", "'grid'", "'bean'", "'chart'", "'report'", "'organigram'", "'topology'", "'dialog'", "'kanban'", "'of'", "'card'", "'welcome'", "'search'", "'in'", "'depth'", "'filterColumns'", "'dataInterchange'", "'import'", "'static'", "'extension'", "'*'", "'ns'", "';'", "'@'", "'('", "','", "')'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'.'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'horizontal'", "'vertical'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_INT", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'perspective'", "'describedBy'", "'process'", "'usertask'", "'iconURI'", "'accessibility'", "'toolbar'", "'sashContainer'", "'orientation'", "'selectedElement'", "'spaceVolume'", "'partStack'", "'part'", "'view'", "'isClosable'", "'select'", "'readOnlyTable'", "'editableTable'", "'chart'", "'report'", "'organigram'", "'topology'", "'dialog'", "'bpmn'", "'kanban'", "'of'", "'card'", "'welcome'", "'search'", "'in'", "'depth'", "'filterColumns'", "'dataInterchange'", "'title'", "'name'", "'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;
@@ -61,7 +63,9 @@
     public static final int T__68=68;
     public static final int T__69=69;
     public static final int T__62=62;
+    public static final int T__126=126;
     public static final int T__63=63;
+    public static final int T__125=125;
     public static final int T__64=64;
     public static final int T__65=65;
     public static final int T__37=37;
@@ -266,7 +270,7 @@
             int alt1=2;
             int LA1_0 = input.LA(1);
 
-            if ( (LA1_0==49) ) {
+            if ( (LA1_0==51) ) {
                 alt1=1;
             }
             switch (alt1) {
@@ -3067,7 +3071,7 @@
 
 
     // $ANTLR start "rulePerspectiveView"
-    // InternalPerspectiveDsl.g:1139:1: rulePerspectiveView returns [EObject current=null] : (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveBean_3= rulePerspectiveBean | this_PerspectiveReport_4= rulePerspectiveReport | this_PerspectiveOrganization_5= rulePerspectiveOrganization | this_PerspectiveTopology_6= rulePerspectiveTopology | this_PerspectiveDialog_7= rulePerspectiveDialog | this_PerspectiveGrid_8= rulePerspectiveGrid | this_PerspectiveWelcome_9= rulePerspectiveWelcome | this_PerspectiveSearch_10= rulePerspectiveSearch | this_PerspectiveDataInterchange_11= rulePerspectiveDataInterchange | this_PerspectiveKanban_12= rulePerspectiveKanban ) ;
+    // InternalPerspectiveDsl.g:1139: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 ) ;
     public final EObject rulePerspectiveView() throws RecognitionException {
         EObject current = null;
 
@@ -3077,36 +3081,40 @@
 
         EObject this_PerspectiveChart_2 = null;
 
-        EObject this_PerspectiveBean_3 = null;
+        EObject this_PerspectiveReport_3 = null;
 
-        EObject this_PerspectiveReport_4 = null;
+        EObject this_PerspectiveOrganization_4 = null;
 
-        EObject this_PerspectiveOrganization_5 = null;
+        EObject this_PerspectiveTopology_5 = null;
 
-        EObject this_PerspectiveTopology_6 = null;
+        EObject this_PerspectiveDialog_6 = null;
 
-        EObject this_PerspectiveDialog_7 = null;
+        EObject this_PerspectiveGrid_7 = null;
 
-        EObject this_PerspectiveGrid_8 = null;
+        EObject this_PerspectiveWelcome_8 = null;
 
-        EObject this_PerspectiveWelcome_9 = null;
+        EObject this_PerspectiveSearch_9 = null;
 
-        EObject this_PerspectiveSearch_10 = null;
+        EObject this_PerspectiveDataInterchange_10 = null;
 
-        EObject this_PerspectiveDataInterchange_11 = null;
+        EObject this_PerspectiveBPMN_11 = null;
 
         EObject this_PerspectiveKanban_12 = null;
 
+        EObject this_PerspectiveTitle_13 = null;
+
+        EObject this_PerspectiveDashboard_14 = null;
+
 
 
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1145:2: ( (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveBean_3= rulePerspectiveBean | this_PerspectiveReport_4= rulePerspectiveReport | this_PerspectiveOrganization_5= rulePerspectiveOrganization | this_PerspectiveTopology_6= rulePerspectiveTopology | this_PerspectiveDialog_7= rulePerspectiveDialog | this_PerspectiveGrid_8= rulePerspectiveGrid | this_PerspectiveWelcome_9= rulePerspectiveWelcome | this_PerspectiveSearch_10= rulePerspectiveSearch | this_PerspectiveDataInterchange_11= rulePerspectiveDataInterchange | this_PerspectiveKanban_12= rulePerspectiveKanban ) )
-            // InternalPerspectiveDsl.g:1146:2: (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveBean_3= rulePerspectiveBean | this_PerspectiveReport_4= rulePerspectiveReport | this_PerspectiveOrganization_5= rulePerspectiveOrganization | this_PerspectiveTopology_6= rulePerspectiveTopology | this_PerspectiveDialog_7= rulePerspectiveDialog | this_PerspectiveGrid_8= rulePerspectiveGrid | this_PerspectiveWelcome_9= rulePerspectiveWelcome | this_PerspectiveSearch_10= rulePerspectiveSearch | this_PerspectiveDataInterchange_11= rulePerspectiveDataInterchange | this_PerspectiveKanban_12= rulePerspectiveKanban )
+            // InternalPerspectiveDsl.g:1145: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 ) )
+            // InternalPerspectiveDsl.g:1146: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 )
             {
-            // InternalPerspectiveDsl.g:1146:2: (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveBean_3= rulePerspectiveBean | this_PerspectiveReport_4= rulePerspectiveReport | this_PerspectiveOrganization_5= rulePerspectiveOrganization | this_PerspectiveTopology_6= rulePerspectiveTopology | this_PerspectiveDialog_7= rulePerspectiveDialog | this_PerspectiveGrid_8= rulePerspectiveGrid | this_PerspectiveWelcome_9= rulePerspectiveWelcome | this_PerspectiveSearch_10= rulePerspectiveSearch | this_PerspectiveDataInterchange_11= rulePerspectiveDataInterchange | this_PerspectiveKanban_12= rulePerspectiveKanban )
-            int alt15=13;
+            // InternalPerspectiveDsl.g:1146: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 )
+            int alt15=15;
             switch ( input.LA(1) ) {
             case 31:
                 {
@@ -3118,12 +3126,12 @@
                 alt15=2;
                 }
                 break;
-            case 35:
+            case 34:
                 {
                 alt15=3;
                 }
                 break;
-            case 34:
+            case 35:
                 {
                 alt15=4;
                 }
@@ -3143,27 +3151,27 @@
                 alt15=7;
                 }
                 break;
-            case 39:
+            case 33:
                 {
                 alt15=8;
                 }
                 break;
-            case 33:
+            case 43:
                 {
                 alt15=9;
                 }
                 break;
-            case 43:
+            case 44:
                 {
                 alt15=10;
                 }
                 break;
-            case 44:
+            case 48:
                 {
                 alt15=11;
                 }
                 break;
-            case 48:
+            case 39:
                 {
                 alt15=12;
                 }
@@ -3173,6 +3181,16 @@
                 alt15=13;
                 }
                 break;
+            case 49:
+                {
+                alt15=14;
+                }
+                break;
+            case 50:
+                {
+                alt15=15;
+                }
+                break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
@@ -3249,21 +3267,21 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:1174:3: this_PerspectiveBean_3= rulePerspectiveBean
+                    // InternalPerspectiveDsl.g:1174:3: this_PerspectiveReport_3= rulePerspectiveReport
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveBeanParserRuleCall_3());
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_3());
                       		
                     }
                     pushFollow(FOLLOW_2);
-                    this_PerspectiveBean_3=rulePerspectiveBean();
+                    this_PerspectiveReport_3=rulePerspectiveReport();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      			current = this_PerspectiveBean_3;
+                      			current = this_PerspectiveReport_3;
                       			afterParserOrEnumRuleCall();
                       		
                     }
@@ -3271,21 +3289,21 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:1183:3: this_PerspectiveReport_4= rulePerspectiveReport
+                    // InternalPerspectiveDsl.g:1183:3: this_PerspectiveOrganization_4= rulePerspectiveOrganization
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_4());
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_4());
                       		
                     }
                     pushFollow(FOLLOW_2);
-                    this_PerspectiveReport_4=rulePerspectiveReport();
+                    this_PerspectiveOrganization_4=rulePerspectiveOrganization();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      			current = this_PerspectiveReport_4;
+                      			current = this_PerspectiveOrganization_4;
                       			afterParserOrEnumRuleCall();
                       		
                     }
@@ -3293,21 +3311,21 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:1192:3: this_PerspectiveOrganization_5= rulePerspectiveOrganization
+                    // InternalPerspectiveDsl.g:1192:3: this_PerspectiveTopology_5= rulePerspectiveTopology
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_5());
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_5());
                       		
                     }
                     pushFollow(FOLLOW_2);
-                    this_PerspectiveOrganization_5=rulePerspectiveOrganization();
+                    this_PerspectiveTopology_5=rulePerspectiveTopology();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      			current = this_PerspectiveOrganization_5;
+                      			current = this_PerspectiveTopology_5;
                       			afterParserOrEnumRuleCall();
                       		
                     }
@@ -3315,21 +3333,21 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:1201:3: this_PerspectiveTopology_6= rulePerspectiveTopology
+                    // InternalPerspectiveDsl.g:1201:3: this_PerspectiveDialog_6= rulePerspectiveDialog
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_6());
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_6());
                       		
                     }
                     pushFollow(FOLLOW_2);
-                    this_PerspectiveTopology_6=rulePerspectiveTopology();
+                    this_PerspectiveDialog_6=rulePerspectiveDialog();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      			current = this_PerspectiveTopology_6;
+                      			current = this_PerspectiveDialog_6;
                       			afterParserOrEnumRuleCall();
                       		
                     }
@@ -3337,21 +3355,21 @@
                     }
                     break;
                 case 8 :
-                    // InternalPerspectiveDsl.g:1210:3: this_PerspectiveDialog_7= rulePerspectiveDialog
+                    // InternalPerspectiveDsl.g:1210:3: this_PerspectiveGrid_7= rulePerspectiveGrid
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_7());
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_7());
                       		
                     }
                     pushFollow(FOLLOW_2);
-                    this_PerspectiveDialog_7=rulePerspectiveDialog();
+                    this_PerspectiveGrid_7=rulePerspectiveGrid();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      			current = this_PerspectiveDialog_7;
+                      			current = this_PerspectiveGrid_7;
                       			afterParserOrEnumRuleCall();
                       		
                     }
@@ -3359,21 +3377,21 @@
                     }
                     break;
                 case 9 :
-                    // InternalPerspectiveDsl.g:1219:3: this_PerspectiveGrid_8= rulePerspectiveGrid
+                    // InternalPerspectiveDsl.g:1219:3: this_PerspectiveWelcome_8= rulePerspectiveWelcome
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_8());
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_8());
                       		
                     }
                     pushFollow(FOLLOW_2);
-                    this_PerspectiveGrid_8=rulePerspectiveGrid();
+                    this_PerspectiveWelcome_8=rulePerspectiveWelcome();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      			current = this_PerspectiveGrid_8;
+                      			current = this_PerspectiveWelcome_8;
                       			afterParserOrEnumRuleCall();
                       		
                     }
@@ -3381,21 +3399,21 @@
                     }
                     break;
                 case 10 :
-                    // InternalPerspectiveDsl.g:1228:3: this_PerspectiveWelcome_9= rulePerspectiveWelcome
+                    // InternalPerspectiveDsl.g:1228:3: this_PerspectiveSearch_9= rulePerspectiveSearch
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_9());
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_9());
                       		
                     }
                     pushFollow(FOLLOW_2);
-                    this_PerspectiveWelcome_9=rulePerspectiveWelcome();
+                    this_PerspectiveSearch_9=rulePerspectiveSearch();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      			current = this_PerspectiveWelcome_9;
+                      			current = this_PerspectiveSearch_9;
                       			afterParserOrEnumRuleCall();
                       		
                     }
@@ -3403,21 +3421,21 @@
                     }
                     break;
                 case 11 :
-                    // InternalPerspectiveDsl.g:1237:3: this_PerspectiveSearch_10= rulePerspectiveSearch
+                    // InternalPerspectiveDsl.g:1237:3: this_PerspectiveDataInterchange_10= rulePerspectiveDataInterchange
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_10());
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_10());
                       		
                     }
                     pushFollow(FOLLOW_2);
-                    this_PerspectiveSearch_10=rulePerspectiveSearch();
+                    this_PerspectiveDataInterchange_10=rulePerspectiveDataInterchange();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      			current = this_PerspectiveSearch_10;
+                      			current = this_PerspectiveDataInterchange_10;
                       			afterParserOrEnumRuleCall();
                       		
                     }
@@ -3425,21 +3443,21 @@
                     }
                     break;
                 case 12 :
-                    // InternalPerspectiveDsl.g:1246:3: this_PerspectiveDataInterchange_11= rulePerspectiveDataInterchange
+                    // InternalPerspectiveDsl.g:1246:3: this_PerspectiveBPMN_11= rulePerspectiveBPMN
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_11());
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveBPMNParserRuleCall_11());
                       		
                     }
                     pushFollow(FOLLOW_2);
-                    this_PerspectiveDataInterchange_11=rulePerspectiveDataInterchange();
+                    this_PerspectiveBPMN_11=rulePerspectiveBPMN();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      			current = this_PerspectiveDataInterchange_11;
+                      			current = this_PerspectiveBPMN_11;
                       			afterParserOrEnumRuleCall();
                       		
                     }
@@ -3468,6 +3486,50 @@
 
                     }
                     break;
+                case 14 :
+                    // InternalPerspectiveDsl.g:1264:3: this_PerspectiveTitle_13= rulePerspectiveTitle
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveTitleParserRuleCall_13());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_PerspectiveTitle_13=rulePerspectiveTitle();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_PerspectiveTitle_13;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 15 :
+                    // InternalPerspectiveDsl.g:1273:3: this_PerspectiveDashboard_14= rulePerspectiveDashboard
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDashboardParserRuleCall_14());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_PerspectiveDashboard_14=rulePerspectiveDashboard();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_PerspectiveDashboard_14;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
 
             }
 
@@ -3493,7 +3555,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveSelection"
-    // InternalPerspectiveDsl.g:1267:1: entryRulePerspectiveSelection returns [EObject current=null] : iv_rulePerspectiveSelection= rulePerspectiveSelection EOF ;
+    // InternalPerspectiveDsl.g:1285:1: entryRulePerspectiveSelection returns [EObject current=null] : iv_rulePerspectiveSelection= rulePerspectiveSelection EOF ;
     public final EObject entryRulePerspectiveSelection() throws RecognitionException {
         EObject current = null;
 
@@ -3501,8 +3563,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1267:61: (iv_rulePerspectiveSelection= rulePerspectiveSelection EOF )
-            // InternalPerspectiveDsl.g:1268:2: iv_rulePerspectiveSelection= rulePerspectiveSelection EOF
+            // InternalPerspectiveDsl.g:1285:61: (iv_rulePerspectiveSelection= rulePerspectiveSelection EOF )
+            // InternalPerspectiveDsl.g:1286:2: iv_rulePerspectiveSelection= rulePerspectiveSelection EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveSelectionRule()); 
@@ -3533,7 +3595,7 @@
 
 
     // $ANTLR start "rulePerspectiveSelection"
-    // InternalPerspectiveDsl.g:1274:1: rulePerspectiveSelection returns [EObject current=null] : ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1292:1: rulePerspectiveSelection returns [EObject current=null] : ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveSelection() throws RecognitionException {
         EObject current = null;
 
@@ -3544,14 +3606,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1280:2: ( ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1281:2: ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1298:2: ( ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1299:2: ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1281:2: ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1282:3: () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1299:2: ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1300:3: () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1282:3: ()
-            // InternalPerspectiveDsl.g:1283:4: 
+            // InternalPerspectiveDsl.g:1300:3: ()
+            // InternalPerspectiveDsl.g:1301:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -3569,11 +3631,11 @@
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveSelectionAccess().getSelectKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1293:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1294:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1311:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1312:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1294:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1295:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1312:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1313:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -3619,7 +3681,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveTable"
-    // InternalPerspectiveDsl.g:1310:1: entryRulePerspectiveTable returns [EObject current=null] : iv_rulePerspectiveTable= rulePerspectiveTable EOF ;
+    // InternalPerspectiveDsl.g:1328:1: entryRulePerspectiveTable returns [EObject current=null] : iv_rulePerspectiveTable= rulePerspectiveTable EOF ;
     public final EObject entryRulePerspectiveTable() throws RecognitionException {
         EObject current = null;
 
@@ -3627,8 +3689,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1310:57: (iv_rulePerspectiveTable= rulePerspectiveTable EOF )
-            // InternalPerspectiveDsl.g:1311:2: iv_rulePerspectiveTable= rulePerspectiveTable EOF
+            // InternalPerspectiveDsl.g:1328:57: (iv_rulePerspectiveTable= rulePerspectiveTable EOF )
+            // InternalPerspectiveDsl.g:1329:2: iv_rulePerspectiveTable= rulePerspectiveTable EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveTableRule()); 
@@ -3659,7 +3721,7 @@
 
 
     // $ANTLR start "rulePerspectiveTable"
-    // InternalPerspectiveDsl.g:1317:1: rulePerspectiveTable returns [EObject current=null] : ( () otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1335:1: rulePerspectiveTable returns [EObject current=null] : ( () otherlv_1= 'readOnlyTable' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveTable() throws RecognitionException {
         EObject current = null;
 
@@ -3670,14 +3732,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1323:2: ( ( () otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1324:2: ( () otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1341:2: ( ( () otherlv_1= 'readOnlyTable' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1342:2: ( () otherlv_1= 'readOnlyTable' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1324:2: ( () otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1325:3: () otherlv_1= 'table' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1342:2: ( () otherlv_1= 'readOnlyTable' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1343:3: () otherlv_1= 'readOnlyTable' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1325:3: ()
-            // InternalPerspectiveDsl.g:1326:4: 
+            // InternalPerspectiveDsl.g:1343:3: ()
+            // InternalPerspectiveDsl.g:1344:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -3692,14 +3754,14 @@
             otherlv_1=(Token)match(input,32,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveTableAccess().getTableKeyword_1());
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveTableAccess().getReadOnlyTableKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1336:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1337:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1354:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1355:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1337:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1338:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1355:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1356:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -3745,7 +3807,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveGrid"
-    // InternalPerspectiveDsl.g:1353:1: entryRulePerspectiveGrid returns [EObject current=null] : iv_rulePerspectiveGrid= rulePerspectiveGrid EOF ;
+    // InternalPerspectiveDsl.g:1371:1: entryRulePerspectiveGrid returns [EObject current=null] : iv_rulePerspectiveGrid= rulePerspectiveGrid EOF ;
     public final EObject entryRulePerspectiveGrid() throws RecognitionException {
         EObject current = null;
 
@@ -3753,8 +3815,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1353:56: (iv_rulePerspectiveGrid= rulePerspectiveGrid EOF )
-            // InternalPerspectiveDsl.g:1354:2: iv_rulePerspectiveGrid= rulePerspectiveGrid EOF
+            // InternalPerspectiveDsl.g:1371:56: (iv_rulePerspectiveGrid= rulePerspectiveGrid EOF )
+            // InternalPerspectiveDsl.g:1372:2: iv_rulePerspectiveGrid= rulePerspectiveGrid EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveGridRule()); 
@@ -3785,7 +3847,7 @@
 
 
     // $ANTLR start "rulePerspectiveGrid"
-    // InternalPerspectiveDsl.g:1360:1: rulePerspectiveGrid returns [EObject current=null] : ( () otherlv_1= 'grid' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1378:1: rulePerspectiveGrid returns [EObject current=null] : ( () otherlv_1= 'editableTable' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveGrid() throws RecognitionException {
         EObject current = null;
 
@@ -3796,14 +3858,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1366:2: ( ( () otherlv_1= 'grid' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1367:2: ( () otherlv_1= 'grid' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1384:2: ( ( () otherlv_1= 'editableTable' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1385:2: ( () otherlv_1= 'editableTable' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1367:2: ( () otherlv_1= 'grid' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1368:3: () otherlv_1= 'grid' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1385:2: ( () otherlv_1= 'editableTable' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1386:3: () otherlv_1= 'editableTable' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1368:3: ()
-            // InternalPerspectiveDsl.g:1369:4: 
+            // InternalPerspectiveDsl.g:1386:3: ()
+            // InternalPerspectiveDsl.g:1387:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -3818,14 +3880,14 @@
             otherlv_1=(Token)match(input,33,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveGridAccess().getGridKeyword_1());
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveGridAccess().getEditableTableKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1379:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1380:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1397:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1398:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1380:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1381:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1398:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1399:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -3870,134 +3932,8 @@
     // $ANTLR end "rulePerspectiveGrid"
 
 
-    // $ANTLR start "entryRulePerspectiveBean"
-    // InternalPerspectiveDsl.g:1396:1: entryRulePerspectiveBean returns [EObject current=null] : iv_rulePerspectiveBean= rulePerspectiveBean EOF ;
-    public final EObject entryRulePerspectiveBean() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_rulePerspectiveBean = null;
-
-
-        try {
-            // InternalPerspectiveDsl.g:1396:56: (iv_rulePerspectiveBean= rulePerspectiveBean EOF )
-            // InternalPerspectiveDsl.g:1397:2: iv_rulePerspectiveBean= rulePerspectiveBean EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getPerspectiveBeanRule()); 
-            }
-            pushFollow(FOLLOW_1);
-            iv_rulePerspectiveBean=rulePerspectiveBean();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_rulePerspectiveBean; 
-            }
-            match(input,EOF,FOLLOW_2); if (state.failed) return current;
-
-            }
-
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRulePerspectiveBean"
-
-
-    // $ANTLR start "rulePerspectiveBean"
-    // InternalPerspectiveDsl.g:1403:1: rulePerspectiveBean returns [EObject current=null] : ( () otherlv_1= 'bean' ( (otherlv_2= RULE_ID ) ) ) ;
-    public final EObject rulePerspectiveBean() throws RecognitionException {
-        EObject current = null;
-
-        Token otherlv_1=null;
-        Token otherlv_2=null;
-
-
-        	enterRule();
-
-        try {
-            // InternalPerspectiveDsl.g:1409:2: ( ( () otherlv_1= 'bean' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1410:2: ( () otherlv_1= 'bean' ( (otherlv_2= RULE_ID ) ) )
-            {
-            // InternalPerspectiveDsl.g:1410:2: ( () otherlv_1= 'bean' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1411:3: () otherlv_1= 'bean' ( (otherlv_2= RULE_ID ) )
-            {
-            // InternalPerspectiveDsl.g:1411:3: ()
-            // InternalPerspectiveDsl.g:1412:4: 
-            {
-            if ( state.backtracking==0 ) {
-
-              				current = forceCreateModelElement(
-              					grammarAccess.getPerspectiveBeanAccess().getPerspectiveBeanAction_0(),
-              					current);
-              			
-            }
-
-            }
-
-            otherlv_1=(Token)match(input,34,FOLLOW_4); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveBeanAccess().getBeanKeyword_1());
-              		
-            }
-            // InternalPerspectiveDsl.g:1422:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1423:4: (otherlv_2= RULE_ID )
-            {
-            // InternalPerspectiveDsl.g:1423:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1424:5: otherlv_2= RULE_ID
-            {
-            if ( state.backtracking==0 ) {
-
-              					if (current==null) {
-              						current = createModelElement(grammarAccess.getPerspectiveBeanRule());
-              					}
-              				
-            }
-            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              					newLeafNode(otherlv_2, grammarAccess.getPerspectiveBeanAccess().getRefTableCrossReference_2_0());
-              				
-            }
-
-            }
-
-
-            }
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-
-              	leaveRule();
-
-            }
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "rulePerspectiveBean"
-
-
     // $ANTLR start "entryRulePerspectiveChart"
-    // InternalPerspectiveDsl.g:1439:1: entryRulePerspectiveChart returns [EObject current=null] : iv_rulePerspectiveChart= rulePerspectiveChart EOF ;
+    // InternalPerspectiveDsl.g:1414:1: entryRulePerspectiveChart returns [EObject current=null] : iv_rulePerspectiveChart= rulePerspectiveChart EOF ;
     public final EObject entryRulePerspectiveChart() throws RecognitionException {
         EObject current = null;
 
@@ -4005,8 +3941,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1439:57: (iv_rulePerspectiveChart= rulePerspectiveChart EOF )
-            // InternalPerspectiveDsl.g:1440:2: iv_rulePerspectiveChart= rulePerspectiveChart EOF
+            // InternalPerspectiveDsl.g:1414:57: (iv_rulePerspectiveChart= rulePerspectiveChart EOF )
+            // InternalPerspectiveDsl.g:1415:2: iv_rulePerspectiveChart= rulePerspectiveChart EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveChartRule()); 
@@ -4037,7 +3973,7 @@
 
 
     // $ANTLR start "rulePerspectiveChart"
-    // InternalPerspectiveDsl.g:1446:1: rulePerspectiveChart returns [EObject current=null] : ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1421:1: rulePerspectiveChart returns [EObject current=null] : ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveChart() throws RecognitionException {
         EObject current = null;
 
@@ -4048,14 +3984,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1452:2: ( ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1453:2: ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1427:2: ( ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1428:2: ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1453:2: ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1454:3: () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1428:2: ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1429:3: () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1454:3: ()
-            // InternalPerspectiveDsl.g:1455:4: 
+            // InternalPerspectiveDsl.g:1429:3: ()
+            // InternalPerspectiveDsl.g:1430:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -4067,17 +4003,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,35,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.getPerspectiveChartAccess().getChartKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1465:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1466:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1440:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1441:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1466:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1467:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1441:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1442:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -4123,7 +4059,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveReport"
-    // InternalPerspectiveDsl.g:1482:1: entryRulePerspectiveReport returns [EObject current=null] : iv_rulePerspectiveReport= rulePerspectiveReport EOF ;
+    // InternalPerspectiveDsl.g:1457:1: entryRulePerspectiveReport returns [EObject current=null] : iv_rulePerspectiveReport= rulePerspectiveReport EOF ;
     public final EObject entryRulePerspectiveReport() throws RecognitionException {
         EObject current = null;
 
@@ -4131,8 +4067,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1482:58: (iv_rulePerspectiveReport= rulePerspectiveReport EOF )
-            // InternalPerspectiveDsl.g:1483:2: iv_rulePerspectiveReport= rulePerspectiveReport EOF
+            // InternalPerspectiveDsl.g:1457:58: (iv_rulePerspectiveReport= rulePerspectiveReport EOF )
+            // InternalPerspectiveDsl.g:1458:2: iv_rulePerspectiveReport= rulePerspectiveReport EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveReportRule()); 
@@ -4163,7 +4099,7 @@
 
 
     // $ANTLR start "rulePerspectiveReport"
-    // InternalPerspectiveDsl.g:1489:1: rulePerspectiveReport returns [EObject current=null] : ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1464:1: rulePerspectiveReport returns [EObject current=null] : ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveReport() throws RecognitionException {
         EObject current = null;
 
@@ -4174,14 +4110,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1495:2: ( ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1496:2: ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1470:2: ( ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1471:2: ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1496:2: ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1497:3: () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1471:2: ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1472:3: () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1497:3: ()
-            // InternalPerspectiveDsl.g:1498:4: 
+            // InternalPerspectiveDsl.g:1472:3: ()
+            // InternalPerspectiveDsl.g:1473:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -4193,17 +4129,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,36,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,35,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveReportAccess().getReportKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1508:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1509:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1483:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1484:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1509:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1510:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1484:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1485:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -4249,7 +4185,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveOrganization"
-    // InternalPerspectiveDsl.g:1525:1: entryRulePerspectiveOrganization returns [EObject current=null] : iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF ;
+    // InternalPerspectiveDsl.g:1500:1: entryRulePerspectiveOrganization returns [EObject current=null] : iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF ;
     public final EObject entryRulePerspectiveOrganization() throws RecognitionException {
         EObject current = null;
 
@@ -4257,8 +4193,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1525:64: (iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF )
-            // InternalPerspectiveDsl.g:1526:2: iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF
+            // InternalPerspectiveDsl.g:1500:64: (iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF )
+            // InternalPerspectiveDsl.g:1501:2: iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveOrganizationRule()); 
@@ -4289,7 +4225,7 @@
 
 
     // $ANTLR start "rulePerspectiveOrganization"
-    // InternalPerspectiveDsl.g:1532:1: rulePerspectiveOrganization returns [EObject current=null] : ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1507:1: rulePerspectiveOrganization returns [EObject current=null] : ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveOrganization() throws RecognitionException {
         EObject current = null;
 
@@ -4300,14 +4236,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1538:2: ( ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1539:2: ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1513:2: ( ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1514:2: ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1539:2: ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1540:3: () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1514:2: ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1515:3: () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1540:3: ()
-            // InternalPerspectiveDsl.g:1541:4: 
+            // InternalPerspectiveDsl.g:1515:3: ()
+            // InternalPerspectiveDsl.g:1516:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -4319,17 +4255,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,37,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.getPerspectiveOrganizationAccess().getOrganigramKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1551:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1552:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1526:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1527:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1552:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1553:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1527:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1528:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -4375,7 +4311,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveTopology"
-    // InternalPerspectiveDsl.g:1568:1: entryRulePerspectiveTopology returns [EObject current=null] : iv_rulePerspectiveTopology= rulePerspectiveTopology EOF ;
+    // InternalPerspectiveDsl.g:1543:1: entryRulePerspectiveTopology returns [EObject current=null] : iv_rulePerspectiveTopology= rulePerspectiveTopology EOF ;
     public final EObject entryRulePerspectiveTopology() throws RecognitionException {
         EObject current = null;
 
@@ -4383,8 +4319,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1568:60: (iv_rulePerspectiveTopology= rulePerspectiveTopology EOF )
-            // InternalPerspectiveDsl.g:1569:2: iv_rulePerspectiveTopology= rulePerspectiveTopology EOF
+            // InternalPerspectiveDsl.g:1543:60: (iv_rulePerspectiveTopology= rulePerspectiveTopology EOF )
+            // InternalPerspectiveDsl.g:1544:2: iv_rulePerspectiveTopology= rulePerspectiveTopology EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveTopologyRule()); 
@@ -4415,7 +4351,7 @@
 
 
     // $ANTLR start "rulePerspectiveTopology"
-    // InternalPerspectiveDsl.g:1575:1: rulePerspectiveTopology returns [EObject current=null] : ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1550:1: rulePerspectiveTopology returns [EObject current=null] : ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveTopology() throws RecognitionException {
         EObject current = null;
 
@@ -4426,14 +4362,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1581:2: ( ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1582:2: ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1556:2: ( ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1557:2: ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1582:2: ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1583:3: () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1557:2: ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1558:3: () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1583:3: ()
-            // InternalPerspectiveDsl.g:1584:4: 
+            // InternalPerspectiveDsl.g:1558:3: ()
+            // InternalPerspectiveDsl.g:1559:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -4445,17 +4381,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,38,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.getPerspectiveTopologyAccess().getTopologyKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1594:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1595:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1569:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1570:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1595:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1596:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1570:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1571:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -4501,7 +4437,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveDialog"
-    // InternalPerspectiveDsl.g:1611:1: entryRulePerspectiveDialog returns [EObject current=null] : iv_rulePerspectiveDialog= rulePerspectiveDialog EOF ;
+    // InternalPerspectiveDsl.g:1586:1: entryRulePerspectiveDialog returns [EObject current=null] : iv_rulePerspectiveDialog= rulePerspectiveDialog EOF ;
     public final EObject entryRulePerspectiveDialog() throws RecognitionException {
         EObject current = null;
 
@@ -4509,8 +4445,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1611:58: (iv_rulePerspectiveDialog= rulePerspectiveDialog EOF )
-            // InternalPerspectiveDsl.g:1612:2: iv_rulePerspectiveDialog= rulePerspectiveDialog EOF
+            // InternalPerspectiveDsl.g:1586:58: (iv_rulePerspectiveDialog= rulePerspectiveDialog EOF )
+            // InternalPerspectiveDsl.g:1587:2: iv_rulePerspectiveDialog= rulePerspectiveDialog EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveDialogRule()); 
@@ -4541,7 +4477,7 @@
 
 
     // $ANTLR start "rulePerspectiveDialog"
-    // InternalPerspectiveDsl.g:1618:1: rulePerspectiveDialog returns [EObject current=null] : ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1593:1: rulePerspectiveDialog returns [EObject current=null] : ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveDialog() throws RecognitionException {
         EObject current = null;
 
@@ -4552,14 +4488,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1624:2: ( ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1625:2: ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1599:2: ( ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1600:2: ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1625:2: ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1626:3: () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1600:2: ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1601:3: () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1626:3: ()
-            // InternalPerspectiveDsl.g:1627:4: 
+            // InternalPerspectiveDsl.g:1601:3: ()
+            // InternalPerspectiveDsl.g:1602:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -4571,17 +4507,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,39,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.getPerspectiveDialogAccess().getDialogKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1637:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1638:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1612:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1613:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1638:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1639:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1613:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1614:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -4626,8 +4562,108 @@
     // $ANTLR end "rulePerspectiveDialog"
 
 
+    // $ANTLR start "entryRulePerspectiveBPMN"
+    // InternalPerspectiveDsl.g:1629:1: entryRulePerspectiveBPMN returns [EObject current=null] : iv_rulePerspectiveBPMN= rulePerspectiveBPMN EOF ;
+    public final EObject entryRulePerspectiveBPMN() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_rulePerspectiveBPMN = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:1629:56: (iv_rulePerspectiveBPMN= rulePerspectiveBPMN EOF )
+            // InternalPerspectiveDsl.g:1630:2: iv_rulePerspectiveBPMN= rulePerspectiveBPMN EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getPerspectiveBPMNRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_rulePerspectiveBPMN=rulePerspectiveBPMN();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_rulePerspectiveBPMN; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRulePerspectiveBPMN"
+
+
+    // $ANTLR start "rulePerspectiveBPMN"
+    // InternalPerspectiveDsl.g:1636:1: rulePerspectiveBPMN returns [EObject current=null] : ( () otherlv_1= 'bpmn' ) ;
+    public final EObject rulePerspectiveBPMN() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalPerspectiveDsl.g:1642:2: ( ( () otherlv_1= 'bpmn' ) )
+            // InternalPerspectiveDsl.g:1643:2: ( () otherlv_1= 'bpmn' )
+            {
+            // InternalPerspectiveDsl.g:1643:2: ( () otherlv_1= 'bpmn' )
+            // InternalPerspectiveDsl.g:1644:3: () otherlv_1= 'bpmn'
+            {
+            // InternalPerspectiveDsl.g:1644:3: ()
+            // InternalPerspectiveDsl.g:1645:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveBPMNAccess().getPerspectiveBPMNAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,39,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "rulePerspectiveBPMN"
+
+
     // $ANTLR start "entryRulePerspectiveKanban"
-    // InternalPerspectiveDsl.g:1654:1: entryRulePerspectiveKanban returns [EObject current=null] : iv_rulePerspectiveKanban= rulePerspectiveKanban EOF ;
+    // InternalPerspectiveDsl.g:1659:1: entryRulePerspectiveKanban returns [EObject current=null] : iv_rulePerspectiveKanban= rulePerspectiveKanban EOF ;
     public final EObject entryRulePerspectiveKanban() throws RecognitionException {
         EObject current = null;
 
@@ -4635,8 +4671,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1654:58: (iv_rulePerspectiveKanban= rulePerspectiveKanban EOF )
-            // InternalPerspectiveDsl.g:1655:2: iv_rulePerspectiveKanban= rulePerspectiveKanban EOF
+            // InternalPerspectiveDsl.g:1659:58: (iv_rulePerspectiveKanban= rulePerspectiveKanban EOF )
+            // InternalPerspectiveDsl.g:1660:2: iv_rulePerspectiveKanban= rulePerspectiveKanban EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveKanbanRule()); 
@@ -4667,7 +4703,7 @@
 
 
     // $ANTLR start "rulePerspectiveKanban"
-    // InternalPerspectiveDsl.g:1661: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:1666: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;
 
@@ -4683,14 +4719,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1667: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:1668: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:1672: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:1673: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:1668: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:1669: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:1673: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:1674: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:1669:3: ()
-            // InternalPerspectiveDsl.g:1670:4: 
+            // InternalPerspectiveDsl.g:1674:3: ()
+            // InternalPerspectiveDsl.g:1675:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -4714,11 +4750,11 @@
               			newLeafNode(otherlv_2, grammarAccess.getPerspectiveKanbanAccess().getOfKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:1684:3: ( (otherlv_3= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1685:4: (otherlv_3= RULE_ID )
+            // InternalPerspectiveDsl.g:1689:3: ( (otherlv_3= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1690:4: (otherlv_3= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1685:4: (otherlv_3= RULE_ID )
-            // InternalPerspectiveDsl.g:1686:5: otherlv_3= RULE_ID
+            // InternalPerspectiveDsl.g:1690:4: (otherlv_3= RULE_ID )
+            // InternalPerspectiveDsl.g:1691:5: otherlv_3= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -4745,11 +4781,11 @@
               			newLeafNode(otherlv_4, grammarAccess.getPerspectiveKanbanAccess().getCardKeyword_4());
               		
             }
-            // InternalPerspectiveDsl.g:1701:3: ( (otherlv_5= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1702:4: (otherlv_5= RULE_ID )
+            // InternalPerspectiveDsl.g:1706:3: ( (otherlv_5= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1707:4: (otherlv_5= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1702:4: (otherlv_5= RULE_ID )
-            // InternalPerspectiveDsl.g:1703:5: otherlv_5= RULE_ID
+            // InternalPerspectiveDsl.g:1707:4: (otherlv_5= RULE_ID )
+            // InternalPerspectiveDsl.g:1708:5: otherlv_5= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -4770,17 +4806,17 @@
 
             }
 
-            otherlv_6=(Token)match(input,39,FOLLOW_4); if (state.failed) return current;
+            otherlv_6=(Token)match(input,38,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getPerspectiveKanbanAccess().getDialogKeyword_6());
               		
             }
-            // InternalPerspectiveDsl.g:1718:3: ( (otherlv_7= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1719:4: (otherlv_7= RULE_ID )
+            // InternalPerspectiveDsl.g:1723:3: ( (otherlv_7= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1724:4: (otherlv_7= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1719:4: (otherlv_7= RULE_ID )
-            // InternalPerspectiveDsl.g:1720:5: otherlv_7= RULE_ID
+            // InternalPerspectiveDsl.g:1724:4: (otherlv_7= RULE_ID )
+            // InternalPerspectiveDsl.g:1725:5: otherlv_7= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -4826,7 +4862,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveWelcome"
-    // InternalPerspectiveDsl.g:1735:1: entryRulePerspectiveWelcome returns [EObject current=null] : iv_rulePerspectiveWelcome= rulePerspectiveWelcome EOF ;
+    // InternalPerspectiveDsl.g:1740:1: entryRulePerspectiveWelcome returns [EObject current=null] : iv_rulePerspectiveWelcome= rulePerspectiveWelcome EOF ;
     public final EObject entryRulePerspectiveWelcome() throws RecognitionException {
         EObject current = null;
 
@@ -4834,8 +4870,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1735:59: (iv_rulePerspectiveWelcome= rulePerspectiveWelcome EOF )
-            // InternalPerspectiveDsl.g:1736:2: iv_rulePerspectiveWelcome= rulePerspectiveWelcome EOF
+            // InternalPerspectiveDsl.g:1740:59: (iv_rulePerspectiveWelcome= rulePerspectiveWelcome EOF )
+            // InternalPerspectiveDsl.g:1741:2: iv_rulePerspectiveWelcome= rulePerspectiveWelcome EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveWelcomeRule()); 
@@ -4866,7 +4902,7 @@
 
 
     // $ANTLR start "rulePerspectiveWelcome"
-    // InternalPerspectiveDsl.g:1742:1: rulePerspectiveWelcome returns [EObject current=null] : ( () otherlv_1= 'welcome' ) ;
+    // InternalPerspectiveDsl.g:1747:1: rulePerspectiveWelcome returns [EObject current=null] : ( () otherlv_1= 'welcome' ) ;
     public final EObject rulePerspectiveWelcome() throws RecognitionException {
         EObject current = null;
 
@@ -4876,14 +4912,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1748:2: ( ( () otherlv_1= 'welcome' ) )
-            // InternalPerspectiveDsl.g:1749:2: ( () otherlv_1= 'welcome' )
+            // InternalPerspectiveDsl.g:1753:2: ( ( () otherlv_1= 'welcome' ) )
+            // InternalPerspectiveDsl.g:1754:2: ( () otherlv_1= 'welcome' )
             {
-            // InternalPerspectiveDsl.g:1749:2: ( () otherlv_1= 'welcome' )
-            // InternalPerspectiveDsl.g:1750:3: () otherlv_1= 'welcome'
+            // InternalPerspectiveDsl.g:1754:2: ( () otherlv_1= 'welcome' )
+            // InternalPerspectiveDsl.g:1755:3: () otherlv_1= 'welcome'
             {
-            // InternalPerspectiveDsl.g:1750:3: ()
-            // InternalPerspectiveDsl.g:1751:4: 
+            // InternalPerspectiveDsl.g:1755:3: ()
+            // InternalPerspectiveDsl.g:1756:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -4926,7 +4962,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveSearch"
-    // InternalPerspectiveDsl.g:1765:1: entryRulePerspectiveSearch returns [EObject current=null] : iv_rulePerspectiveSearch= rulePerspectiveSearch EOF ;
+    // InternalPerspectiveDsl.g:1770:1: entryRulePerspectiveSearch returns [EObject current=null] : iv_rulePerspectiveSearch= rulePerspectiveSearch EOF ;
     public final EObject entryRulePerspectiveSearch() throws RecognitionException {
         EObject current = null;
 
@@ -4934,8 +4970,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1765:58: (iv_rulePerspectiveSearch= rulePerspectiveSearch EOF )
-            // InternalPerspectiveDsl.g:1766:2: iv_rulePerspectiveSearch= rulePerspectiveSearch EOF
+            // InternalPerspectiveDsl.g:1770:58: (iv_rulePerspectiveSearch= rulePerspectiveSearch EOF )
+            // InternalPerspectiveDsl.g:1771:2: iv_rulePerspectiveSearch= rulePerspectiveSearch EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveSearchRule()); 
@@ -4966,7 +5002,7 @@
 
 
     // $ANTLR start "rulePerspectiveSearch"
-    // InternalPerspectiveDsl.g:1772: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:1777: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;
 
@@ -4982,14 +5018,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1778: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:1779: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:1783: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:1784: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:1779: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:1780: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:1784: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:1785: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:1780:3: ()
-            // InternalPerspectiveDsl.g:1781:4: 
+            // InternalPerspectiveDsl.g:1785:3: ()
+            // InternalPerspectiveDsl.g:1786:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -5013,11 +5049,11 @@
               			newLeafNode(otherlv_2, grammarAccess.getPerspectiveSearchAccess().getInKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:1795:3: ( (otherlv_3= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1796:4: (otherlv_3= RULE_ID )
+            // InternalPerspectiveDsl.g:1800:3: ( (otherlv_3= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1801:4: (otherlv_3= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1796:4: (otherlv_3= RULE_ID )
-            // InternalPerspectiveDsl.g:1797:5: otherlv_3= RULE_ID
+            // InternalPerspectiveDsl.g:1801:4: (otherlv_3= RULE_ID )
+            // InternalPerspectiveDsl.g:1802:5: otherlv_3= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -5038,17 +5074,17 @@
 
             }
 
-            // InternalPerspectiveDsl.g:1808:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) )
-            // InternalPerspectiveDsl.g:1809:4: ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:1813:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) )
+            // InternalPerspectiveDsl.g:1814:4: ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) )
             {
-            // InternalPerspectiveDsl.g:1809:4: ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) )
-            // InternalPerspectiveDsl.g:1810:5: ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:1814:4: ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:1815: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:1813:5: ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* )
-            // InternalPerspectiveDsl.g:1814:6: ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:1818:5: ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:1819:6: ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )*
             {
-            // InternalPerspectiveDsl.g:1814:6: ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:1819:6: ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )*
             loop16:
             do {
                 int alt16=3;
@@ -5064,28 +5100,28 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:1815:4: ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1820:4: ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:1815:4: ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:1816:5: {...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1820:4: ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1821: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:1816:114: ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:1817:6: ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) )
+            	    // InternalPerspectiveDsl.g:1821:114: ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1822:6: ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0);
-            	    // InternalPerspectiveDsl.g:1820:9: ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) )
-            	    // InternalPerspectiveDsl.g:1820:10: {...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) )
+            	    // InternalPerspectiveDsl.g:1825:9: ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) )
+            	    // InternalPerspectiveDsl.g:1825: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:1820:19: (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) )
-            	    // InternalPerspectiveDsl.g:1820:20: otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) )
+            	    // InternalPerspectiveDsl.g:1825:19: (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) )
+            	    // InternalPerspectiveDsl.g:1825:20: otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) )
             	    {
             	    otherlv_5=(Token)match(input,46,FOLLOW_23); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
@@ -5093,11 +5129,11 @@
             	      									newLeafNode(otherlv_5, grammarAccess.getPerspectiveSearchAccess().getDepthKeyword_4_0_0());
             	      								
             	    }
-            	    // InternalPerspectiveDsl.g:1824:9: ( (lv_depth_6_0= RULE_INT ) )
-            	    // InternalPerspectiveDsl.g:1825:10: (lv_depth_6_0= RULE_INT )
+            	    // InternalPerspectiveDsl.g:1829:9: ( (lv_depth_6_0= RULE_INT ) )
+            	    // InternalPerspectiveDsl.g:1830:10: (lv_depth_6_0= RULE_INT )
             	    {
-            	    // InternalPerspectiveDsl.g:1825:10: (lv_depth_6_0= RULE_INT )
-            	    // InternalPerspectiveDsl.g:1826:11: lv_depth_6_0= RULE_INT
+            	    // InternalPerspectiveDsl.g:1830:10: (lv_depth_6_0= RULE_INT )
+            	    // InternalPerspectiveDsl.g:1831:11: lv_depth_6_0= RULE_INT
             	    {
             	    lv_depth_6_0=(Token)match(input,RULE_INT,FOLLOW_22); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
@@ -5140,28 +5176,28 @@
             	    }
             	    break;
             	case 2 :
-            	    // InternalPerspectiveDsl.g:1848:4: ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1853:4: ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:1848:4: ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:1849:5: {...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1853:4: ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1854: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:1849:114: ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:1850:6: ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) )
+            	    // InternalPerspectiveDsl.g:1854:114: ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1855:6: ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1);
-            	    // InternalPerspectiveDsl.g:1853:9: ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) )
-            	    // InternalPerspectiveDsl.g:1853:10: {...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) )
+            	    // InternalPerspectiveDsl.g:1858:9: ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) )
+            	    // InternalPerspectiveDsl.g:1858: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:1853:19: (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) )
-            	    // InternalPerspectiveDsl.g:1853:20: otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) )
+            	    // InternalPerspectiveDsl.g:1858:19: (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) )
+            	    // InternalPerspectiveDsl.g:1858:20: otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) )
             	    {
             	    otherlv_7=(Token)match(input,47,FOLLOW_23); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
@@ -5169,11 +5205,11 @@
             	      									newLeafNode(otherlv_7, grammarAccess.getPerspectiveSearchAccess().getFilterColumnsKeyword_4_1_0());
             	      								
             	    }
-            	    // InternalPerspectiveDsl.g:1857:9: ( (lv_filterCols_8_0= RULE_INT ) )
-            	    // InternalPerspectiveDsl.g:1858:10: (lv_filterCols_8_0= RULE_INT )
+            	    // InternalPerspectiveDsl.g:1862:9: ( (lv_filterCols_8_0= RULE_INT ) )
+            	    // InternalPerspectiveDsl.g:1863:10: (lv_filterCols_8_0= RULE_INT )
             	    {
-            	    // InternalPerspectiveDsl.g:1858:10: (lv_filterCols_8_0= RULE_INT )
-            	    // InternalPerspectiveDsl.g:1859:11: lv_filterCols_8_0= RULE_INT
+            	    // InternalPerspectiveDsl.g:1863:10: (lv_filterCols_8_0= RULE_INT )
+            	    // InternalPerspectiveDsl.g:1864:11: lv_filterCols_8_0= RULE_INT
             	    {
             	    lv_filterCols_8_0=(Token)match(input,RULE_INT,FOLLOW_22); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
@@ -5256,7 +5292,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveDataInterchange"
-    // InternalPerspectiveDsl.g:1892:1: entryRulePerspectiveDataInterchange returns [EObject current=null] : iv_rulePerspectiveDataInterchange= rulePerspectiveDataInterchange EOF ;
+    // InternalPerspectiveDsl.g:1897:1: entryRulePerspectiveDataInterchange returns [EObject current=null] : iv_rulePerspectiveDataInterchange= rulePerspectiveDataInterchange EOF ;
     public final EObject entryRulePerspectiveDataInterchange() throws RecognitionException {
         EObject current = null;
 
@@ -5264,8 +5300,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1892:67: (iv_rulePerspectiveDataInterchange= rulePerspectiveDataInterchange EOF )
-            // InternalPerspectiveDsl.g:1893:2: iv_rulePerspectiveDataInterchange= rulePerspectiveDataInterchange EOF
+            // InternalPerspectiveDsl.g:1897:67: (iv_rulePerspectiveDataInterchange= rulePerspectiveDataInterchange EOF )
+            // InternalPerspectiveDsl.g:1898:2: iv_rulePerspectiveDataInterchange= rulePerspectiveDataInterchange EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveDataInterchangeRule()); 
@@ -5296,7 +5332,7 @@
 
 
     // $ANTLR start "rulePerspectiveDataInterchange"
-    // InternalPerspectiveDsl.g:1899:1: rulePerspectiveDataInterchange returns [EObject current=null] : ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1904:1: rulePerspectiveDataInterchange returns [EObject current=null] : ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveDataInterchange() throws RecognitionException {
         EObject current = null;
 
@@ -5307,14 +5343,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1905:2: ( ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1906:2: ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1910:2: ( ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1911:2: ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1906:2: ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1907:3: () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1911:2: ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1912:3: () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1907:3: ()
-            // InternalPerspectiveDsl.g:1908:4: 
+            // InternalPerspectiveDsl.g:1912:3: ()
+            // InternalPerspectiveDsl.g:1913:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -5332,11 +5368,11 @@
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveDataInterchangeAccess().getDataInterchangeKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1918:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1919:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1923:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1924:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1919:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1920:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1924:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1925:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -5381,8 +5417,270 @@
     // $ANTLR end "rulePerspectiveDataInterchange"
 
 
+    // $ANTLR start "entryRulePerspectiveTitle"
+    // InternalPerspectiveDsl.g:1940:1: entryRulePerspectiveTitle returns [EObject current=null] : iv_rulePerspectiveTitle= rulePerspectiveTitle EOF ;
+    public final EObject entryRulePerspectiveTitle() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_rulePerspectiveTitle = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:1940:57: (iv_rulePerspectiveTitle= rulePerspectiveTitle EOF )
+            // InternalPerspectiveDsl.g:1941:2: iv_rulePerspectiveTitle= rulePerspectiveTitle EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getPerspectiveTitleRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_rulePerspectiveTitle=rulePerspectiveTitle();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_rulePerspectiveTitle; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRulePerspectiveTitle"
+
+
+    // $ANTLR start "rulePerspectiveTitle"
+    // InternalPerspectiveDsl.g:1947:1: rulePerspectiveTitle returns [EObject current=null] : ( () otherlv_1= 'title' ( (lv_htmlName_2_0= RULE_STRING ) ) ) ;
+    public final EObject rulePerspectiveTitle() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_htmlName_2_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalPerspectiveDsl.g:1953:2: ( ( () otherlv_1= 'title' ( (lv_htmlName_2_0= RULE_STRING ) ) ) )
+            // InternalPerspectiveDsl.g:1954:2: ( () otherlv_1= 'title' ( (lv_htmlName_2_0= RULE_STRING ) ) )
+            {
+            // InternalPerspectiveDsl.g:1954:2: ( () otherlv_1= 'title' ( (lv_htmlName_2_0= RULE_STRING ) ) )
+            // InternalPerspectiveDsl.g:1955:3: () otherlv_1= 'title' ( (lv_htmlName_2_0= RULE_STRING ) )
+            {
+            // InternalPerspectiveDsl.g:1955:3: ()
+            // InternalPerspectiveDsl.g:1956:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveTitleAccess().getPerspectiveTitleAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,49,FOLLOW_8); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveTitleAccess().getTitleKeyword_1());
+              		
+            }
+            // InternalPerspectiveDsl.g:1966:3: ( (lv_htmlName_2_0= RULE_STRING ) )
+            // InternalPerspectiveDsl.g:1967:4: (lv_htmlName_2_0= RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:1967:4: (lv_htmlName_2_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:1968: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 ) {
+
+              					newLeafNode(lv_htmlName_2_0, grammarAccess.getPerspectiveTitleAccess().getHtmlNameSTRINGTerminalRuleCall_2_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveTitleRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"htmlName",
+              						lv_htmlName_2_0,
+              						"org.eclipse.xtext.xbase.Xtype.STRING");
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "rulePerspectiveTitle"
+
+
+    // $ANTLR start "entryRulePerspectiveDashboard"
+    // InternalPerspectiveDsl.g:1988:1: entryRulePerspectiveDashboard returns [EObject current=null] : iv_rulePerspectiveDashboard= rulePerspectiveDashboard EOF ;
+    public final EObject entryRulePerspectiveDashboard() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_rulePerspectiveDashboard = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:1988:61: (iv_rulePerspectiveDashboard= rulePerspectiveDashboard EOF )
+            // InternalPerspectiveDsl.g:1989:2: iv_rulePerspectiveDashboard= rulePerspectiveDashboard EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getPerspectiveDashboardRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_rulePerspectiveDashboard=rulePerspectiveDashboard();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_rulePerspectiveDashboard; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRulePerspectiveDashboard"
+
+
+    // $ANTLR start "rulePerspectiveDashboard"
+    // InternalPerspectiveDsl.g:1995:1: rulePerspectiveDashboard returns [EObject current=null] : ( () otherlv_1= 'name' ( (lv_name_2_0= RULE_STRING ) ) ) ;
+    public final EObject rulePerspectiveDashboard() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_name_2_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalPerspectiveDsl.g:2001:2: ( ( () otherlv_1= 'name' ( (lv_name_2_0= RULE_STRING ) ) ) )
+            // InternalPerspectiveDsl.g:2002:2: ( () otherlv_1= 'name' ( (lv_name_2_0= RULE_STRING ) ) )
+            {
+            // InternalPerspectiveDsl.g:2002:2: ( () otherlv_1= 'name' ( (lv_name_2_0= RULE_STRING ) ) )
+            // InternalPerspectiveDsl.g:2003:3: () otherlv_1= 'name' ( (lv_name_2_0= RULE_STRING ) )
+            {
+            // InternalPerspectiveDsl.g:2003:3: ()
+            // InternalPerspectiveDsl.g:2004:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveDashboardAccess().getPerspectiveDashboardAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,50,FOLLOW_8); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveDashboardAccess().getNameKeyword_1());
+              		
+            }
+            // InternalPerspectiveDsl.g:2014:3: ( (lv_name_2_0= RULE_STRING ) )
+            // InternalPerspectiveDsl.g:2015:4: (lv_name_2_0= RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:2015:4: (lv_name_2_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:2016: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 ) {
+
+              					newLeafNode(lv_name_2_0, grammarAccess.getPerspectiveDashboardAccess().getNameSTRINGTerminalRuleCall_2_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveDashboardRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"name",
+              						lv_name_2_0,
+              						"org.eclipse.xtext.xbase.Xtype.STRING");
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "rulePerspectiveDashboard"
+
+
     // $ANTLR start "entryRuleTRANSLATABLEID"
-    // InternalPerspectiveDsl.g:1935:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
+    // InternalPerspectiveDsl.g:2036:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
     public final String entryRuleTRANSLATABLEID() throws RecognitionException {
         String current = null;
 
@@ -5390,8 +5688,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1935:54: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
-            // InternalPerspectiveDsl.g:1936:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
+            // InternalPerspectiveDsl.g:2036:54: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
+            // InternalPerspectiveDsl.g:2037:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); 
@@ -5422,7 +5720,7 @@
 
 
     // $ANTLR start "ruleTRANSLATABLEID"
-    // InternalPerspectiveDsl.g:1942:1: ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    // InternalPerspectiveDsl.g:2043:1: ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
     public final AntlrDatatypeRuleToken ruleTRANSLATABLEID() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -5432,8 +5730,8 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1948:2: (this_ID_0= RULE_ID )
-            // InternalPerspectiveDsl.g:1949:2: this_ID_0= RULE_ID
+            // InternalPerspectiveDsl.g:2049:2: (this_ID_0= RULE_ID )
+            // InternalPerspectiveDsl.g:2050: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 ) {
@@ -5468,7 +5766,7 @@
 
 
     // $ANTLR start "entryRuleTRANSLATABLESTRING"
-    // InternalPerspectiveDsl.g:1959:1: entryRuleTRANSLATABLESTRING returns [String current=null] : iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF ;
+    // InternalPerspectiveDsl.g:2060:1: entryRuleTRANSLATABLESTRING returns [String current=null] : iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF ;
     public final String entryRuleTRANSLATABLESTRING() throws RecognitionException {
         String current = null;
 
@@ -5476,8 +5774,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1959:58: (iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF )
-            // InternalPerspectiveDsl.g:1960:2: iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF
+            // InternalPerspectiveDsl.g:2060:58: (iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF )
+            // InternalPerspectiveDsl.g:2061:2: iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTRANSLATABLESTRINGRule()); 
@@ -5508,7 +5806,7 @@
 
 
     // $ANTLR start "ruleTRANSLATABLESTRING"
-    // InternalPerspectiveDsl.g:1966:1: ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_STRING_0= RULE_STRING ;
+    // InternalPerspectiveDsl.g:2067:1: ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_STRING_0= RULE_STRING ;
     public final AntlrDatatypeRuleToken ruleTRANSLATABLESTRING() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -5518,8 +5816,8 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1972:2: (this_STRING_0= RULE_STRING )
-            // InternalPerspectiveDsl.g:1973:2: this_STRING_0= RULE_STRING
+            // InternalPerspectiveDsl.g:2073:2: (this_STRING_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:2074: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 ) {
@@ -5554,7 +5852,7 @@
 
 
     // $ANTLR start "entryRuleXImportDeclaration"
-    // InternalPerspectiveDsl.g:1983:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
+    // InternalPerspectiveDsl.g:2084:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
     public final EObject entryRuleXImportDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -5562,8 +5860,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1983:59: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
-            // InternalPerspectiveDsl.g:1984:2: iv_ruleXImportDeclaration= ruleXImportDeclaration EOF
+            // InternalPerspectiveDsl.g:2084:59: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
+            // InternalPerspectiveDsl.g:2085:2: iv_ruleXImportDeclaration= ruleXImportDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXImportDeclarationRule()); 
@@ -5594,7 +5892,7 @@
 
 
     // $ANTLR start "ruleXImportDeclaration"
-    // InternalPerspectiveDsl.g:1990: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:2091: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;
 
@@ -5615,14 +5913,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1996: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:1997: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:2097: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:2098: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:1997: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:1998: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:2098: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:2099: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:1998:3: ()
-            // InternalPerspectiveDsl.g:1999:4: 
+            // InternalPerspectiveDsl.g:2099:3: ()
+            // InternalPerspectiveDsl.g:2100:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -5634,29 +5932,29 @@
 
             }
 
-            otherlv_1=(Token)match(input,49,FOLLOW_24); if (state.failed) return current;
+            otherlv_1=(Token)match(input,51,FOLLOW_24); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXImportDeclarationAccess().getImportKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:2009: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:2110:3: ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) )
             int alt19=4;
             alt19 = dfa19.predict(input);
             switch (alt19) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2010:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
+                    // InternalPerspectiveDsl.g:2111:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:2010:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
-                    // InternalPerspectiveDsl.g:2011:5: ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    // InternalPerspectiveDsl.g:2111:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
+                    // InternalPerspectiveDsl.g:2112:5: ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
                     {
-                    // InternalPerspectiveDsl.g:2011:5: ( (lv_static_2_0= 'static' ) )
-                    // InternalPerspectiveDsl.g:2012:6: (lv_static_2_0= 'static' )
+                    // InternalPerspectiveDsl.g:2112:5: ( (lv_static_2_0= 'static' ) )
+                    // InternalPerspectiveDsl.g:2113:6: (lv_static_2_0= 'static' )
                     {
-                    // InternalPerspectiveDsl.g:2012:6: (lv_static_2_0= 'static' )
-                    // InternalPerspectiveDsl.g:2013:7: lv_static_2_0= 'static'
+                    // InternalPerspectiveDsl.g:2113:6: (lv_static_2_0= 'static' )
+                    // InternalPerspectiveDsl.g:2114:7: lv_static_2_0= 'static'
                     {
-                    lv_static_2_0=(Token)match(input,50,FOLLOW_25); if (state.failed) return current;
+                    lv_static_2_0=(Token)match(input,52,FOLLOW_25); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(lv_static_2_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0());
@@ -5676,21 +5974,21 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:2025:5: ( (lv_extension_3_0= 'extension' ) )?
+                    // InternalPerspectiveDsl.g:2126:5: ( (lv_extension_3_0= 'extension' ) )?
                     int alt17=2;
                     int LA17_0 = input.LA(1);
 
-                    if ( (LA17_0==51) ) {
+                    if ( (LA17_0==53) ) {
                         alt17=1;
                     }
                     switch (alt17) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:2026:6: (lv_extension_3_0= 'extension' )
+                            // InternalPerspectiveDsl.g:2127:6: (lv_extension_3_0= 'extension' )
                             {
-                            // InternalPerspectiveDsl.g:2026:6: (lv_extension_3_0= 'extension' )
-                            // InternalPerspectiveDsl.g:2027:7: lv_extension_3_0= 'extension'
+                            // InternalPerspectiveDsl.g:2127:6: (lv_extension_3_0= 'extension' )
+                            // InternalPerspectiveDsl.g:2128:7: lv_extension_3_0= 'extension'
                             {
-                            lv_extension_3_0=(Token)match(input,51,FOLLOW_25); if (state.failed) return current;
+                            lv_extension_3_0=(Token)match(input,53,FOLLOW_25); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							newLeafNode(lv_extension_3_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0());
@@ -5713,11 +6011,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:2039:5: ( ( ruleQualifiedNameInStaticImport ) )
-                    // InternalPerspectiveDsl.g:2040:6: ( ruleQualifiedNameInStaticImport )
+                    // InternalPerspectiveDsl.g:2140:5: ( ( ruleQualifiedNameInStaticImport ) )
+                    // InternalPerspectiveDsl.g:2141:6: ( ruleQualifiedNameInStaticImport )
                     {
-                    // InternalPerspectiveDsl.g:2040:6: ( ruleQualifiedNameInStaticImport )
-                    // InternalPerspectiveDsl.g:2041:7: ruleQualifiedNameInStaticImport
+                    // InternalPerspectiveDsl.g:2141:6: ( ruleQualifiedNameInStaticImport )
+                    // InternalPerspectiveDsl.g:2142:7: ruleQualifiedNameInStaticImport
                     {
                     if ( state.backtracking==0 ) {
 
@@ -5747,11 +6045,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:2055:5: ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    // InternalPerspectiveDsl.g:2156:5: ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
-                    if ( (LA18_0==52) ) {
+                    if ( (LA18_0==54) ) {
                         alt18=1;
                     }
                     else if ( (LA18_0==RULE_ID) ) {
@@ -5766,15 +6064,15 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:2056:6: ( (lv_wildcard_5_0= '*' ) )
+                            // InternalPerspectiveDsl.g:2157:6: ( (lv_wildcard_5_0= '*' ) )
                             {
-                            // InternalPerspectiveDsl.g:2056:6: ( (lv_wildcard_5_0= '*' ) )
-                            // InternalPerspectiveDsl.g:2057:7: (lv_wildcard_5_0= '*' )
+                            // InternalPerspectiveDsl.g:2157:6: ( (lv_wildcard_5_0= '*' ) )
+                            // InternalPerspectiveDsl.g:2158:7: (lv_wildcard_5_0= '*' )
                             {
-                            // InternalPerspectiveDsl.g:2057:7: (lv_wildcard_5_0= '*' )
-                            // InternalPerspectiveDsl.g:2058:8: lv_wildcard_5_0= '*'
+                            // InternalPerspectiveDsl.g:2158:7: (lv_wildcard_5_0= '*' )
+                            // InternalPerspectiveDsl.g:2159:8: lv_wildcard_5_0= '*'
                             {
-                            lv_wildcard_5_0=(Token)match(input,52,FOLLOW_27); if (state.failed) return current;
+                            lv_wildcard_5_0=(Token)match(input,54,FOLLOW_27); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               								newLeafNode(lv_wildcard_5_0, grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0());
@@ -5798,13 +6096,13 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:2071:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            // InternalPerspectiveDsl.g:2172:6: ( (lv_memberName_6_0= ruleValidID ) )
                             {
-                            // InternalPerspectiveDsl.g:2071:6: ( (lv_memberName_6_0= ruleValidID ) )
-                            // InternalPerspectiveDsl.g:2072:7: (lv_memberName_6_0= ruleValidID )
+                            // InternalPerspectiveDsl.g:2172:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            // InternalPerspectiveDsl.g:2173:7: (lv_memberName_6_0= ruleValidID )
                             {
-                            // InternalPerspectiveDsl.g:2072:7: (lv_memberName_6_0= ruleValidID )
-                            // InternalPerspectiveDsl.g:2073:8: lv_memberName_6_0= ruleValidID
+                            // InternalPerspectiveDsl.g:2173:7: (lv_memberName_6_0= ruleValidID )
+                            // InternalPerspectiveDsl.g:2174:8: lv_memberName_6_0= ruleValidID
                             {
                             if ( state.backtracking==0 ) {
 
@@ -5848,13 +6146,13 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2093:4: ( ( ruleQualifiedName ) )
+                    // InternalPerspectiveDsl.g:2194:4: ( ( ruleQualifiedName ) )
                     {
-                    // InternalPerspectiveDsl.g:2093:4: ( ( ruleQualifiedName ) )
-                    // InternalPerspectiveDsl.g:2094:5: ( ruleQualifiedName )
+                    // InternalPerspectiveDsl.g:2194:4: ( ( ruleQualifiedName ) )
+                    // InternalPerspectiveDsl.g:2195:5: ( ruleQualifiedName )
                     {
-                    // InternalPerspectiveDsl.g:2094:5: ( ruleQualifiedName )
-                    // InternalPerspectiveDsl.g:2095:6: ruleQualifiedName
+                    // InternalPerspectiveDsl.g:2195:5: ( ruleQualifiedName )
+                    // InternalPerspectiveDsl.g:2196:6: ruleQualifiedName
                     {
                     if ( state.backtracking==0 ) {
 
@@ -5888,13 +6186,13 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:2110:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    // InternalPerspectiveDsl.g:2211:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
                     {
-                    // InternalPerspectiveDsl.g:2110:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
-                    // InternalPerspectiveDsl.g:2111:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    // InternalPerspectiveDsl.g:2211:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    // InternalPerspectiveDsl.g:2212:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
                     {
-                    // InternalPerspectiveDsl.g:2111:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
-                    // InternalPerspectiveDsl.g:2112:6: lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard
+                    // InternalPerspectiveDsl.g:2212:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    // InternalPerspectiveDsl.g:2213:6: lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard
                     {
                     if ( state.backtracking==0 ) {
 
@@ -5929,18 +6227,18 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:2130:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    // InternalPerspectiveDsl.g:2231:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
                     {
-                    // InternalPerspectiveDsl.g:2130:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
-                    // InternalPerspectiveDsl.g:2131:5: ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    // InternalPerspectiveDsl.g:2231:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    // InternalPerspectiveDsl.g:2232:5: ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
                     {
-                    // InternalPerspectiveDsl.g:2131:5: ( (lv_fqnImport_9_0= 'ns' ) )
-                    // InternalPerspectiveDsl.g:2132:6: (lv_fqnImport_9_0= 'ns' )
+                    // InternalPerspectiveDsl.g:2232:5: ( (lv_fqnImport_9_0= 'ns' ) )
+                    // InternalPerspectiveDsl.g:2233:6: (lv_fqnImport_9_0= 'ns' )
                     {
-                    // InternalPerspectiveDsl.g:2132:6: (lv_fqnImport_9_0= 'ns' )
-                    // InternalPerspectiveDsl.g:2133:7: lv_fqnImport_9_0= 'ns'
+                    // InternalPerspectiveDsl.g:2233:6: (lv_fqnImport_9_0= 'ns' )
+                    // InternalPerspectiveDsl.g:2234:7: lv_fqnImport_9_0= 'ns'
                     {
-                    lv_fqnImport_9_0=(Token)match(input,53,FOLLOW_4); if (state.failed) return current;
+                    lv_fqnImport_9_0=(Token)match(input,55,FOLLOW_4); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(lv_fqnImport_9_0, grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0());
@@ -5960,11 +6258,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:2145:5: ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
-                    // InternalPerspectiveDsl.g:2146:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    // InternalPerspectiveDsl.g:2246:5: ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    // InternalPerspectiveDsl.g:2247:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
                     {
-                    // InternalPerspectiveDsl.g:2146:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
-                    // InternalPerspectiveDsl.g:2147:7: lv_importedFullyQualifiedName_10_0= ruleQualifiedName
+                    // InternalPerspectiveDsl.g:2247:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    // InternalPerspectiveDsl.g:2248:7: lv_importedFullyQualifiedName_10_0= ruleQualifiedName
                     {
                     if ( state.backtracking==0 ) {
 
@@ -6004,18 +6302,18 @@
 
             }
 
-            // InternalPerspectiveDsl.g:2166:3: (otherlv_11= ';' )?
+            // InternalPerspectiveDsl.g:2267:3: (otherlv_11= ';' )?
             int alt20=2;
             int LA20_0 = input.LA(1);
 
-            if ( (LA20_0==54) ) {
+            if ( (LA20_0==56) ) {
                 alt20=1;
             }
             switch (alt20) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2167:4: otherlv_11= ';'
+                    // InternalPerspectiveDsl.g:2268:4: otherlv_11= ';'
                     {
-                    otherlv_11=(Token)match(input,54,FOLLOW_2); if (state.failed) return current;
+                    otherlv_11=(Token)match(input,56,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_11, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3());
@@ -6052,7 +6350,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotation"
-    // InternalPerspectiveDsl.g:2176:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
+    // InternalPerspectiveDsl.g:2277:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
     public final EObject entryRuleXAnnotation() throws RecognitionException {
         EObject current = null;
 
@@ -6060,8 +6358,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2176:52: (iv_ruleXAnnotation= ruleXAnnotation EOF )
-            // InternalPerspectiveDsl.g:2177:2: iv_ruleXAnnotation= ruleXAnnotation EOF
+            // InternalPerspectiveDsl.g:2277:52: (iv_ruleXAnnotation= ruleXAnnotation EOF )
+            // InternalPerspectiveDsl.g:2278:2: iv_ruleXAnnotation= ruleXAnnotation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationRule()); 
@@ -6092,7 +6390,7 @@
 
 
     // $ANTLR start "ruleXAnnotation"
-    // InternalPerspectiveDsl.g:2183: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:2284: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;
 
@@ -6111,14 +6409,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2189: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:2190: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:2290: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:2291: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:2190: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:2191: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:2291: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:2292: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:2191:3: ()
-            // InternalPerspectiveDsl.g:2192:4: 
+            // InternalPerspectiveDsl.g:2292:3: ()
+            // InternalPerspectiveDsl.g:2293:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -6130,17 +6428,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,55,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,57,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:2202:3: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:2203:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:2303:3: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:2304:4: ( ruleQualifiedName )
             {
-            // InternalPerspectiveDsl.g:2203:4: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:2204:5: ruleQualifiedName
+            // InternalPerspectiveDsl.g:2304:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:2305:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -6170,21 +6468,21 @@
 
             }
 
-            // InternalPerspectiveDsl.g:2218: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:2319:3: ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
             int alt23=2;
             int LA23_0 = input.LA(1);
 
-            if ( (LA23_0==56) && (synpred1_InternalPerspectiveDsl())) {
+            if ( (LA23_0==58) && (synpred1_InternalPerspectiveDsl())) {
                 alt23=1;
             }
             switch (alt23) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2219: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:2320: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:2219:4: ( ( '(' )=>otherlv_3= '(' )
-                    // InternalPerspectiveDsl.g:2220:5: ( '(' )=>otherlv_3= '('
+                    // InternalPerspectiveDsl.g:2320:4: ( ( '(' )=>otherlv_3= '(' )
+                    // InternalPerspectiveDsl.g:2321:5: ( '(' )=>otherlv_3= '('
                     {
-                    otherlv_3=(Token)match(input,56,FOLLOW_29); if (state.failed) return current;
+                    otherlv_3=(Token)match(input,58,FOLLOW_29); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
@@ -6193,21 +6491,21 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:2226:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
+                    // InternalPerspectiveDsl.g:2327:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
                     int alt22=3;
                     alt22 = dfa22.predict(input);
                     switch (alt22) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:2227:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalPerspectiveDsl.g:2328:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
                             {
-                            // InternalPerspectiveDsl.g:2227:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
-                            // InternalPerspectiveDsl.g:2228:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            // InternalPerspectiveDsl.g:2328:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalPerspectiveDsl.g:2329:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
                             {
-                            // InternalPerspectiveDsl.g:2228:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
-                            // InternalPerspectiveDsl.g:2229:7: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalPerspectiveDsl.g:2329:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
+                            // InternalPerspectiveDsl.g:2330:7: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
                             {
-                            // InternalPerspectiveDsl.g:2238:7: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
-                            // InternalPerspectiveDsl.g:2239:8: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
+                            // InternalPerspectiveDsl.g:2339:7: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalPerspectiveDsl.g:2340:8: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
                             {
                             if ( state.backtracking==0 ) {
 
@@ -6238,32 +6536,32 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:2256:6: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            // InternalPerspectiveDsl.g:2357:6: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
                             loop21:
                             do {
                                 int alt21=2;
                                 int LA21_0 = input.LA(1);
 
-                                if ( (LA21_0==57) ) {
+                                if ( (LA21_0==59) ) {
                                     alt21=1;
                                 }
 
 
                                 switch (alt21) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:2257:7: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // InternalPerspectiveDsl.g:2358:7: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
                             	    {
-                            	    otherlv_5=(Token)match(input,57,FOLLOW_4); if (state.failed) return current;
+                            	    otherlv_5=(Token)match(input,59,FOLLOW_4); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      							newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
                             	      						
                             	    }
-                            	    // InternalPerspectiveDsl.g:2261:7: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
-                            	    // InternalPerspectiveDsl.g:2262:8: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // InternalPerspectiveDsl.g:2362:7: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // InternalPerspectiveDsl.g:2363:8: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
                             	    {
-                            	    // InternalPerspectiveDsl.g:2271:8: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
-                            	    // InternalPerspectiveDsl.g:2272:9: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
+                            	    // InternalPerspectiveDsl.g:2372:8: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // InternalPerspectiveDsl.g:2373:9: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -6310,13 +6608,13 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:2292:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // InternalPerspectiveDsl.g:2393:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
                             {
-                            // InternalPerspectiveDsl.g:2292:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
-                            // InternalPerspectiveDsl.g:2293:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // InternalPerspectiveDsl.g:2393:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // InternalPerspectiveDsl.g:2394:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
                             {
-                            // InternalPerspectiveDsl.g:2293:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
-                            // InternalPerspectiveDsl.g:2294:7: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
+                            // InternalPerspectiveDsl.g:2394:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // InternalPerspectiveDsl.g:2395:7: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
                             {
                             if ( state.backtracking==0 ) {
 
@@ -6353,7 +6651,7 @@
 
                     }
 
-                    otherlv_8=(Token)match(input,58,FOLLOW_2); if (state.failed) return current;
+                    otherlv_8=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
@@ -6390,7 +6688,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValuePair"
-    // InternalPerspectiveDsl.g:2321:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
+    // InternalPerspectiveDsl.g:2422:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
     public final EObject entryRuleXAnnotationElementValuePair() throws RecognitionException {
         EObject current = null;
 
@@ -6398,8 +6696,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2321:68: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
-            // InternalPerspectiveDsl.g:2322:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
+            // InternalPerspectiveDsl.g:2422:68: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
+            // InternalPerspectiveDsl.g:2423:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); 
@@ -6430,7 +6728,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValuePair"
-    // InternalPerspectiveDsl.g:2328:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
+    // InternalPerspectiveDsl.g:2429:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
     public final EObject ruleXAnnotationElementValuePair() throws RecognitionException {
         EObject current = null;
 
@@ -6442,23 +6740,23 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2334:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
-            // InternalPerspectiveDsl.g:2335:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // InternalPerspectiveDsl.g:2435:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
+            // InternalPerspectiveDsl.g:2436:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
             {
-            // InternalPerspectiveDsl.g:2335:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
-            // InternalPerspectiveDsl.g:2336:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // InternalPerspectiveDsl.g:2436:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // InternalPerspectiveDsl.g:2437:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
             {
-            // InternalPerspectiveDsl.g:2336:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
-            // InternalPerspectiveDsl.g:2337:4: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // InternalPerspectiveDsl.g:2437:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
+            // InternalPerspectiveDsl.g:2438:4: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
             {
-            // InternalPerspectiveDsl.g:2346:4: ( ( ( ruleValidID ) ) otherlv_1= '=' )
-            // InternalPerspectiveDsl.g:2347:5: ( ( ruleValidID ) ) otherlv_1= '='
+            // InternalPerspectiveDsl.g:2447:4: ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // InternalPerspectiveDsl.g:2448:5: ( ( ruleValidID ) ) otherlv_1= '='
             {
-            // InternalPerspectiveDsl.g:2347:5: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:2348:6: ( ruleValidID )
+            // InternalPerspectiveDsl.g:2448:5: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:2449:6: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:2348:6: ( ruleValidID )
-            // InternalPerspectiveDsl.g:2349:7: ruleValidID
+            // InternalPerspectiveDsl.g:2449:6: ( ruleValidID )
+            // InternalPerspectiveDsl.g:2450:7: ruleValidID
             {
             if ( state.backtracking==0 ) {
 
@@ -6488,7 +6786,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,59,FOLLOW_33); if (state.failed) return current;
+            otherlv_1=(Token)match(input,61,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
@@ -6500,11 +6798,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:2369:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
-            // InternalPerspectiveDsl.g:2370:4: (lv_value_2_0= ruleXAnnotationElementValue )
+            // InternalPerspectiveDsl.g:2470:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // InternalPerspectiveDsl.g:2471:4: (lv_value_2_0= ruleXAnnotationElementValue )
             {
-            // InternalPerspectiveDsl.g:2370:4: (lv_value_2_0= ruleXAnnotationElementValue )
-            // InternalPerspectiveDsl.g:2371:5: lv_value_2_0= ruleXAnnotationElementValue
+            // InternalPerspectiveDsl.g:2471:4: (lv_value_2_0= ruleXAnnotationElementValue )
+            // InternalPerspectiveDsl.g:2472:5: lv_value_2_0= ruleXAnnotationElementValue
             {
             if ( state.backtracking==0 ) {
 
@@ -6560,7 +6858,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
-    // InternalPerspectiveDsl.g:2392:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
+    // InternalPerspectiveDsl.g:2493:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
     public final EObject entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
         EObject current = null;
 
@@ -6568,8 +6866,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2392:75: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
-            // InternalPerspectiveDsl.g:2393:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
+            // InternalPerspectiveDsl.g:2493:75: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalPerspectiveDsl.g:2494:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
@@ -6600,7 +6898,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
-    // InternalPerspectiveDsl.g:2399: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:2500: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;
 
@@ -6622,27 +6920,27 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2405: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:2406: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:2506: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:2507: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:2406: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:2507:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
             int alt28=2;
             alt28 = dfa28.predict(input);
             switch (alt28) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2407:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalPerspectiveDsl.g:2508:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                     {
-                    // InternalPerspectiveDsl.g:2407:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // InternalPerspectiveDsl.g:2408:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    // InternalPerspectiveDsl.g:2508:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalPerspectiveDsl.g:2509:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
                     {
-                    // InternalPerspectiveDsl.g:2408:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // InternalPerspectiveDsl.g:2409:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalPerspectiveDsl.g:2509:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalPerspectiveDsl.g:2510:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
                     {
-                    // InternalPerspectiveDsl.g:2416:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // InternalPerspectiveDsl.g:2417:6: () otherlv_1= '#' otherlv_2= '['
+                    // InternalPerspectiveDsl.g:2517:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalPerspectiveDsl.g:2518:6: () otherlv_1= '#' otherlv_2= '['
                     {
-                    // InternalPerspectiveDsl.g:2417:6: ()
-                    // InternalPerspectiveDsl.g:2418:7: 
+                    // InternalPerspectiveDsl.g:2518:6: ()
+                    // InternalPerspectiveDsl.g:2519:7: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -6654,13 +6952,13 @@
 
                     }
 
-                    otherlv_1=(Token)match(input,60,FOLLOW_34); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,62,FOLLOW_34); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
                       					
                     }
-                    otherlv_2=(Token)match(input,61,FOLLOW_35); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,63,FOLLOW_35); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
@@ -6672,22 +6970,22 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:2434:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    // InternalPerspectiveDsl.g:2535:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
                     int alt25=2;
                     int LA25_0 = input.LA(1);
 
-                    if ( ((LA25_0>=RULE_ID && LA25_0<=RULE_DECIMAL)||LA25_0==14||(LA25_0>=49 && LA25_0<=51)||(LA25_0>=55 && LA25_0<=56)||(LA25_0>=60 && LA25_0<=61)||LA25_0==68||(LA25_0>=84 && LA25_0<=85)||LA25_0==89||LA25_0==97||LA25_0==99||(LA25_0>=103 && LA25_0<=105)||(LA25_0>=108 && LA25_0<=117)||LA25_0==119) ) {
+                    if ( ((LA25_0>=RULE_ID && LA25_0<=RULE_DECIMAL)||LA25_0==14||(LA25_0>=51 && LA25_0<=53)||(LA25_0>=57 && LA25_0<=58)||(LA25_0>=62 && LA25_0<=63)||LA25_0==70||(LA25_0>=86 && LA25_0<=87)||LA25_0==91||LA25_0==99||LA25_0==101||(LA25_0>=105 && LA25_0<=107)||(LA25_0>=110 && LA25_0<=119)||LA25_0==121) ) {
                         alt25=1;
                     }
                     switch (alt25) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:2435:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalPerspectiveDsl.g:2536:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             {
-                            // InternalPerspectiveDsl.g:2435:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // InternalPerspectiveDsl.g:2436:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalPerspectiveDsl.g:2536:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalPerspectiveDsl.g:2537:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                             {
-                            // InternalPerspectiveDsl.g:2436:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // InternalPerspectiveDsl.g:2437:7: lv_elements_3_0= ruleXAnnotationOrExpression
+                            // InternalPerspectiveDsl.g:2537:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalPerspectiveDsl.g:2538:7: lv_elements_3_0= ruleXAnnotationOrExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -6718,32 +7016,32 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:2454:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalPerspectiveDsl.g:2555:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             loop24:
                             do {
                                 int alt24=2;
                                 int LA24_0 = input.LA(1);
 
-                                if ( (LA24_0==57) ) {
+                                if ( (LA24_0==59) ) {
                                     alt24=1;
                                 }
 
 
                                 switch (alt24) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:2455:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2556:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_4=(Token)match(input,57,FOLLOW_33); if (state.failed) return current;
+                            	    otherlv_4=(Token)match(input,59,FOLLOW_33); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
                             	      					
                             	    }
-                            	    // InternalPerspectiveDsl.g:2459:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // InternalPerspectiveDsl.g:2460:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2560:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2561:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // InternalPerspectiveDsl.g:2460:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // InternalPerspectiveDsl.g:2461:8: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    // InternalPerspectiveDsl.g:2561:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2562:8: lv_elements_5_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -6789,7 +7087,7 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,62,FOLLOW_2); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
@@ -6802,10 +7100,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2486:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // InternalPerspectiveDsl.g:2587:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
                     {
-                    // InternalPerspectiveDsl.g:2486:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
-                    // InternalPerspectiveDsl.g:2487:4: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    // InternalPerspectiveDsl.g:2587:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // InternalPerspectiveDsl.g:2588:4: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
                     {
                     if ( state.backtracking==0 ) {
 
@@ -6823,19 +7121,19 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalPerspectiveDsl.g:2495:4: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    // InternalPerspectiveDsl.g:2596:4: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
                     int alt27=2;
                     int LA27_0 = input.LA(1);
 
-                    if ( (LA27_0==57) ) {
+                    if ( (LA27_0==59) ) {
                         alt27=1;
                     }
                     switch (alt27) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:2496:5: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            // InternalPerspectiveDsl.g:2597:5: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
                             {
-                            // InternalPerspectiveDsl.g:2496:5: ()
-                            // InternalPerspectiveDsl.g:2497:6: 
+                            // InternalPerspectiveDsl.g:2597:5: ()
+                            // InternalPerspectiveDsl.g:2598:6: 
                             {
                             if ( state.backtracking==0 ) {
 
@@ -6847,33 +7145,33 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:2503:5: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            // InternalPerspectiveDsl.g:2604:5: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
                             int cnt26=0;
                             loop26:
                             do {
                                 int alt26=2;
                                 int LA26_0 = input.LA(1);
 
-                                if ( (LA26_0==57) ) {
+                                if ( (LA26_0==59) ) {
                                     alt26=1;
                                 }
 
 
                                 switch (alt26) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:2504:6: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2605:6: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_9=(Token)match(input,57,FOLLOW_33); if (state.failed) return current;
+                            	    otherlv_9=(Token)match(input,59,FOLLOW_33); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
                             	      					
                             	    }
-                            	    // InternalPerspectiveDsl.g:2508:6: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
-                            	    // InternalPerspectiveDsl.g:2509:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2609:6: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2610:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // InternalPerspectiveDsl.g:2509:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
-                            	    // InternalPerspectiveDsl.g:2510:8: lv_elements_10_0= ruleXAnnotationOrExpression
+                            	    // InternalPerspectiveDsl.g:2610:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2611:8: lv_elements_10_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -6955,7 +7253,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValue"
-    // InternalPerspectiveDsl.g:2534:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
+    // InternalPerspectiveDsl.g:2635:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
     public final EObject entryRuleXAnnotationElementValue() throws RecognitionException {
         EObject current = null;
 
@@ -6963,8 +7261,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2534:64: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
-            // InternalPerspectiveDsl.g:2535:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
+            // InternalPerspectiveDsl.g:2635:64: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
+            // InternalPerspectiveDsl.g:2636:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); 
@@ -6995,7 +7293,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValue"
-    // InternalPerspectiveDsl.g:2541: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:2642: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;
 
@@ -7014,27 +7312,27 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2547: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:2548: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:2648: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:2649: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:2548: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:2649:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
             int alt31=2;
             alt31 = dfa31.predict(input);
             switch (alt31) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2549:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalPerspectiveDsl.g:2650:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                     {
-                    // InternalPerspectiveDsl.g:2549:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // InternalPerspectiveDsl.g:2550:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    // InternalPerspectiveDsl.g:2650:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalPerspectiveDsl.g:2651:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
                     {
-                    // InternalPerspectiveDsl.g:2550:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // InternalPerspectiveDsl.g:2551:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalPerspectiveDsl.g:2651:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalPerspectiveDsl.g:2652:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
                     {
-                    // InternalPerspectiveDsl.g:2558:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // InternalPerspectiveDsl.g:2559:6: () otherlv_1= '#' otherlv_2= '['
+                    // InternalPerspectiveDsl.g:2659:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalPerspectiveDsl.g:2660:6: () otherlv_1= '#' otherlv_2= '['
                     {
-                    // InternalPerspectiveDsl.g:2559:6: ()
-                    // InternalPerspectiveDsl.g:2560:7: 
+                    // InternalPerspectiveDsl.g:2660:6: ()
+                    // InternalPerspectiveDsl.g:2661:7: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -7046,13 +7344,13 @@
 
                     }
 
-                    otherlv_1=(Token)match(input,60,FOLLOW_34); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,62,FOLLOW_34); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
                       					
                     }
-                    otherlv_2=(Token)match(input,61,FOLLOW_35); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,63,FOLLOW_35); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
@@ -7064,22 +7362,22 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:2576:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    // InternalPerspectiveDsl.g:2677:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
                     int alt30=2;
                     int LA30_0 = input.LA(1);
 
-                    if ( ((LA30_0>=RULE_ID && LA30_0<=RULE_DECIMAL)||LA30_0==14||(LA30_0>=49 && LA30_0<=51)||(LA30_0>=55 && LA30_0<=56)||(LA30_0>=60 && LA30_0<=61)||LA30_0==68||(LA30_0>=84 && LA30_0<=85)||LA30_0==89||LA30_0==97||LA30_0==99||(LA30_0>=103 && LA30_0<=105)||(LA30_0>=108 && LA30_0<=117)||LA30_0==119) ) {
+                    if ( ((LA30_0>=RULE_ID && LA30_0<=RULE_DECIMAL)||LA30_0==14||(LA30_0>=51 && LA30_0<=53)||(LA30_0>=57 && LA30_0<=58)||(LA30_0>=62 && LA30_0<=63)||LA30_0==70||(LA30_0>=86 && LA30_0<=87)||LA30_0==91||LA30_0==99||LA30_0==101||(LA30_0>=105 && LA30_0<=107)||(LA30_0>=110 && LA30_0<=119)||LA30_0==121) ) {
                         alt30=1;
                     }
                     switch (alt30) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:2577:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalPerspectiveDsl.g:2678:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             {
-                            // InternalPerspectiveDsl.g:2577:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // InternalPerspectiveDsl.g:2578:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalPerspectiveDsl.g:2678:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalPerspectiveDsl.g:2679:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                             {
-                            // InternalPerspectiveDsl.g:2578:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // InternalPerspectiveDsl.g:2579:7: lv_elements_3_0= ruleXAnnotationOrExpression
+                            // InternalPerspectiveDsl.g:2679:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalPerspectiveDsl.g:2680:7: lv_elements_3_0= ruleXAnnotationOrExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -7110,32 +7408,32 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:2596:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalPerspectiveDsl.g:2697:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             loop29:
                             do {
                                 int alt29=2;
                                 int LA29_0 = input.LA(1);
 
-                                if ( (LA29_0==57) ) {
+                                if ( (LA29_0==59) ) {
                                     alt29=1;
                                 }
 
 
                                 switch (alt29) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:2597:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2698:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_4=(Token)match(input,57,FOLLOW_33); if (state.failed) return current;
+                            	    otherlv_4=(Token)match(input,59,FOLLOW_33); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
                             	      					
                             	    }
-                            	    // InternalPerspectiveDsl.g:2601:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // InternalPerspectiveDsl.g:2602:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2702:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2703:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // InternalPerspectiveDsl.g:2602:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // InternalPerspectiveDsl.g:2603:8: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    // InternalPerspectiveDsl.g:2703:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2704:8: lv_elements_5_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -7181,7 +7479,7 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,62,FOLLOW_2); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
@@ -7194,7 +7492,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2628:3: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
+                    // InternalPerspectiveDsl.g:2729:3: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -7240,7 +7538,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationOrExpression"
-    // InternalPerspectiveDsl.g:2640:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
+    // InternalPerspectiveDsl.g:2741:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
     public final EObject entryRuleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7248,8 +7546,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2640:64: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
-            // InternalPerspectiveDsl.g:2641:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
+            // InternalPerspectiveDsl.g:2741:64: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
+            // InternalPerspectiveDsl.g:2742:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); 
@@ -7280,7 +7578,7 @@
 
 
     // $ANTLR start "ruleXAnnotationOrExpression"
-    // InternalPerspectiveDsl.g:2647:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:2748:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
     public final EObject ruleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7293,17 +7591,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2653:2: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:2654:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            // InternalPerspectiveDsl.g:2754:2: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:2755:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:2654:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            // InternalPerspectiveDsl.g:2755:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
             int alt32=2;
             int LA32_0 = input.LA(1);
 
-            if ( (LA32_0==55) ) {
+            if ( (LA32_0==57) ) {
                 alt32=1;
             }
-            else if ( ((LA32_0>=RULE_ID && LA32_0<=RULE_DECIMAL)||LA32_0==14||(LA32_0>=49 && LA32_0<=51)||LA32_0==56||(LA32_0>=60 && LA32_0<=61)||LA32_0==68||(LA32_0>=84 && LA32_0<=85)||LA32_0==89||LA32_0==97||LA32_0==99||(LA32_0>=103 && LA32_0<=105)||(LA32_0>=108 && LA32_0<=117)||LA32_0==119) ) {
+            else if ( ((LA32_0>=RULE_ID && LA32_0<=RULE_DECIMAL)||LA32_0==14||(LA32_0>=51 && LA32_0<=53)||LA32_0==58||(LA32_0>=62 && LA32_0<=63)||LA32_0==70||(LA32_0>=86 && LA32_0<=87)||LA32_0==91||LA32_0==99||LA32_0==101||(LA32_0>=105 && LA32_0<=107)||(LA32_0>=110 && LA32_0<=119)||LA32_0==121) ) {
                 alt32=2;
             }
             else {
@@ -7315,7 +7613,7 @@
             }
             switch (alt32) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2655:3: this_XAnnotation_0= ruleXAnnotation
+                    // InternalPerspectiveDsl.g:2756:3: this_XAnnotation_0= ruleXAnnotation
                     {
                     if ( state.backtracking==0 ) {
 
@@ -7337,7 +7635,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2664:3: this_XExpression_1= ruleXExpression
+                    // InternalPerspectiveDsl.g:2765:3: this_XExpression_1= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -7383,7 +7681,7 @@
 
 
     // $ANTLR start "entryRuleXExpression"
-    // InternalPerspectiveDsl.g:2676:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
+    // InternalPerspectiveDsl.g:2777:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
     public final EObject entryRuleXExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7391,8 +7689,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2676:52: (iv_ruleXExpression= ruleXExpression EOF )
-            // InternalPerspectiveDsl.g:2677:2: iv_ruleXExpression= ruleXExpression EOF
+            // InternalPerspectiveDsl.g:2777:52: (iv_ruleXExpression= ruleXExpression EOF )
+            // InternalPerspectiveDsl.g:2778:2: iv_ruleXExpression= ruleXExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionRule()); 
@@ -7423,7 +7721,7 @@
 
 
     // $ANTLR start "ruleXExpression"
-    // InternalPerspectiveDsl.g:2683:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
+    // InternalPerspectiveDsl.g:2784:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
     public final EObject ruleXExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7434,8 +7732,8 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2689:2: (this_XAssignment_0= ruleXAssignment )
-            // InternalPerspectiveDsl.g:2690:2: this_XAssignment_0= ruleXAssignment
+            // InternalPerspectiveDsl.g:2790:2: (this_XAssignment_0= ruleXAssignment )
+            // InternalPerspectiveDsl.g:2791:2: this_XAssignment_0= ruleXAssignment
             {
             if ( state.backtracking==0 ) {
 
@@ -7475,7 +7773,7 @@
 
 
     // $ANTLR start "entryRuleXAssignment"
-    // InternalPerspectiveDsl.g:2701:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
+    // InternalPerspectiveDsl.g:2802:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
     public final EObject entryRuleXAssignment() throws RecognitionException {
         EObject current = null;
 
@@ -7483,8 +7781,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2701:52: (iv_ruleXAssignment= ruleXAssignment EOF )
-            // InternalPerspectiveDsl.g:2702:2: iv_ruleXAssignment= ruleXAssignment EOF
+            // InternalPerspectiveDsl.g:2802:52: (iv_ruleXAssignment= ruleXAssignment EOF )
+            // InternalPerspectiveDsl.g:2803:2: iv_ruleXAssignment= ruleXAssignment EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAssignmentRule()); 
@@ -7515,7 +7813,7 @@
 
 
     // $ANTLR start "ruleXAssignment"
-    // InternalPerspectiveDsl.g:2708: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:2809: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;
 
@@ -7530,22 +7828,22 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2714:2: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
-            // InternalPerspectiveDsl.g:2715:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            // InternalPerspectiveDsl.g:2815:2: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
+            // InternalPerspectiveDsl.g:2816:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
             {
-            // InternalPerspectiveDsl.g:2715:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            // InternalPerspectiveDsl.g:2816:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
             int alt34=2;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
                 int LA34_1 = input.LA(2);
 
-                if ( (LA34_1==59) ) {
-                    alt34=1;
-                }
-                else if ( (LA34_1==EOF||(LA34_1>=RULE_ID && LA34_1<=RULE_DECIMAL)||(LA34_1>=14 && LA34_1<=15)||(LA34_1>=49 && LA34_1<=52)||LA34_1==54||(LA34_1>=56 && LA34_1<=58)||(LA34_1>=60 && LA34_1<=95)||(LA34_1>=97 && LA34_1<=120)) ) {
+                if ( (LA34_1==EOF||(LA34_1>=RULE_ID && LA34_1<=RULE_DECIMAL)||(LA34_1>=14 && LA34_1<=15)||(LA34_1>=51 && LA34_1<=54)||LA34_1==56||(LA34_1>=58 && LA34_1<=60)||(LA34_1>=62 && LA34_1<=97)||(LA34_1>=99 && LA34_1<=122)) ) {
                     alt34=2;
                 }
+                else if ( (LA34_1==61) ) {
+                    alt34=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
@@ -7555,16 +7853,16 @@
                 }
                 }
                 break;
-            case 108:
+            case 110:
                 {
                 int LA34_2 = input.LA(2);
 
-                if ( (LA34_2==EOF||(LA34_2>=RULE_ID && LA34_2<=RULE_DECIMAL)||(LA34_2>=14 && LA34_2<=15)||(LA34_2>=49 && LA34_2<=52)||LA34_2==54||(LA34_2>=56 && LA34_2<=58)||(LA34_2>=60 && LA34_2<=95)||(LA34_2>=97 && LA34_2<=120)) ) {
-                    alt34=2;
-                }
-                else if ( (LA34_2==59) ) {
+                if ( (LA34_2==61) ) {
                     alt34=1;
                 }
+                else if ( (LA34_2==EOF||(LA34_2>=RULE_ID && LA34_2<=RULE_DECIMAL)||(LA34_2>=14 && LA34_2<=15)||(LA34_2>=51 && LA34_2<=54)||LA34_2==56||(LA34_2>=58 && LA34_2<=60)||(LA34_2>=62 && LA34_2<=97)||(LA34_2>=99 && LA34_2<=122)) ) {
+                    alt34=2;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
@@ -7574,16 +7872,16 @@
                 }
                 }
                 break;
-            case 50:
+            case 52:
                 {
                 int LA34_3 = input.LA(2);
 
-                if ( (LA34_3==EOF||(LA34_3>=RULE_ID && LA34_3<=RULE_DECIMAL)||(LA34_3>=14 && LA34_3<=15)||(LA34_3>=49 && LA34_3<=52)||LA34_3==54||(LA34_3>=56 && LA34_3<=58)||(LA34_3>=60 && LA34_3<=95)||(LA34_3>=97 && LA34_3<=120)) ) {
-                    alt34=2;
-                }
-                else if ( (LA34_3==59) ) {
+                if ( (LA34_3==61) ) {
                     alt34=1;
                 }
+                else if ( (LA34_3==EOF||(LA34_3>=RULE_ID && LA34_3<=RULE_DECIMAL)||(LA34_3>=14 && LA34_3<=15)||(LA34_3>=51 && LA34_3<=54)||LA34_3==56||(LA34_3>=58 && LA34_3<=60)||(LA34_3>=62 && LA34_3<=97)||(LA34_3>=99 && LA34_3<=122)) ) {
+                    alt34=2;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
@@ -7593,14 +7891,14 @@
                 }
                 }
                 break;
-            case 49:
+            case 51:
                 {
                 int LA34_4 = input.LA(2);
 
-                if ( (LA34_4==59) ) {
+                if ( (LA34_4==61) ) {
                     alt34=1;
                 }
-                else if ( (LA34_4==EOF||(LA34_4>=RULE_ID && LA34_4<=RULE_DECIMAL)||(LA34_4>=14 && LA34_4<=15)||(LA34_4>=49 && LA34_4<=52)||LA34_4==54||(LA34_4>=56 && LA34_4<=58)||(LA34_4>=60 && LA34_4<=95)||(LA34_4>=97 && LA34_4<=120)) ) {
+                else if ( (LA34_4==EOF||(LA34_4>=RULE_ID && LA34_4<=RULE_DECIMAL)||(LA34_4>=14 && LA34_4<=15)||(LA34_4>=51 && LA34_4<=54)||LA34_4==56||(LA34_4>=58 && LA34_4<=60)||(LA34_4>=62 && LA34_4<=97)||(LA34_4>=99 && LA34_4<=122)) ) {
                     alt34=2;
                 }
                 else {
@@ -7612,14 +7910,14 @@
                 }
                 }
                 break;
-            case 51:
+            case 53:
                 {
                 int LA34_5 = input.LA(2);
 
-                if ( (LA34_5==EOF||(LA34_5>=RULE_ID && LA34_5<=RULE_DECIMAL)||(LA34_5>=14 && LA34_5<=15)||(LA34_5>=49 && LA34_5<=52)||LA34_5==54||(LA34_5>=56 && LA34_5<=58)||(LA34_5>=60 && LA34_5<=95)||(LA34_5>=97 && LA34_5<=120)) ) {
+                if ( (LA34_5==EOF||(LA34_5>=RULE_ID && LA34_5<=RULE_DECIMAL)||(LA34_5>=14 && LA34_5<=15)||(LA34_5>=51 && LA34_5<=54)||LA34_5==56||(LA34_5>=58 && LA34_5<=60)||(LA34_5>=62 && LA34_5<=97)||(LA34_5>=99 && LA34_5<=122)) ) {
                     alt34=2;
                 }
-                else if ( (LA34_5==59) ) {
+                else if ( (LA34_5==61) ) {
                     alt34=1;
                 }
                 else {
@@ -7636,20 +7934,18 @@
             case RULE_HEX:
             case RULE_DECIMAL:
             case 14:
-            case 56:
-            case 60:
-            case 61:
-            case 68:
-            case 84:
-            case 85:
-            case 89:
-            case 97:
+            case 58:
+            case 62:
+            case 63:
+            case 70:
+            case 86:
+            case 87:
+            case 91:
             case 99:
-            case 103:
-            case 104:
+            case 101:
             case 105:
-            case 109:
-            case 110:
+            case 106:
+            case 107:
             case 111:
             case 112:
             case 113:
@@ -7657,7 +7953,9 @@
             case 115:
             case 116:
             case 117:
+            case 118:
             case 119:
+            case 121:
                 {
                 alt34=2;
                 }
@@ -7672,13 +7970,13 @@
 
             switch (alt34) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2716:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // InternalPerspectiveDsl.g:2817:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
                     {
-                    // InternalPerspectiveDsl.g:2716:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
-                    // InternalPerspectiveDsl.g:2717:4: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
+                    // InternalPerspectiveDsl.g:2817:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // InternalPerspectiveDsl.g:2818:4: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
                     {
-                    // InternalPerspectiveDsl.g:2717:4: ()
-                    // InternalPerspectiveDsl.g:2718:5: 
+                    // InternalPerspectiveDsl.g:2818:4: ()
+                    // InternalPerspectiveDsl.g:2819:5: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -7690,11 +7988,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:2724:4: ( ( ruleFeatureCallID ) )
-                    // InternalPerspectiveDsl.g:2725:5: ( ruleFeatureCallID )
+                    // InternalPerspectiveDsl.g:2825:4: ( ( ruleFeatureCallID ) )
+                    // InternalPerspectiveDsl.g:2826:5: ( ruleFeatureCallID )
                     {
-                    // InternalPerspectiveDsl.g:2725:5: ( ruleFeatureCallID )
-                    // InternalPerspectiveDsl.g:2726:6: ruleFeatureCallID
+                    // InternalPerspectiveDsl.g:2826:5: ( ruleFeatureCallID )
+                    // InternalPerspectiveDsl.g:2827:6: ruleFeatureCallID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -7739,11 +8037,11 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalPerspectiveDsl.g:2747:4: ( (lv_value_3_0= ruleXAssignment ) )
-                    // InternalPerspectiveDsl.g:2748:5: (lv_value_3_0= ruleXAssignment )
+                    // InternalPerspectiveDsl.g:2848:4: ( (lv_value_3_0= ruleXAssignment ) )
+                    // InternalPerspectiveDsl.g:2849:5: (lv_value_3_0= ruleXAssignment )
                     {
-                    // InternalPerspectiveDsl.g:2748:5: (lv_value_3_0= ruleXAssignment )
-                    // InternalPerspectiveDsl.g:2749:6: lv_value_3_0= ruleXAssignment
+                    // InternalPerspectiveDsl.g:2849:5: (lv_value_3_0= ruleXAssignment )
+                    // InternalPerspectiveDsl.g:2850:6: lv_value_3_0= ruleXAssignment
                     {
                     if ( state.backtracking==0 ) {
 
@@ -7781,10 +8079,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2768:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // InternalPerspectiveDsl.g:2869:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
                     {
-                    // InternalPerspectiveDsl.g:2768:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
-                    // InternalPerspectiveDsl.g:2769:4: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    // InternalPerspectiveDsl.g:2869:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // InternalPerspectiveDsl.g:2870:4: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
                     {
                     if ( state.backtracking==0 ) {
 
@@ -7802,21 +8100,21 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalPerspectiveDsl.g:2777:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    // InternalPerspectiveDsl.g:2878:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
                     int alt33=2;
                     alt33 = dfa33.predict(input);
                     switch (alt33) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:2778:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // InternalPerspectiveDsl.g:2879:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
                             {
-                            // InternalPerspectiveDsl.g:2778:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
-                            // InternalPerspectiveDsl.g:2779:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
+                            // InternalPerspectiveDsl.g:2879:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
+                            // InternalPerspectiveDsl.g:2880:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
                             {
-                            // InternalPerspectiveDsl.g:2789:6: ( () ( ( ruleOpMultiAssign ) ) )
-                            // InternalPerspectiveDsl.g:2790:7: () ( ( ruleOpMultiAssign ) )
+                            // InternalPerspectiveDsl.g:2890:6: ( () ( ( ruleOpMultiAssign ) ) )
+                            // InternalPerspectiveDsl.g:2891:7: () ( ( ruleOpMultiAssign ) )
                             {
-                            // InternalPerspectiveDsl.g:2790:7: ()
-                            // InternalPerspectiveDsl.g:2791:8: 
+                            // InternalPerspectiveDsl.g:2891:7: ()
+                            // InternalPerspectiveDsl.g:2892:8: 
                             {
                             if ( state.backtracking==0 ) {
 
@@ -7828,11 +8126,11 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:2797:7: ( ( ruleOpMultiAssign ) )
-                            // InternalPerspectiveDsl.g:2798:8: ( ruleOpMultiAssign )
+                            // InternalPerspectiveDsl.g:2898:7: ( ( ruleOpMultiAssign ) )
+                            // InternalPerspectiveDsl.g:2899:8: ( ruleOpMultiAssign )
                             {
-                            // InternalPerspectiveDsl.g:2798:8: ( ruleOpMultiAssign )
-                            // InternalPerspectiveDsl.g:2799:9: ruleOpMultiAssign
+                            // InternalPerspectiveDsl.g:2899:8: ( ruleOpMultiAssign )
+                            // InternalPerspectiveDsl.g:2900:9: ruleOpMultiAssign
                             {
                             if ( state.backtracking==0 ) {
 
@@ -7868,11 +8166,11 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:2815:5: ( (lv_rightOperand_7_0= ruleXAssignment ) )
-                            // InternalPerspectiveDsl.g:2816:6: (lv_rightOperand_7_0= ruleXAssignment )
+                            // InternalPerspectiveDsl.g:2916:5: ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // InternalPerspectiveDsl.g:2917:6: (lv_rightOperand_7_0= ruleXAssignment )
                             {
-                            // InternalPerspectiveDsl.g:2816:6: (lv_rightOperand_7_0= ruleXAssignment )
-                            // InternalPerspectiveDsl.g:2817:7: lv_rightOperand_7_0= ruleXAssignment
+                            // InternalPerspectiveDsl.g:2917:6: (lv_rightOperand_7_0= ruleXAssignment )
+                            // InternalPerspectiveDsl.g:2918:7: lv_rightOperand_7_0= ruleXAssignment
                             {
                             if ( state.backtracking==0 ) {
 
@@ -7940,7 +8238,7 @@
 
 
     // $ANTLR start "entryRuleOpSingleAssign"
-    // InternalPerspectiveDsl.g:2840:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
+    // InternalPerspectiveDsl.g:2941:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
     public final String entryRuleOpSingleAssign() throws RecognitionException {
         String current = null;
 
@@ -7948,8 +8246,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2840:54: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
-            // InternalPerspectiveDsl.g:2841:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
+            // InternalPerspectiveDsl.g:2941:54: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
+            // InternalPerspectiveDsl.g:2942:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpSingleAssignRule()); 
@@ -7980,7 +8278,7 @@
 
 
     // $ANTLR start "ruleOpSingleAssign"
-    // InternalPerspectiveDsl.g:2847:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
+    // InternalPerspectiveDsl.g:2948:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
     public final AntlrDatatypeRuleToken ruleOpSingleAssign() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -7990,10 +8288,10 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2853:2: (kw= '=' )
-            // InternalPerspectiveDsl.g:2854:2: kw= '='
+            // InternalPerspectiveDsl.g:2954:2: (kw= '=' )
+            // InternalPerspectiveDsl.g:2955:2: 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);
@@ -8022,7 +8320,7 @@
 
 
     // $ANTLR start "entryRuleOpMultiAssign"
-    // InternalPerspectiveDsl.g:2862:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
+    // InternalPerspectiveDsl.g:2963:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
     public final String entryRuleOpMultiAssign() throws RecognitionException {
         String current = null;
 
@@ -8030,8 +8328,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2862:53: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
-            // InternalPerspectiveDsl.g:2863:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
+            // InternalPerspectiveDsl.g:2963:53: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
+            // InternalPerspectiveDsl.g:2964:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpMultiAssignRule()); 
@@ -8062,7 +8360,7 @@
 
 
     // $ANTLR start "ruleOpMultiAssign"
-    // InternalPerspectiveDsl.g:2869:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) ;
+    // InternalPerspectiveDsl.g:2970: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();
 
@@ -8072,43 +8370,43 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2875:2: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
-            // InternalPerspectiveDsl.g:2876:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            // InternalPerspectiveDsl.g:2976:2: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
+            // InternalPerspectiveDsl.g:2977:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
             {
-            // InternalPerspectiveDsl.g:2876:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            // InternalPerspectiveDsl.g:2977:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
             int alt36=7;
             switch ( input.LA(1) ) {
-            case 63:
+            case 65:
                 {
                 alt36=1;
                 }
                 break;
-            case 64:
+            case 66:
                 {
                 alt36=2;
                 }
                 break;
-            case 65:
+            case 67:
                 {
                 alt36=3;
                 }
                 break;
-            case 66:
+            case 68:
                 {
                 alt36=4;
                 }
                 break;
-            case 67:
+            case 69:
                 {
                 alt36=5;
                 }
                 break;
-            case 68:
+            case 70:
                 {
                 alt36=6;
                 }
                 break;
-            case 69:
+            case 71:
                 {
                 alt36=7;
                 }
@@ -8123,9 +8421,9 @@
 
             switch (alt36) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2877:3: kw= '+='
+                    // InternalPerspectiveDsl.g:2978:3: kw= '+='
                     {
-                    kw=(Token)match(input,63,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,65,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -8136,9 +8434,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2883:3: kw= '-='
+                    // InternalPerspectiveDsl.g:2984:3: kw= '-='
                     {
-                    kw=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,66,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -8149,9 +8447,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:2889:3: kw= '*='
+                    // InternalPerspectiveDsl.g:2990:3: kw= '*='
                     {
-                    kw=(Token)match(input,65,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,67,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -8162,9 +8460,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:2895:3: kw= '/='
+                    // InternalPerspectiveDsl.g:2996:3: 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);
@@ -8175,9 +8473,9 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:2901:3: kw= '%='
+                    // InternalPerspectiveDsl.g:3002:3: kw= '%='
                     {
-                    kw=(Token)match(input,67,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,69,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -8188,26 +8486,26 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:2907:3: (kw= '<' kw= '<' kw= '=' )
+                    // InternalPerspectiveDsl.g:3008:3: (kw= '<' kw= '<' kw= '=' )
                     {
-                    // InternalPerspectiveDsl.g:2907:3: (kw= '<' kw= '<' kw= '=' )
-                    // InternalPerspectiveDsl.g:2908:4: kw= '<' kw= '<' kw= '='
+                    // InternalPerspectiveDsl.g:3008:3: (kw= '<' kw= '<' kw= '=' )
+                    // InternalPerspectiveDsl.g:3009:4: kw= '<' kw= '<' kw= '='
                     {
-                    kw=(Token)match(input,68,FOLLOW_39); if (state.failed) return current;
+                    kw=(Token)match(input,70,FOLLOW_39); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0());
                       			
                     }
-                    kw=(Token)match(input,68,FOLLOW_32); if (state.failed) return current;
+                    kw=(Token)match(input,70,FOLLOW_32); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_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);
@@ -8221,30 +8519,30 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:2925:3: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalPerspectiveDsl.g:3026:3: (kw= '>' (kw= '>' )? kw= '>=' )
                     {
-                    // InternalPerspectiveDsl.g:2925:3: (kw= '>' (kw= '>' )? kw= '>=' )
-                    // InternalPerspectiveDsl.g:2926:4: kw= '>' (kw= '>' )? kw= '>='
+                    // InternalPerspectiveDsl.g:3026:3: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalPerspectiveDsl.g:3027:4: kw= '>' (kw= '>' )? kw= '>='
                     {
-                    kw=(Token)match(input,69,FOLLOW_40); if (state.failed) return current;
+                    kw=(Token)match(input,71,FOLLOW_40); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0());
                       			
                     }
-                    // InternalPerspectiveDsl.g:2931:4: (kw= '>' )?
+                    // InternalPerspectiveDsl.g:3032:4: (kw= '>' )?
                     int alt35=2;
                     int LA35_0 = input.LA(1);
 
-                    if ( (LA35_0==69) ) {
+                    if ( (LA35_0==71) ) {
                         alt35=1;
                     }
                     switch (alt35) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:2932:5: kw= '>'
+                            // InternalPerspectiveDsl.g:3033:5: kw= '>'
                             {
-                            kw=(Token)match(input,69,FOLLOW_41); if (state.failed) return current;
+                            kw=(Token)match(input,71,FOLLOW_41); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(kw);
@@ -8257,7 +8555,7 @@
 
                     }
 
-                    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);
@@ -8295,7 +8593,7 @@
 
 
     // $ANTLR start "entryRuleXOrExpression"
-    // InternalPerspectiveDsl.g:2948:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
+    // InternalPerspectiveDsl.g:3049:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
     public final EObject entryRuleXOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8303,8 +8601,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2948:54: (iv_ruleXOrExpression= ruleXOrExpression EOF )
-            // InternalPerspectiveDsl.g:2949:2: iv_ruleXOrExpression= ruleXOrExpression EOF
+            // InternalPerspectiveDsl.g:3049:54: (iv_ruleXOrExpression= ruleXOrExpression EOF )
+            // InternalPerspectiveDsl.g:3050:2: iv_ruleXOrExpression= ruleXOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXOrExpressionRule()); 
@@ -8335,7 +8633,7 @@
 
 
     // $ANTLR start "ruleXOrExpression"
-    // InternalPerspectiveDsl.g:2955:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
+    // InternalPerspectiveDsl.g:3056: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;
 
@@ -8348,11 +8646,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2961:2: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
-            // InternalPerspectiveDsl.g:2962:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3062:2: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
+            // InternalPerspectiveDsl.g:3063:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
             {
-            // InternalPerspectiveDsl.g:2962:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
-            // InternalPerspectiveDsl.g:2963:3: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            // InternalPerspectiveDsl.g:3063:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3064:3: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -8370,13 +8668,13 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:2971:3: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            // InternalPerspectiveDsl.g:3072:3: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
             loop37:
             do {
                 int alt37=2;
                 int LA37_0 = input.LA(1);
 
-                if ( (LA37_0==71) ) {
+                if ( (LA37_0==73) ) {
                     int LA37_2 = input.LA(2);
 
                     if ( (synpred8_InternalPerspectiveDsl()) ) {
@@ -8389,16 +8687,16 @@
 
                 switch (alt37) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:2972:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalPerspectiveDsl.g:3073:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
             	    {
-            	    // InternalPerspectiveDsl.g:2972:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
-            	    // InternalPerspectiveDsl.g:2973:5: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
+            	    // InternalPerspectiveDsl.g:3073:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
+            	    // InternalPerspectiveDsl.g:3074:5: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:2983:5: ( () ( ( ruleOpOr ) ) )
-            	    // InternalPerspectiveDsl.g:2984:6: () ( ( ruleOpOr ) )
+            	    // InternalPerspectiveDsl.g:3084:5: ( () ( ( ruleOpOr ) ) )
+            	    // InternalPerspectiveDsl.g:3085:6: () ( ( ruleOpOr ) )
             	    {
-            	    // InternalPerspectiveDsl.g:2984:6: ()
-            	    // InternalPerspectiveDsl.g:2985:7: 
+            	    // InternalPerspectiveDsl.g:3085:6: ()
+            	    // InternalPerspectiveDsl.g:3086:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -8410,11 +8708,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:2991:6: ( ( ruleOpOr ) )
-            	    // InternalPerspectiveDsl.g:2992:7: ( ruleOpOr )
+            	    // InternalPerspectiveDsl.g:3092:6: ( ( ruleOpOr ) )
+            	    // InternalPerspectiveDsl.g:3093:7: ( ruleOpOr )
             	    {
-            	    // InternalPerspectiveDsl.g:2992:7: ( ruleOpOr )
-            	    // InternalPerspectiveDsl.g:2993:8: ruleOpOr
+            	    // InternalPerspectiveDsl.g:3093:7: ( ruleOpOr )
+            	    // InternalPerspectiveDsl.g:3094:8: ruleOpOr
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -8450,11 +8748,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3009:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
-            	    // InternalPerspectiveDsl.g:3010:5: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalPerspectiveDsl.g:3110:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalPerspectiveDsl.g:3111:5: (lv_rightOperand_3_0= ruleXAndExpression )
             	    {
-            	    // InternalPerspectiveDsl.g:3010:5: (lv_rightOperand_3_0= ruleXAndExpression )
-            	    // InternalPerspectiveDsl.g:3011:6: lv_rightOperand_3_0= ruleXAndExpression
+            	    // InternalPerspectiveDsl.g:3111:5: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalPerspectiveDsl.g:3112:6: lv_rightOperand_3_0= ruleXAndExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -8519,7 +8817,7 @@
 
 
     // $ANTLR start "entryRuleOpOr"
-    // InternalPerspectiveDsl.g:3033:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
+    // InternalPerspectiveDsl.g:3134:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
     public final String entryRuleOpOr() throws RecognitionException {
         String current = null;
 
@@ -8527,8 +8825,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3033:44: (iv_ruleOpOr= ruleOpOr EOF )
-            // InternalPerspectiveDsl.g:3034:2: iv_ruleOpOr= ruleOpOr EOF
+            // InternalPerspectiveDsl.g:3134:44: (iv_ruleOpOr= ruleOpOr EOF )
+            // InternalPerspectiveDsl.g:3135:2: iv_ruleOpOr= ruleOpOr EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpOrRule()); 
@@ -8559,7 +8857,7 @@
 
 
     // $ANTLR start "ruleOpOr"
-    // InternalPerspectiveDsl.g:3040:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
+    // InternalPerspectiveDsl.g:3141:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
     public final AntlrDatatypeRuleToken ruleOpOr() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -8569,10 +8867,10 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3046:2: (kw= '||' )
-            // InternalPerspectiveDsl.g:3047:2: kw= '||'
+            // InternalPerspectiveDsl.g:3147:2: (kw= '||' )
+            // InternalPerspectiveDsl.g:3148:2: 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);
@@ -8601,7 +8899,7 @@
 
 
     // $ANTLR start "entryRuleXAndExpression"
-    // InternalPerspectiveDsl.g:3055:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
+    // InternalPerspectiveDsl.g:3156:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
     public final EObject entryRuleXAndExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8609,8 +8907,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3055:55: (iv_ruleXAndExpression= ruleXAndExpression EOF )
-            // InternalPerspectiveDsl.g:3056:2: iv_ruleXAndExpression= ruleXAndExpression EOF
+            // InternalPerspectiveDsl.g:3156:55: (iv_ruleXAndExpression= ruleXAndExpression EOF )
+            // InternalPerspectiveDsl.g:3157:2: iv_ruleXAndExpression= ruleXAndExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAndExpressionRule()); 
@@ -8641,7 +8939,7 @@
 
 
     // $ANTLR start "ruleXAndExpression"
-    // InternalPerspectiveDsl.g:3062:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
+    // InternalPerspectiveDsl.g:3163: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;
 
@@ -8654,11 +8952,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3068:2: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
-            // InternalPerspectiveDsl.g:3069:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3169:2: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
+            // InternalPerspectiveDsl.g:3170:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
             {
-            // InternalPerspectiveDsl.g:3069:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
-            // InternalPerspectiveDsl.g:3070:3: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            // InternalPerspectiveDsl.g:3170:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3171:3: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -8676,13 +8974,13 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:3078:3: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            // InternalPerspectiveDsl.g:3179:3: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
             loop38:
             do {
                 int alt38=2;
                 int LA38_0 = input.LA(1);
 
-                if ( (LA38_0==72) ) {
+                if ( (LA38_0==74) ) {
                     int LA38_2 = input.LA(2);
 
                     if ( (synpred9_InternalPerspectiveDsl()) ) {
@@ -8695,16 +8993,16 @@
 
                 switch (alt38) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:3079:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // InternalPerspectiveDsl.g:3180:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3079:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
-            	    // InternalPerspectiveDsl.g:3080:5: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
+            	    // InternalPerspectiveDsl.g:3180:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
+            	    // InternalPerspectiveDsl.g:3181:5: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3090:5: ( () ( ( ruleOpAnd ) ) )
-            	    // InternalPerspectiveDsl.g:3091:6: () ( ( ruleOpAnd ) )
+            	    // InternalPerspectiveDsl.g:3191:5: ( () ( ( ruleOpAnd ) ) )
+            	    // InternalPerspectiveDsl.g:3192:6: () ( ( ruleOpAnd ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3091:6: ()
-            	    // InternalPerspectiveDsl.g:3092:7: 
+            	    // InternalPerspectiveDsl.g:3192:6: ()
+            	    // InternalPerspectiveDsl.g:3193:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -8716,11 +9014,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3098:6: ( ( ruleOpAnd ) )
-            	    // InternalPerspectiveDsl.g:3099:7: ( ruleOpAnd )
+            	    // InternalPerspectiveDsl.g:3199:6: ( ( ruleOpAnd ) )
+            	    // InternalPerspectiveDsl.g:3200:7: ( ruleOpAnd )
             	    {
-            	    // InternalPerspectiveDsl.g:3099:7: ( ruleOpAnd )
-            	    // InternalPerspectiveDsl.g:3100:8: ruleOpAnd
+            	    // InternalPerspectiveDsl.g:3200:7: ( ruleOpAnd )
+            	    // InternalPerspectiveDsl.g:3201:8: ruleOpAnd
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -8756,11 +9054,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3116:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
-            	    // InternalPerspectiveDsl.g:3117:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // InternalPerspectiveDsl.g:3217:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // InternalPerspectiveDsl.g:3218:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
             	    {
-            	    // InternalPerspectiveDsl.g:3117:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
-            	    // InternalPerspectiveDsl.g:3118:6: lv_rightOperand_3_0= ruleXEqualityExpression
+            	    // InternalPerspectiveDsl.g:3218:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // InternalPerspectiveDsl.g:3219:6: lv_rightOperand_3_0= ruleXEqualityExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -8825,7 +9123,7 @@
 
 
     // $ANTLR start "entryRuleOpAnd"
-    // InternalPerspectiveDsl.g:3140:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
+    // InternalPerspectiveDsl.g:3241:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
     public final String entryRuleOpAnd() throws RecognitionException {
         String current = null;
 
@@ -8833,8 +9131,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3140:45: (iv_ruleOpAnd= ruleOpAnd EOF )
-            // InternalPerspectiveDsl.g:3141:2: iv_ruleOpAnd= ruleOpAnd EOF
+            // InternalPerspectiveDsl.g:3241:45: (iv_ruleOpAnd= ruleOpAnd EOF )
+            // InternalPerspectiveDsl.g:3242:2: iv_ruleOpAnd= ruleOpAnd EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpAndRule()); 
@@ -8865,7 +9163,7 @@
 
 
     // $ANTLR start "ruleOpAnd"
-    // InternalPerspectiveDsl.g:3147:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
+    // InternalPerspectiveDsl.g:3248:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
     public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -8875,10 +9173,10 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3153:2: (kw= '&&' )
-            // InternalPerspectiveDsl.g:3154:2: kw= '&&'
+            // InternalPerspectiveDsl.g:3254:2: (kw= '&&' )
+            // InternalPerspectiveDsl.g:3255:2: 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);
@@ -8907,7 +9205,7 @@
 
 
     // $ANTLR start "entryRuleXEqualityExpression"
-    // InternalPerspectiveDsl.g:3162:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
+    // InternalPerspectiveDsl.g:3263:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
     public final EObject entryRuleXEqualityExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8915,8 +9213,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3162:60: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
-            // InternalPerspectiveDsl.g:3163:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
+            // InternalPerspectiveDsl.g:3263:60: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
+            // InternalPerspectiveDsl.g:3264:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
@@ -8947,7 +9245,7 @@
 
 
     // $ANTLR start "ruleXEqualityExpression"
-    // InternalPerspectiveDsl.g:3169:1: ruleXEqualityExpression returns [EObject current=null] : (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) ;
+    // InternalPerspectiveDsl.g:3270: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;
 
@@ -8960,11 +9258,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3175:2: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
-            // InternalPerspectiveDsl.g:3176:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3276:2: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
+            // InternalPerspectiveDsl.g:3277:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
             {
-            // InternalPerspectiveDsl.g:3176:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
-            // InternalPerspectiveDsl.g:3177:3: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            // InternalPerspectiveDsl.g:3277:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3278:3: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -8982,12 +9280,12 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:3185:3: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            // InternalPerspectiveDsl.g:3286:3: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
             loop39:
             do {
                 int alt39=2;
                 switch ( input.LA(1) ) {
-                case 73:
+                case 75:
                     {
                     int LA39_2 = input.LA(2);
 
@@ -8998,7 +9296,7 @@
 
                     }
                     break;
-                case 74:
+                case 76:
                     {
                     int LA39_3 = input.LA(2);
 
@@ -9009,7 +9307,7 @@
 
                     }
                     break;
-                case 75:
+                case 77:
                     {
                     int LA39_4 = input.LA(2);
 
@@ -9020,7 +9318,7 @@
 
                     }
                     break;
-                case 76:
+                case 78:
                     {
                     int LA39_5 = input.LA(2);
 
@@ -9036,16 +9334,16 @@
 
                 switch (alt39) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:3186:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    // InternalPerspectiveDsl.g:3287:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3186:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
-            	    // InternalPerspectiveDsl.g:3187:5: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
+            	    // InternalPerspectiveDsl.g:3287:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
+            	    // InternalPerspectiveDsl.g:3288:5: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3197:5: ( () ( ( ruleOpEquality ) ) )
-            	    // InternalPerspectiveDsl.g:3198:6: () ( ( ruleOpEquality ) )
+            	    // InternalPerspectiveDsl.g:3298:5: ( () ( ( ruleOpEquality ) ) )
+            	    // InternalPerspectiveDsl.g:3299:6: () ( ( ruleOpEquality ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3198:6: ()
-            	    // InternalPerspectiveDsl.g:3199:7: 
+            	    // InternalPerspectiveDsl.g:3299:6: ()
+            	    // InternalPerspectiveDsl.g:3300:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9057,11 +9355,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3205:6: ( ( ruleOpEquality ) )
-            	    // InternalPerspectiveDsl.g:3206:7: ( ruleOpEquality )
+            	    // InternalPerspectiveDsl.g:3306:6: ( ( ruleOpEquality ) )
+            	    // InternalPerspectiveDsl.g:3307:7: ( ruleOpEquality )
             	    {
-            	    // InternalPerspectiveDsl.g:3206:7: ( ruleOpEquality )
-            	    // InternalPerspectiveDsl.g:3207:8: ruleOpEquality
+            	    // InternalPerspectiveDsl.g:3307:7: ( ruleOpEquality )
+            	    // InternalPerspectiveDsl.g:3308:8: ruleOpEquality
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9097,11 +9395,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3223:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
-            	    // InternalPerspectiveDsl.g:3224:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    // InternalPerspectiveDsl.g:3324:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    // InternalPerspectiveDsl.g:3325:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
             	    {
-            	    // InternalPerspectiveDsl.g:3224:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
-            	    // InternalPerspectiveDsl.g:3225:6: lv_rightOperand_3_0= ruleXRelationalExpression
+            	    // InternalPerspectiveDsl.g:3325:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    // InternalPerspectiveDsl.g:3326:6: lv_rightOperand_3_0= ruleXRelationalExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9166,7 +9464,7 @@
 
 
     // $ANTLR start "entryRuleOpEquality"
-    // InternalPerspectiveDsl.g:3247:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
+    // InternalPerspectiveDsl.g:3348:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
     public final String entryRuleOpEquality() throws RecognitionException {
         String current = null;
 
@@ -9174,8 +9472,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3247:50: (iv_ruleOpEquality= ruleOpEquality EOF )
-            // InternalPerspectiveDsl.g:3248:2: iv_ruleOpEquality= ruleOpEquality EOF
+            // InternalPerspectiveDsl.g:3348:50: (iv_ruleOpEquality= ruleOpEquality EOF )
+            // InternalPerspectiveDsl.g:3349:2: iv_ruleOpEquality= ruleOpEquality EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpEqualityRule()); 
@@ -9206,7 +9504,7 @@
 
 
     // $ANTLR start "ruleOpEquality"
-    // InternalPerspectiveDsl.g:3254:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
+    // InternalPerspectiveDsl.g:3355:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
     public final AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -9216,28 +9514,28 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3260:2: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
-            // InternalPerspectiveDsl.g:3261:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            // InternalPerspectiveDsl.g:3361:2: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
+            // InternalPerspectiveDsl.g:3362:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
             {
-            // InternalPerspectiveDsl.g:3261:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            // InternalPerspectiveDsl.g:3362:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
             int alt40=4;
             switch ( input.LA(1) ) {
-            case 73:
+            case 75:
                 {
                 alt40=1;
                 }
                 break;
-            case 74:
+            case 76:
                 {
                 alt40=2;
                 }
                 break;
-            case 75:
+            case 77:
                 {
                 alt40=3;
                 }
                 break;
-            case 76:
+            case 78:
                 {
                 alt40=4;
                 }
@@ -9252,9 +9550,9 @@
 
             switch (alt40) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3262:3: kw= '=='
+                    // InternalPerspectiveDsl.g:3363: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);
@@ -9265,9 +9563,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3268:3: kw= '!='
+                    // InternalPerspectiveDsl.g:3369: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);
@@ -9278,9 +9576,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3274:3: kw= '==='
+                    // InternalPerspectiveDsl.g:3375: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);
@@ -9291,9 +9589,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3280:3: kw= '!=='
+                    // InternalPerspectiveDsl.g:3381: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);
@@ -9328,7 +9626,7 @@
 
 
     // $ANTLR start "entryRuleXRelationalExpression"
-    // InternalPerspectiveDsl.g:3289:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
+    // InternalPerspectiveDsl.g:3390:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
     public final EObject entryRuleXRelationalExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9336,8 +9634,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3289:62: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
-            // InternalPerspectiveDsl.g:3290:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
+            // InternalPerspectiveDsl.g:3390:62: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
+            // InternalPerspectiveDsl.g:3391:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
@@ -9368,7 +9666,7 @@
 
 
     // $ANTLR start "ruleXRelationalExpression"
-    // InternalPerspectiveDsl.g:3296: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:3397: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;
 
@@ -9384,11 +9682,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3302:2: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
-            // InternalPerspectiveDsl.g:3303:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            // InternalPerspectiveDsl.g:3403:2: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:3404:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
             {
-            // InternalPerspectiveDsl.g:3303:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
-            // InternalPerspectiveDsl.g:3304:3: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            // InternalPerspectiveDsl.g:3404:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            // InternalPerspectiveDsl.g:3405: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 ) {
 
@@ -9406,12 +9704,12 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:3312:3: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            // InternalPerspectiveDsl.g:3413:3: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
             loop41:
             do {
                 int alt41=3;
                 switch ( input.LA(1) ) {
-                case 68:
+                case 70:
                     {
                     int LA41_2 = input.LA(2);
 
@@ -9422,7 +9720,7 @@
 
                     }
                     break;
-                case 69:
+                case 71:
                     {
                     int LA41_3 = input.LA(2);
 
@@ -9433,7 +9731,7 @@
 
                     }
                     break;
-                case 77:
+                case 79:
                     {
                     int LA41_4 = input.LA(2);
 
@@ -9444,7 +9742,7 @@
 
                     }
                     break;
-                case 70:
+                case 72:
                     {
                     int LA41_5 = input.LA(2);
 
@@ -9460,19 +9758,19 @@
 
                 switch (alt41) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:3313:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    // InternalPerspectiveDsl.g:3414:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3313:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
-            	    // InternalPerspectiveDsl.g:3314:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalPerspectiveDsl.g:3414:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    // InternalPerspectiveDsl.g:3415:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3314:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
-            	    // InternalPerspectiveDsl.g:3315:6: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
+            	    // InternalPerspectiveDsl.g:3415:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
+            	    // InternalPerspectiveDsl.g:3416:6: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
             	    {
-            	    // InternalPerspectiveDsl.g:3321:6: ( () otherlv_2= 'instanceof' )
-            	    // InternalPerspectiveDsl.g:3322:7: () otherlv_2= 'instanceof'
+            	    // InternalPerspectiveDsl.g:3422:6: ( () otherlv_2= 'instanceof' )
+            	    // InternalPerspectiveDsl.g:3423:7: () otherlv_2= 'instanceof'
             	    {
-            	    // InternalPerspectiveDsl.g:3322:7: ()
-            	    // InternalPerspectiveDsl.g:3323:8: 
+            	    // InternalPerspectiveDsl.g:3423:7: ()
+            	    // InternalPerspectiveDsl.g:3424:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9484,7 +9782,7 @@
 
             	    }
 
-            	    otherlv_2=(Token)match(input,77,FOLLOW_46); if (state.failed) return current;
+            	    otherlv_2=(Token)match(input,79,FOLLOW_46); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      							newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
@@ -9496,11 +9794,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3335:5: ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    // InternalPerspectiveDsl.g:3336:6: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalPerspectiveDsl.g:3436:5: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalPerspectiveDsl.g:3437:6: (lv_type_3_0= ruleJvmTypeReference )
             	    {
-            	    // InternalPerspectiveDsl.g:3336:6: (lv_type_3_0= ruleJvmTypeReference )
-            	    // InternalPerspectiveDsl.g:3337:7: lv_type_3_0= ruleJvmTypeReference
+            	    // InternalPerspectiveDsl.g:3437:6: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalPerspectiveDsl.g:3438:7: lv_type_3_0= ruleJvmTypeReference
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9538,19 +9836,19 @@
             	    }
             	    break;
             	case 2 :
-            	    // InternalPerspectiveDsl.g:3356:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    // InternalPerspectiveDsl.g:3457:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3356:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
-            	    // InternalPerspectiveDsl.g:3357:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    // InternalPerspectiveDsl.g:3457:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    // InternalPerspectiveDsl.g:3458:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3357:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
-            	    // InternalPerspectiveDsl.g:3358:6: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
+            	    // InternalPerspectiveDsl.g:3458:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
+            	    // InternalPerspectiveDsl.g:3459:6: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3368:6: ( () ( ( ruleOpCompare ) ) )
-            	    // InternalPerspectiveDsl.g:3369:7: () ( ( ruleOpCompare ) )
+            	    // InternalPerspectiveDsl.g:3469:6: ( () ( ( ruleOpCompare ) ) )
+            	    // InternalPerspectiveDsl.g:3470:7: () ( ( ruleOpCompare ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3369:7: ()
-            	    // InternalPerspectiveDsl.g:3370:8: 
+            	    // InternalPerspectiveDsl.g:3470:7: ()
+            	    // InternalPerspectiveDsl.g:3471:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9562,11 +9860,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3376:7: ( ( ruleOpCompare ) )
-            	    // InternalPerspectiveDsl.g:3377:8: ( ruleOpCompare )
+            	    // InternalPerspectiveDsl.g:3477:7: ( ( ruleOpCompare ) )
+            	    // InternalPerspectiveDsl.g:3478:8: ( ruleOpCompare )
             	    {
-            	    // InternalPerspectiveDsl.g:3377:8: ( ruleOpCompare )
-            	    // InternalPerspectiveDsl.g:3378:9: ruleOpCompare
+            	    // InternalPerspectiveDsl.g:3478:8: ( ruleOpCompare )
+            	    // InternalPerspectiveDsl.g:3479:9: ruleOpCompare
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9602,11 +9900,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3394:5: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
-            	    // InternalPerspectiveDsl.g:3395:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    // InternalPerspectiveDsl.g:3495:5: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    // InternalPerspectiveDsl.g:3496:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
             	    {
-            	    // InternalPerspectiveDsl.g:3395:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
-            	    // InternalPerspectiveDsl.g:3396:7: lv_rightOperand_6_0= ruleXOtherOperatorExpression
+            	    // InternalPerspectiveDsl.g:3496:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    // InternalPerspectiveDsl.g:3497:7: lv_rightOperand_6_0= ruleXOtherOperatorExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9674,7 +9972,7 @@
 
 
     // $ANTLR start "entryRuleOpCompare"
-    // InternalPerspectiveDsl.g:3419:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
+    // InternalPerspectiveDsl.g:3520:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
     public final String entryRuleOpCompare() throws RecognitionException {
         String current = null;
 
@@ -9682,8 +9980,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3419:49: (iv_ruleOpCompare= ruleOpCompare EOF )
-            // InternalPerspectiveDsl.g:3420:2: iv_ruleOpCompare= ruleOpCompare EOF
+            // InternalPerspectiveDsl.g:3520:49: (iv_ruleOpCompare= ruleOpCompare EOF )
+            // InternalPerspectiveDsl.g:3521:2: iv_ruleOpCompare= ruleOpCompare EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpCompareRule()); 
@@ -9714,7 +10012,7 @@
 
 
     // $ANTLR start "ruleOpCompare"
-    // InternalPerspectiveDsl.g:3426:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) ;
+    // InternalPerspectiveDsl.g:3527:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) ;
     public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -9724,25 +10022,25 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3432:2: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
-            // InternalPerspectiveDsl.g:3433:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            // InternalPerspectiveDsl.g:3533:2: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
+            // InternalPerspectiveDsl.g:3534:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
             {
-            // InternalPerspectiveDsl.g:3433:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            // InternalPerspectiveDsl.g:3534:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
             int alt42=4;
             switch ( input.LA(1) ) {
-            case 70:
+            case 72:
                 {
                 alt42=1;
                 }
                 break;
-            case 68:
+            case 70:
                 {
                 int LA42_2 = input.LA(2);
 
-                if ( (LA42_2==EOF||(LA42_2>=RULE_ID && LA42_2<=RULE_DECIMAL)||LA42_2==14||(LA42_2>=49 && LA42_2<=51)||LA42_2==56||(LA42_2>=60 && LA42_2<=61)||LA42_2==68||(LA42_2>=84 && LA42_2<=85)||LA42_2==89||LA42_2==97||LA42_2==99||(LA42_2>=103 && LA42_2<=105)||(LA42_2>=108 && LA42_2<=117)||LA42_2==119) ) {
+                if ( (LA42_2==EOF||(LA42_2>=RULE_ID && LA42_2<=RULE_DECIMAL)||LA42_2==14||(LA42_2>=51 && LA42_2<=53)||LA42_2==58||(LA42_2>=62 && LA42_2<=63)||LA42_2==70||(LA42_2>=86 && LA42_2<=87)||LA42_2==91||LA42_2==99||LA42_2==101||(LA42_2>=105 && LA42_2<=107)||(LA42_2>=110 && LA42_2<=119)||LA42_2==121) ) {
                     alt42=4;
                 }
-                else if ( (LA42_2==59) ) {
+                else if ( (LA42_2==61) ) {
                     alt42=2;
                 }
                 else {
@@ -9754,7 +10052,7 @@
                 }
                 }
                 break;
-            case 69:
+            case 71:
                 {
                 alt42=3;
                 }
@@ -9769,9 +10067,9 @@
 
             switch (alt42) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3434:3: kw= '>='
+                    // InternalPerspectiveDsl.g:3535: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);
@@ -9782,19 +10080,19 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3440:3: (kw= '<' kw= '=' )
+                    // InternalPerspectiveDsl.g:3541:3: (kw= '<' kw= '=' )
                     {
-                    // InternalPerspectiveDsl.g:3440:3: (kw= '<' kw= '=' )
-                    // InternalPerspectiveDsl.g:3441:4: kw= '<' kw= '='
+                    // InternalPerspectiveDsl.g:3541:3: (kw= '<' kw= '=' )
+                    // InternalPerspectiveDsl.g:3542:4: kw= '<' kw= '='
                     {
-                    kw=(Token)match(input,68,FOLLOW_32); if (state.failed) return current;
+                    kw=(Token)match(input,70,FOLLOW_32); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0());
                       			
                     }
-                    kw=(Token)match(input,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);
@@ -9808,9 +10106,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3453:3: kw= '>'
+                    // InternalPerspectiveDsl.g:3554:3: kw= '>'
                     {
-                    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);
@@ -9821,9 +10119,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3459:3: kw= '<'
+                    // InternalPerspectiveDsl.g:3560:3: kw= '<'
                     {
-                    kw=(Token)match(input,68,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,70,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -9858,7 +10156,7 @@
 
 
     // $ANTLR start "entryRuleXOtherOperatorExpression"
-    // InternalPerspectiveDsl.g:3468:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
+    // InternalPerspectiveDsl.g:3569:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
     public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9866,8 +10164,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3468:65: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
-            // InternalPerspectiveDsl.g:3469:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
+            // InternalPerspectiveDsl.g:3569:65: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
+            // InternalPerspectiveDsl.g:3570:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); 
@@ -9898,7 +10196,7 @@
 
 
     // $ANTLR start "ruleXOtherOperatorExpression"
-    // InternalPerspectiveDsl.g:3475:1: ruleXOtherOperatorExpression returns [EObject current=null] : (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) ;
+    // InternalPerspectiveDsl.g:3576: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;
 
@@ -9911,11 +10209,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3481:2: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
-            // InternalPerspectiveDsl.g:3482:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3582:2: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
+            // InternalPerspectiveDsl.g:3583:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
             {
-            // InternalPerspectiveDsl.g:3482:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
-            // InternalPerspectiveDsl.g:3483:3: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            // InternalPerspectiveDsl.g:3583:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3584:3: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -9933,23 +10231,23 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:3491:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            // InternalPerspectiveDsl.g:3592:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
             loop43:
             do {
                 int alt43=2;
                 alt43 = dfa43.predict(input);
                 switch (alt43) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:3492:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // InternalPerspectiveDsl.g:3593:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3492:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
-            	    // InternalPerspectiveDsl.g:3493:5: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
+            	    // InternalPerspectiveDsl.g:3593:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
+            	    // InternalPerspectiveDsl.g:3594:5: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3503:5: ( () ( ( ruleOpOther ) ) )
-            	    // InternalPerspectiveDsl.g:3504:6: () ( ( ruleOpOther ) )
+            	    // InternalPerspectiveDsl.g:3604:5: ( () ( ( ruleOpOther ) ) )
+            	    // InternalPerspectiveDsl.g:3605:6: () ( ( ruleOpOther ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3504:6: ()
-            	    // InternalPerspectiveDsl.g:3505:7: 
+            	    // InternalPerspectiveDsl.g:3605:6: ()
+            	    // InternalPerspectiveDsl.g:3606:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9961,11 +10259,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3511:6: ( ( ruleOpOther ) )
-            	    // InternalPerspectiveDsl.g:3512:7: ( ruleOpOther )
+            	    // InternalPerspectiveDsl.g:3612:6: ( ( ruleOpOther ) )
+            	    // InternalPerspectiveDsl.g:3613:7: ( ruleOpOther )
             	    {
-            	    // InternalPerspectiveDsl.g:3512:7: ( ruleOpOther )
-            	    // InternalPerspectiveDsl.g:3513:8: ruleOpOther
+            	    // InternalPerspectiveDsl.g:3613:7: ( ruleOpOther )
+            	    // InternalPerspectiveDsl.g:3614:8: ruleOpOther
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10001,11 +10299,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3529:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
-            	    // InternalPerspectiveDsl.g:3530:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    // InternalPerspectiveDsl.g:3630:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // InternalPerspectiveDsl.g:3631:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
             	    {
-            	    // InternalPerspectiveDsl.g:3530:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
-            	    // InternalPerspectiveDsl.g:3531:6: lv_rightOperand_3_0= ruleXAdditiveExpression
+            	    // InternalPerspectiveDsl.g:3631:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    // InternalPerspectiveDsl.g:3632:6: lv_rightOperand_3_0= ruleXAdditiveExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10070,7 +10368,7 @@
 
 
     // $ANTLR start "entryRuleOpOther"
-    // InternalPerspectiveDsl.g:3553:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
+    // InternalPerspectiveDsl.g:3654:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
     public final String entryRuleOpOther() throws RecognitionException {
         String current = null;
 
@@ -10078,8 +10376,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3553:47: (iv_ruleOpOther= ruleOpOther EOF )
-            // InternalPerspectiveDsl.g:3554:2: iv_ruleOpOther= ruleOpOther EOF
+            // InternalPerspectiveDsl.g:3654:47: (iv_ruleOpOther= ruleOpOther EOF )
+            // InternalPerspectiveDsl.g:3655:2: iv_ruleOpOther= ruleOpOther EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpOtherRule()); 
@@ -10110,7 +10408,7 @@
 
 
     // $ANTLR start "ruleOpOther"
-    // InternalPerspectiveDsl.g:3560: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:3661: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();
 
@@ -10120,17 +10418,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3566:2: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
-            // InternalPerspectiveDsl.g:3567:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            // InternalPerspectiveDsl.g:3667:2: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
+            // InternalPerspectiveDsl.g:3668:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
             {
-            // InternalPerspectiveDsl.g:3567:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            // InternalPerspectiveDsl.g:3668:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
             int alt46=9;
             alt46 = dfa46.predict(input);
             switch (alt46) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3568:3: kw= '->'
+                    // InternalPerspectiveDsl.g:3669:3: 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);
@@ -10141,9 +10439,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3574:3: kw= '..<'
+                    // InternalPerspectiveDsl.g:3675:3: 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);
@@ -10154,19 +10452,19 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3580:3: (kw= '>' kw= '..' )
+                    // InternalPerspectiveDsl.g:3681:3: (kw= '>' kw= '..' )
                     {
-                    // InternalPerspectiveDsl.g:3580:3: (kw= '>' kw= '..' )
-                    // InternalPerspectiveDsl.g:3581:4: kw= '>' kw= '..'
+                    // InternalPerspectiveDsl.g:3681:3: (kw= '>' kw= '..' )
+                    // InternalPerspectiveDsl.g:3682:4: kw= '>' kw= '..'
                     {
-                    kw=(Token)match(input,69,FOLLOW_48); if (state.failed) return current;
+                    kw=(Token)match(input,71,FOLLOW_48); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0());
                       			
                     }
-                    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 +10478,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3593:3: kw= '..'
+                    // InternalPerspectiveDsl.g:3694: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);
@@ -10193,9 +10491,9 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:3599:3: kw= '=>'
+                    // InternalPerspectiveDsl.g:3700: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);
@@ -10206,31 +10504,31 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:3605:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalPerspectiveDsl.g:3706:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
                     {
-                    // InternalPerspectiveDsl.g:3605:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
-                    // InternalPerspectiveDsl.g:3606:4: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    // InternalPerspectiveDsl.g:3706:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalPerspectiveDsl.g:3707:4: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
                     {
-                    kw=(Token)match(input,69,FOLLOW_49); if (state.failed) return current;
+                    kw=(Token)match(input,71,FOLLOW_49); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0());
                       			
                     }
-                    // InternalPerspectiveDsl.g:3611:4: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    // InternalPerspectiveDsl.g:3712:4: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
                     int alt44=2;
                     int LA44_0 = input.LA(1);
 
-                    if ( (LA44_0==69) ) {
+                    if ( (LA44_0==71) ) {
                         int LA44_1 = input.LA(2);
 
-                        if ( (LA44_1==69) && (synpred14_InternalPerspectiveDsl())) {
-                            alt44=1;
-                        }
-                        else if ( (LA44_1==EOF||(LA44_1>=RULE_ID && LA44_1<=RULE_DECIMAL)||LA44_1==14||(LA44_1>=49 && LA44_1<=51)||LA44_1==56||(LA44_1>=60 && LA44_1<=61)||LA44_1==68||(LA44_1>=84 && LA44_1<=85)||LA44_1==89||LA44_1==97||LA44_1==99||(LA44_1>=103 && LA44_1<=105)||(LA44_1>=108 && LA44_1<=117)||LA44_1==119) ) {
+                        if ( (LA44_1==EOF||(LA44_1>=RULE_ID && LA44_1<=RULE_DECIMAL)||LA44_1==14||(LA44_1>=51 && LA44_1<=53)||LA44_1==58||(LA44_1>=62 && LA44_1<=63)||LA44_1==70||(LA44_1>=86 && LA44_1<=87)||LA44_1==91||LA44_1==99||LA44_1==101||(LA44_1>=105 && LA44_1<=107)||(LA44_1>=110 && LA44_1<=119)||LA44_1==121) ) {
                             alt44=2;
                         }
+                        else if ( (LA44_1==71) && (synpred14_InternalPerspectiveDsl())) {
+                            alt44=1;
+                        }
                         else {
                             if (state.backtracking>0) {state.failed=true; return current;}
                             NoViableAltException nvae =
@@ -10248,22 +10546,22 @@
                     }
                     switch (alt44) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:3612:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalPerspectiveDsl.g:3713:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
                             {
-                            // InternalPerspectiveDsl.g:3612:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
-                            // InternalPerspectiveDsl.g:3613:6: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
+                            // InternalPerspectiveDsl.g:3713:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalPerspectiveDsl.g:3714:6: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
                             {
-                            // InternalPerspectiveDsl.g:3618:6: (kw= '>' kw= '>' )
-                            // InternalPerspectiveDsl.g:3619:7: kw= '>' kw= '>'
+                            // InternalPerspectiveDsl.g:3719:6: (kw= '>' kw= '>' )
+                            // InternalPerspectiveDsl.g:3720:7: kw= '>' kw= '>'
                             {
-                            kw=(Token)match(input,69,FOLLOW_49); if (state.failed) return current;
+                            kw=(Token)match(input,71,FOLLOW_49); 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,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);
@@ -10280,9 +10578,9 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:3632:5: kw= '>'
+                            // InternalPerspectiveDsl.g:3733:5: kw= '>'
                             {
-                            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);
@@ -10302,23 +10600,23 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:3640:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalPerspectiveDsl.g:3741:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
                     {
-                    // InternalPerspectiveDsl.g:3640:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
-                    // InternalPerspectiveDsl.g:3641:4: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    // InternalPerspectiveDsl.g:3741:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalPerspectiveDsl.g:3742:4: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
                     {
-                    kw=(Token)match(input,68,FOLLOW_50); if (state.failed) return current;
+                    kw=(Token)match(input,70,FOLLOW_50); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0());
                       			
                     }
-                    // InternalPerspectiveDsl.g:3646:4: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    // InternalPerspectiveDsl.g:3747:4: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
                     int alt45=3;
                     int LA45_0 = input.LA(1);
 
-                    if ( (LA45_0==68) ) {
+                    if ( (LA45_0==70) ) {
                         int LA45_1 = input.LA(2);
 
                         if ( (synpred15_InternalPerspectiveDsl()) ) {
@@ -10335,7 +10633,7 @@
                             throw nvae;
                         }
                     }
-                    else if ( (LA45_0==81) ) {
+                    else if ( (LA45_0==83) ) {
                         alt45=3;
                     }
                     else {
@@ -10347,22 +10645,22 @@
                     }
                     switch (alt45) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:3647:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalPerspectiveDsl.g:3748:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
                             {
-                            // InternalPerspectiveDsl.g:3647:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
-                            // InternalPerspectiveDsl.g:3648:6: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
+                            // InternalPerspectiveDsl.g:3748:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalPerspectiveDsl.g:3749:6: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
                             {
-                            // InternalPerspectiveDsl.g:3653:6: (kw= '<' kw= '<' )
-                            // InternalPerspectiveDsl.g:3654:7: kw= '<' kw= '<'
+                            // InternalPerspectiveDsl.g:3754:6: (kw= '<' kw= '<' )
+                            // InternalPerspectiveDsl.g:3755:7: kw= '<' kw= '<'
                             {
-                            kw=(Token)match(input,68,FOLLOW_39); if (state.failed) return current;
+                            kw=(Token)match(input,70,FOLLOW_39); 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,68,FOLLOW_2); if (state.failed) return current;
+                            kw=(Token)match(input,70,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							current.merge(kw);
@@ -10379,9 +10677,9 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:3667:5: kw= '<'
+                            // InternalPerspectiveDsl.g:3768:5: kw= '<'
                             {
-                            kw=(Token)match(input,68,FOLLOW_2); if (state.failed) return current;
+                            kw=(Token)match(input,70,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(kw);
@@ -10392,9 +10690,9 @@
                             }
                             break;
                         case 3 :
-                            // InternalPerspectiveDsl.g:3673:5: kw= '=>'
+                            // InternalPerspectiveDsl.g:3774:5: 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);
@@ -10414,9 +10712,9 @@
                     }
                     break;
                 case 8 :
-                    // InternalPerspectiveDsl.g:3681:3: kw= '<>'
+                    // InternalPerspectiveDsl.g:3782: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);
@@ -10427,9 +10725,9 @@
                     }
                     break;
                 case 9 :
-                    // InternalPerspectiveDsl.g:3687:3: kw= '?:'
+                    // InternalPerspectiveDsl.g:3788: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);
@@ -10464,7 +10762,7 @@
 
 
     // $ANTLR start "entryRuleXAdditiveExpression"
-    // InternalPerspectiveDsl.g:3696:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
+    // InternalPerspectiveDsl.g:3797:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
     public final EObject entryRuleXAdditiveExpression() throws RecognitionException {
         EObject current = null;
 
@@ -10472,8 +10770,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3696:60: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
-            // InternalPerspectiveDsl.g:3697:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
+            // InternalPerspectiveDsl.g:3797:60: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
+            // InternalPerspectiveDsl.g:3798:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); 
@@ -10504,7 +10802,7 @@
 
 
     // $ANTLR start "ruleXAdditiveExpression"
-    // InternalPerspectiveDsl.g:3703:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
+    // InternalPerspectiveDsl.g:3804: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;
 
@@ -10517,11 +10815,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3709:2: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
-            // InternalPerspectiveDsl.g:3710:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3810:2: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
+            // InternalPerspectiveDsl.g:3811:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
             {
-            // InternalPerspectiveDsl.g:3710:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
-            // InternalPerspectiveDsl.g:3711:3: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            // InternalPerspectiveDsl.g:3811:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3812:3: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -10539,13 +10837,13 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:3719:3: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            // InternalPerspectiveDsl.g:3820:3: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
             loop47:
             do {
                 int alt47=2;
                 int LA47_0 = input.LA(1);
 
-                if ( (LA47_0==84) ) {
+                if ( (LA47_0==86) ) {
                     int LA47_2 = input.LA(2);
 
                     if ( (synpred16_InternalPerspectiveDsl()) ) {
@@ -10554,7 +10852,7 @@
 
 
                 }
-                else if ( (LA47_0==85) ) {
+                else if ( (LA47_0==87) ) {
                     int LA47_3 = input.LA(2);
 
                     if ( (synpred16_InternalPerspectiveDsl()) ) {
@@ -10567,16 +10865,16 @@
 
                 switch (alt47) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:3720:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // InternalPerspectiveDsl.g:3821:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3720:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
-            	    // InternalPerspectiveDsl.g:3721:5: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
+            	    // InternalPerspectiveDsl.g:3821:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
+            	    // InternalPerspectiveDsl.g:3822:5: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3731:5: ( () ( ( ruleOpAdd ) ) )
-            	    // InternalPerspectiveDsl.g:3732:6: () ( ( ruleOpAdd ) )
+            	    // InternalPerspectiveDsl.g:3832:5: ( () ( ( ruleOpAdd ) ) )
+            	    // InternalPerspectiveDsl.g:3833:6: () ( ( ruleOpAdd ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3732:6: ()
-            	    // InternalPerspectiveDsl.g:3733:7: 
+            	    // InternalPerspectiveDsl.g:3833:6: ()
+            	    // InternalPerspectiveDsl.g:3834:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10588,11 +10886,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3739:6: ( ( ruleOpAdd ) )
-            	    // InternalPerspectiveDsl.g:3740:7: ( ruleOpAdd )
+            	    // InternalPerspectiveDsl.g:3840:6: ( ( ruleOpAdd ) )
+            	    // InternalPerspectiveDsl.g:3841:7: ( ruleOpAdd )
             	    {
-            	    // InternalPerspectiveDsl.g:3740:7: ( ruleOpAdd )
-            	    // InternalPerspectiveDsl.g:3741:8: ruleOpAdd
+            	    // InternalPerspectiveDsl.g:3841:7: ( ruleOpAdd )
+            	    // InternalPerspectiveDsl.g:3842:8: ruleOpAdd
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10628,11 +10926,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3757:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
-            	    // InternalPerspectiveDsl.g:3758:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // InternalPerspectiveDsl.g:3858:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // InternalPerspectiveDsl.g:3859:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
             	    {
-            	    // InternalPerspectiveDsl.g:3758:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
-            	    // InternalPerspectiveDsl.g:3759:6: lv_rightOperand_3_0= ruleXMultiplicativeExpression
+            	    // InternalPerspectiveDsl.g:3859:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // InternalPerspectiveDsl.g:3860:6: lv_rightOperand_3_0= ruleXMultiplicativeExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10697,7 +10995,7 @@
 
 
     // $ANTLR start "entryRuleOpAdd"
-    // InternalPerspectiveDsl.g:3781:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
+    // InternalPerspectiveDsl.g:3882:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
     public final String entryRuleOpAdd() throws RecognitionException {
         String current = null;
 
@@ -10705,8 +11003,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3781:45: (iv_ruleOpAdd= ruleOpAdd EOF )
-            // InternalPerspectiveDsl.g:3782:2: iv_ruleOpAdd= ruleOpAdd EOF
+            // InternalPerspectiveDsl.g:3882:45: (iv_ruleOpAdd= ruleOpAdd EOF )
+            // InternalPerspectiveDsl.g:3883:2: iv_ruleOpAdd= ruleOpAdd EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpAddRule()); 
@@ -10737,7 +11035,7 @@
 
 
     // $ANTLR start "ruleOpAdd"
-    // InternalPerspectiveDsl.g:3788:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
+    // InternalPerspectiveDsl.g:3889:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
     public final AntlrDatatypeRuleToken ruleOpAdd() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -10747,17 +11045,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3794:2: ( (kw= '+' | kw= '-' ) )
-            // InternalPerspectiveDsl.g:3795:2: (kw= '+' | kw= '-' )
+            // InternalPerspectiveDsl.g:3895:2: ( (kw= '+' | kw= '-' ) )
+            // InternalPerspectiveDsl.g:3896:2: (kw= '+' | kw= '-' )
             {
-            // InternalPerspectiveDsl.g:3795:2: (kw= '+' | kw= '-' )
+            // InternalPerspectiveDsl.g:3896:2: (kw= '+' | kw= '-' )
             int alt48=2;
             int LA48_0 = input.LA(1);
 
-            if ( (LA48_0==84) ) {
+            if ( (LA48_0==86) ) {
                 alt48=1;
             }
-            else if ( (LA48_0==85) ) {
+            else if ( (LA48_0==87) ) {
                 alt48=2;
             }
             else {
@@ -10769,9 +11067,9 @@
             }
             switch (alt48) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3796:3: kw= '+'
+                    // InternalPerspectiveDsl.g:3897:3: kw= '+'
                     {
-                    kw=(Token)match(input,84,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,86,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -10782,9 +11080,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3802:3: kw= '-'
+                    // InternalPerspectiveDsl.g:3903: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);
@@ -10819,7 +11117,7 @@
 
 
     // $ANTLR start "entryRuleXMultiplicativeExpression"
-    // InternalPerspectiveDsl.g:3811:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
+    // InternalPerspectiveDsl.g:3912:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
     public final EObject entryRuleXMultiplicativeExpression() throws RecognitionException {
         EObject current = null;
 
@@ -10827,8 +11125,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3811:66: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
-            // InternalPerspectiveDsl.g:3812:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
+            // InternalPerspectiveDsl.g:3912:66: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
+            // InternalPerspectiveDsl.g:3913:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); 
@@ -10859,7 +11157,7 @@
 
 
     // $ANTLR start "ruleXMultiplicativeExpression"
-    // InternalPerspectiveDsl.g:3818:1: ruleXMultiplicativeExpression returns [EObject current=null] : (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) ;
+    // InternalPerspectiveDsl.g:3919: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;
 
@@ -10872,11 +11170,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3824:2: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
-            // InternalPerspectiveDsl.g:3825:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // InternalPerspectiveDsl.g:3925:2: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
+            // InternalPerspectiveDsl.g:3926:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
             {
-            // InternalPerspectiveDsl.g:3825:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
-            // InternalPerspectiveDsl.g:3826:3: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            // InternalPerspectiveDsl.g:3926:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // InternalPerspectiveDsl.g:3927:3: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -10894,12 +11192,12 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:3834:3: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            // InternalPerspectiveDsl.g:3935:3: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
             loop49:
             do {
                 int alt49=2;
                 switch ( input.LA(1) ) {
-                case 52:
+                case 54:
                     {
                     int LA49_2 = input.LA(2);
 
@@ -10910,7 +11208,7 @@
 
                     }
                     break;
-                case 86:
+                case 88:
                     {
                     int LA49_3 = input.LA(2);
 
@@ -10921,7 +11219,7 @@
 
                     }
                     break;
-                case 87:
+                case 89:
                     {
                     int LA49_4 = input.LA(2);
 
@@ -10932,7 +11230,7 @@
 
                     }
                     break;
-                case 88:
+                case 90:
                     {
                     int LA49_5 = input.LA(2);
 
@@ -10948,16 +11246,16 @@
 
                 switch (alt49) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:3835:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    // InternalPerspectiveDsl.g:3936:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3835:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
-            	    // InternalPerspectiveDsl.g:3836:5: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
+            	    // InternalPerspectiveDsl.g:3936:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
+            	    // InternalPerspectiveDsl.g:3937:5: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3846:5: ( () ( ( ruleOpMulti ) ) )
-            	    // InternalPerspectiveDsl.g:3847:6: () ( ( ruleOpMulti ) )
+            	    // InternalPerspectiveDsl.g:3947:5: ( () ( ( ruleOpMulti ) ) )
+            	    // InternalPerspectiveDsl.g:3948:6: () ( ( ruleOpMulti ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3847:6: ()
-            	    // InternalPerspectiveDsl.g:3848:7: 
+            	    // InternalPerspectiveDsl.g:3948:6: ()
+            	    // InternalPerspectiveDsl.g:3949:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10969,11 +11267,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3854:6: ( ( ruleOpMulti ) )
-            	    // InternalPerspectiveDsl.g:3855:7: ( ruleOpMulti )
+            	    // InternalPerspectiveDsl.g:3955:6: ( ( ruleOpMulti ) )
+            	    // InternalPerspectiveDsl.g:3956:7: ( ruleOpMulti )
             	    {
-            	    // InternalPerspectiveDsl.g:3855:7: ( ruleOpMulti )
-            	    // InternalPerspectiveDsl.g:3856:8: ruleOpMulti
+            	    // InternalPerspectiveDsl.g:3956:7: ( ruleOpMulti )
+            	    // InternalPerspectiveDsl.g:3957:8: ruleOpMulti
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -11009,11 +11307,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3872:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
-            	    // InternalPerspectiveDsl.g:3873:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    // InternalPerspectiveDsl.g:3973:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    // InternalPerspectiveDsl.g:3974:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
             	    {
-            	    // InternalPerspectiveDsl.g:3873:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
-            	    // InternalPerspectiveDsl.g:3874:6: lv_rightOperand_3_0= ruleXUnaryOperation
+            	    // InternalPerspectiveDsl.g:3974:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    // InternalPerspectiveDsl.g:3975:6: lv_rightOperand_3_0= ruleXUnaryOperation
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -11078,7 +11376,7 @@
 
 
     // $ANTLR start "entryRuleOpMulti"
-    // InternalPerspectiveDsl.g:3896:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
+    // InternalPerspectiveDsl.g:3997:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
     public final String entryRuleOpMulti() throws RecognitionException {
         String current = null;
 
@@ -11086,8 +11384,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3896:47: (iv_ruleOpMulti= ruleOpMulti EOF )
-            // InternalPerspectiveDsl.g:3897:2: iv_ruleOpMulti= ruleOpMulti EOF
+            // InternalPerspectiveDsl.g:3997:47: (iv_ruleOpMulti= ruleOpMulti EOF )
+            // InternalPerspectiveDsl.g:3998:2: iv_ruleOpMulti= ruleOpMulti EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpMultiRule()); 
@@ -11118,7 +11416,7 @@
 
 
     // $ANTLR start "ruleOpMulti"
-    // InternalPerspectiveDsl.g:3903:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
+    // InternalPerspectiveDsl.g:4004:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
     public final AntlrDatatypeRuleToken ruleOpMulti() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -11128,28 +11426,28 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3909:2: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
-            // InternalPerspectiveDsl.g:3910:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            // InternalPerspectiveDsl.g:4010:2: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
+            // InternalPerspectiveDsl.g:4011:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
             {
-            // InternalPerspectiveDsl.g:3910:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            // InternalPerspectiveDsl.g:4011:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
             int alt50=4;
             switch ( input.LA(1) ) {
-            case 52:
+            case 54:
                 {
                 alt50=1;
                 }
                 break;
-            case 86:
+            case 88:
                 {
                 alt50=2;
                 }
                 break;
-            case 87:
+            case 89:
                 {
                 alt50=3;
                 }
                 break;
-            case 88:
+            case 90:
                 {
                 alt50=4;
                 }
@@ -11164,9 +11462,9 @@
 
             switch (alt50) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3911:3: kw= '*'
+                    // InternalPerspectiveDsl.g:4012:3: kw= '*'
                     {
-                    kw=(Token)match(input,52,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,54,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -11177,9 +11475,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3917:3: kw= '**'
+                    // InternalPerspectiveDsl.g:4018: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);
@@ -11190,9 +11488,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3923:3: kw= '/'
+                    // InternalPerspectiveDsl.g:4024: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);
@@ -11203,9 +11501,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3929:3: kw= '%'
+                    // InternalPerspectiveDsl.g:4030: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);
@@ -11240,7 +11538,7 @@
 
 
     // $ANTLR start "entryRuleXUnaryOperation"
-    // InternalPerspectiveDsl.g:3938:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
+    // InternalPerspectiveDsl.g:4039:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
     public final EObject entryRuleXUnaryOperation() throws RecognitionException {
         EObject current = null;
 
@@ -11248,8 +11546,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3938:56: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
-            // InternalPerspectiveDsl.g:3939:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
+            // InternalPerspectiveDsl.g:4039:56: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
+            // InternalPerspectiveDsl.g:4040:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXUnaryOperationRule()); 
@@ -11280,7 +11578,7 @@
 
 
     // $ANTLR start "ruleXUnaryOperation"
-    // InternalPerspectiveDsl.g:3945:1: ruleXUnaryOperation returns [EObject current=null] : ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) ;
+    // InternalPerspectiveDsl.g:4046: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;
 
@@ -11293,17 +11591,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3951:2: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
-            // InternalPerspectiveDsl.g:3952:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            // InternalPerspectiveDsl.g:4052:2: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
+            // InternalPerspectiveDsl.g:4053:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
             {
-            // InternalPerspectiveDsl.g:3952:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            // InternalPerspectiveDsl.g:4053:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
             int alt51=2;
             int LA51_0 = input.LA(1);
 
-            if ( ((LA51_0>=84 && LA51_0<=85)||LA51_0==89) ) {
+            if ( ((LA51_0>=86 && LA51_0<=87)||LA51_0==91) ) {
                 alt51=1;
             }
-            else if ( ((LA51_0>=RULE_ID && LA51_0<=RULE_DECIMAL)||LA51_0==14||(LA51_0>=49 && LA51_0<=51)||LA51_0==56||(LA51_0>=60 && LA51_0<=61)||LA51_0==68||LA51_0==97||LA51_0==99||(LA51_0>=103 && LA51_0<=105)||(LA51_0>=108 && LA51_0<=117)||LA51_0==119) ) {
+            else if ( ((LA51_0>=RULE_ID && LA51_0<=RULE_DECIMAL)||LA51_0==14||(LA51_0>=51 && LA51_0<=53)||LA51_0==58||(LA51_0>=62 && LA51_0<=63)||LA51_0==70||LA51_0==99||LA51_0==101||(LA51_0>=105 && LA51_0<=107)||(LA51_0>=110 && LA51_0<=119)||LA51_0==121) ) {
                 alt51=2;
             }
             else {
@@ -11315,13 +11613,13 @@
             }
             switch (alt51) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3953:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    // InternalPerspectiveDsl.g:4054:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
                     {
-                    // InternalPerspectiveDsl.g:3953:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
-                    // InternalPerspectiveDsl.g:3954:4: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    // InternalPerspectiveDsl.g:4054:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    // InternalPerspectiveDsl.g:4055:4: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
                     {
-                    // InternalPerspectiveDsl.g:3954:4: ()
-                    // InternalPerspectiveDsl.g:3955:5: 
+                    // InternalPerspectiveDsl.g:4055:4: ()
+                    // InternalPerspectiveDsl.g:4056:5: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -11333,11 +11631,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:3961:4: ( ( ruleOpUnary ) )
-                    // InternalPerspectiveDsl.g:3962:5: ( ruleOpUnary )
+                    // InternalPerspectiveDsl.g:4062:4: ( ( ruleOpUnary ) )
+                    // InternalPerspectiveDsl.g:4063:5: ( ruleOpUnary )
                     {
-                    // InternalPerspectiveDsl.g:3962:5: ( ruleOpUnary )
-                    // InternalPerspectiveDsl.g:3963:6: ruleOpUnary
+                    // InternalPerspectiveDsl.g:4063:5: ( ruleOpUnary )
+                    // InternalPerspectiveDsl.g:4064:6: ruleOpUnary
                     {
                     if ( state.backtracking==0 ) {
 
@@ -11367,11 +11665,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:3977:4: ( (lv_operand_2_0= ruleXUnaryOperation ) )
-                    // InternalPerspectiveDsl.g:3978:5: (lv_operand_2_0= ruleXUnaryOperation )
+                    // InternalPerspectiveDsl.g:4078:4: ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    // InternalPerspectiveDsl.g:4079:5: (lv_operand_2_0= ruleXUnaryOperation )
                     {
-                    // InternalPerspectiveDsl.g:3978:5: (lv_operand_2_0= ruleXUnaryOperation )
-                    // InternalPerspectiveDsl.g:3979:6: lv_operand_2_0= ruleXUnaryOperation
+                    // InternalPerspectiveDsl.g:4079:5: (lv_operand_2_0= ruleXUnaryOperation )
+                    // InternalPerspectiveDsl.g:4080:6: lv_operand_2_0= ruleXUnaryOperation
                     {
                     if ( state.backtracking==0 ) {
 
@@ -11409,7 +11707,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3998:3: this_XCastedExpression_3= ruleXCastedExpression
+                    // InternalPerspectiveDsl.g:4099:3: this_XCastedExpression_3= ruleXCastedExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -11455,7 +11753,7 @@
 
 
     // $ANTLR start "entryRuleOpUnary"
-    // InternalPerspectiveDsl.g:4010:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
+    // InternalPerspectiveDsl.g:4111:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
     public final String entryRuleOpUnary() throws RecognitionException {
         String current = null;
 
@@ -11463,8 +11761,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4010:47: (iv_ruleOpUnary= ruleOpUnary EOF )
-            // InternalPerspectiveDsl.g:4011:2: iv_ruleOpUnary= ruleOpUnary EOF
+            // InternalPerspectiveDsl.g:4111:47: (iv_ruleOpUnary= ruleOpUnary EOF )
+            // InternalPerspectiveDsl.g:4112:2: iv_ruleOpUnary= ruleOpUnary EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpUnaryRule()); 
@@ -11495,7 +11793,7 @@
 
 
     // $ANTLR start "ruleOpUnary"
-    // InternalPerspectiveDsl.g:4017:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
+    // InternalPerspectiveDsl.g:4118:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
     public final AntlrDatatypeRuleToken ruleOpUnary() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -11505,23 +11803,23 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4023:2: ( (kw= '!' | kw= '-' | kw= '+' ) )
-            // InternalPerspectiveDsl.g:4024:2: (kw= '!' | kw= '-' | kw= '+' )
+            // InternalPerspectiveDsl.g:4124:2: ( (kw= '!' | kw= '-' | kw= '+' ) )
+            // InternalPerspectiveDsl.g:4125:2: (kw= '!' | kw= '-' | kw= '+' )
             {
-            // InternalPerspectiveDsl.g:4024:2: (kw= '!' | kw= '-' | kw= '+' )
+            // InternalPerspectiveDsl.g:4125:2: (kw= '!' | kw= '-' | kw= '+' )
             int alt52=3;
             switch ( input.LA(1) ) {
-            case 89:
+            case 91:
                 {
                 alt52=1;
                 }
                 break;
-            case 85:
+            case 87:
                 {
                 alt52=2;
                 }
                 break;
-            case 84:
+            case 86:
                 {
                 alt52=3;
                 }
@@ -11536,9 +11834,9 @@
 
             switch (alt52) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4025:3: kw= '!'
+                    // InternalPerspectiveDsl.g:4126: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);
@@ -11549,9 +11847,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:4031:3: kw= '-'
+                    // InternalPerspectiveDsl.g:4132: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);
@@ -11562,9 +11860,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:4037:3: kw= '+'
+                    // InternalPerspectiveDsl.g:4138:3: kw= '+'
                     {
-                    kw=(Token)match(input,84,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,86,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -11599,7 +11897,7 @@
 
 
     // $ANTLR start "entryRuleXCastedExpression"
-    // InternalPerspectiveDsl.g:4046:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
+    // InternalPerspectiveDsl.g:4147:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
     public final EObject entryRuleXCastedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -11607,8 +11905,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4046:58: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
-            // InternalPerspectiveDsl.g:4047:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
+            // InternalPerspectiveDsl.g:4147:58: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
+            // InternalPerspectiveDsl.g:4148:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCastedExpressionRule()); 
@@ -11639,7 +11937,7 @@
 
 
     // $ANTLR start "ruleXCastedExpression"
-    // InternalPerspectiveDsl.g:4053:1: ruleXCastedExpression returns [EObject current=null] : (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) ;
+    // InternalPerspectiveDsl.g:4154: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;
 
@@ -11653,11 +11951,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4059:2: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
-            // InternalPerspectiveDsl.g:4060:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            // InternalPerspectiveDsl.g:4160:2: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
+            // InternalPerspectiveDsl.g:4161:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
             {
-            // InternalPerspectiveDsl.g:4060:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
-            // InternalPerspectiveDsl.g:4061:3: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            // InternalPerspectiveDsl.g:4161:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            // InternalPerspectiveDsl.g:4162:3: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -11675,13 +11973,13 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:4069:3: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            // InternalPerspectiveDsl.g:4170:3: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
             loop53:
             do {
                 int alt53=2;
                 int LA53_0 = input.LA(1);
 
-                if ( (LA53_0==90) ) {
+                if ( (LA53_0==92) ) {
                     int LA53_2 = input.LA(2);
 
                     if ( (synpred18_InternalPerspectiveDsl()) ) {
@@ -11694,16 +11992,16 @@
 
                 switch (alt53) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:4070:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalPerspectiveDsl.g:4171:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4070:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
-            	    // InternalPerspectiveDsl.g:4071:5: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
+            	    // InternalPerspectiveDsl.g:4171:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
+            	    // InternalPerspectiveDsl.g:4172:5: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
             	    {
-            	    // InternalPerspectiveDsl.g:4077:5: ( () otherlv_2= 'as' )
-            	    // InternalPerspectiveDsl.g:4078:6: () otherlv_2= 'as'
+            	    // InternalPerspectiveDsl.g:4178:5: ( () otherlv_2= 'as' )
+            	    // InternalPerspectiveDsl.g:4179:6: () otherlv_2= 'as'
             	    {
-            	    // InternalPerspectiveDsl.g:4078:6: ()
-            	    // InternalPerspectiveDsl.g:4079:7: 
+            	    // InternalPerspectiveDsl.g:4179:6: ()
+            	    // InternalPerspectiveDsl.g:4180:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -11715,7 +12013,7 @@
 
             	    }
 
-            	    otherlv_2=(Token)match(input,90,FOLLOW_46); if (state.failed) return current;
+            	    otherlv_2=(Token)match(input,92,FOLLOW_46); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      						newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
@@ -11727,11 +12025,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4091:4: ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    // InternalPerspectiveDsl.g:4092:5: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalPerspectiveDsl.g:4192:4: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalPerspectiveDsl.g:4193:5: (lv_type_3_0= ruleJvmTypeReference )
             	    {
-            	    // InternalPerspectiveDsl.g:4092:5: (lv_type_3_0= ruleJvmTypeReference )
-            	    // InternalPerspectiveDsl.g:4093:6: lv_type_3_0= ruleJvmTypeReference
+            	    // InternalPerspectiveDsl.g:4193:5: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalPerspectiveDsl.g:4194:6: lv_type_3_0= ruleJvmTypeReference
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -11796,7 +12094,7 @@
 
 
     // $ANTLR start "entryRuleXPostfixOperation"
-    // InternalPerspectiveDsl.g:4115:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
+    // InternalPerspectiveDsl.g:4216:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
     public final EObject entryRuleXPostfixOperation() throws RecognitionException {
         EObject current = null;
 
@@ -11804,8 +12102,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4115:58: (iv_ruleXPostfixOperation= ruleXPostfixOperation EOF )
-            // InternalPerspectiveDsl.g:4116:2: iv_ruleXPostfixOperation= ruleXPostfixOperation EOF
+            // InternalPerspectiveDsl.g:4216:58: (iv_ruleXPostfixOperation= ruleXPostfixOperation EOF )
+            // InternalPerspectiveDsl.g:4217:2: iv_ruleXPostfixOperation= ruleXPostfixOperation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXPostfixOperationRule()); 
@@ -11836,7 +12134,7 @@
 
 
     // $ANTLR start "ruleXPostfixOperation"
-    // InternalPerspectiveDsl.g:4122:1: ruleXPostfixOperation returns [EObject current=null] : (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) ;
+    // InternalPerspectiveDsl.g:4223:1: ruleXPostfixOperation returns [EObject current=null] : (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) ;
     public final EObject ruleXPostfixOperation() throws RecognitionException {
         EObject current = null;
 
@@ -11847,11 +12145,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4128:2: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
-            // InternalPerspectiveDsl.g:4129:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            // InternalPerspectiveDsl.g:4229:2: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
+            // InternalPerspectiveDsl.g:4230:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
             {
-            // InternalPerspectiveDsl.g:4129:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
-            // InternalPerspectiveDsl.g:4130:3: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            // InternalPerspectiveDsl.g:4230:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            // InternalPerspectiveDsl.g:4231:3: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
             {
             if ( state.backtracking==0 ) {
 
@@ -11869,18 +12167,18 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:4138:3: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            // InternalPerspectiveDsl.g:4239:3: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
             int alt54=2;
             int LA54_0 = input.LA(1);
 
-            if ( (LA54_0==91) ) {
+            if ( (LA54_0==93) ) {
                 int LA54_1 = input.LA(2);
 
                 if ( (synpred19_InternalPerspectiveDsl()) ) {
                     alt54=1;
                 }
             }
-            else if ( (LA54_0==92) ) {
+            else if ( (LA54_0==94) ) {
                 int LA54_2 = input.LA(2);
 
                 if ( (synpred19_InternalPerspectiveDsl()) ) {
@@ -11889,13 +12187,13 @@
             }
             switch (alt54) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4139:4: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
+                    // InternalPerspectiveDsl.g:4240:4: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
                     {
-                    // InternalPerspectiveDsl.g:4149:4: ( () ( ( ruleOpPostfix ) ) )
-                    // InternalPerspectiveDsl.g:4150:5: () ( ( ruleOpPostfix ) )
+                    // InternalPerspectiveDsl.g:4250:4: ( () ( ( ruleOpPostfix ) ) )
+                    // InternalPerspectiveDsl.g:4251:5: () ( ( ruleOpPostfix ) )
                     {
-                    // InternalPerspectiveDsl.g:4150:5: ()
-                    // InternalPerspectiveDsl.g:4151:6: 
+                    // InternalPerspectiveDsl.g:4251:5: ()
+                    // InternalPerspectiveDsl.g:4252:6: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -11907,11 +12205,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:4157:5: ( ( ruleOpPostfix ) )
-                    // InternalPerspectiveDsl.g:4158:6: ( ruleOpPostfix )
+                    // InternalPerspectiveDsl.g:4258:5: ( ( ruleOpPostfix ) )
+                    // InternalPerspectiveDsl.g:4259:6: ( ruleOpPostfix )
                     {
-                    // InternalPerspectiveDsl.g:4158:6: ( ruleOpPostfix )
-                    // InternalPerspectiveDsl.g:4159:7: ruleOpPostfix
+                    // InternalPerspectiveDsl.g:4259:6: ( ruleOpPostfix )
+                    // InternalPerspectiveDsl.g:4260:7: ruleOpPostfix
                     {
                     if ( state.backtracking==0 ) {
 
@@ -11975,7 +12273,7 @@
 
 
     // $ANTLR start "entryRuleOpPostfix"
-    // InternalPerspectiveDsl.g:4179:1: entryRuleOpPostfix returns [String current=null] : iv_ruleOpPostfix= ruleOpPostfix EOF ;
+    // InternalPerspectiveDsl.g:4280:1: entryRuleOpPostfix returns [String current=null] : iv_ruleOpPostfix= ruleOpPostfix EOF ;
     public final String entryRuleOpPostfix() throws RecognitionException {
         String current = null;
 
@@ -11983,8 +12281,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4179:49: (iv_ruleOpPostfix= ruleOpPostfix EOF )
-            // InternalPerspectiveDsl.g:4180:2: iv_ruleOpPostfix= ruleOpPostfix EOF
+            // InternalPerspectiveDsl.g:4280:49: (iv_ruleOpPostfix= ruleOpPostfix EOF )
+            // InternalPerspectiveDsl.g:4281:2: iv_ruleOpPostfix= ruleOpPostfix EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpPostfixRule()); 
@@ -12015,7 +12313,7 @@
 
 
     // $ANTLR start "ruleOpPostfix"
-    // InternalPerspectiveDsl.g:4186:1: ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '++' | kw= '--' ) ;
+    // InternalPerspectiveDsl.g:4287:1: ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '++' | kw= '--' ) ;
     public final AntlrDatatypeRuleToken ruleOpPostfix() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -12025,17 +12323,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4192:2: ( (kw= '++' | kw= '--' ) )
-            // InternalPerspectiveDsl.g:4193:2: (kw= '++' | kw= '--' )
+            // InternalPerspectiveDsl.g:4293:2: ( (kw= '++' | kw= '--' ) )
+            // InternalPerspectiveDsl.g:4294:2: (kw= '++' | kw= '--' )
             {
-            // InternalPerspectiveDsl.g:4193:2: (kw= '++' | kw= '--' )
+            // InternalPerspectiveDsl.g:4294:2: (kw= '++' | kw= '--' )
             int alt55=2;
             int LA55_0 = input.LA(1);
 
-            if ( (LA55_0==91) ) {
+            if ( (LA55_0==93) ) {
                 alt55=1;
             }
-            else if ( (LA55_0==92) ) {
+            else if ( (LA55_0==94) ) {
                 alt55=2;
             }
             else {
@@ -12047,9 +12345,9 @@
             }
             switch (alt55) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4194:3: kw= '++'
+                    // InternalPerspectiveDsl.g:4295: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);
@@ -12060,9 +12358,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:4200:3: kw= '--'
+                    // InternalPerspectiveDsl.g:4301: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);
@@ -12097,7 +12395,7 @@
 
 
     // $ANTLR start "entryRuleXMemberFeatureCall"
-    // InternalPerspectiveDsl.g:4209:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
+    // InternalPerspectiveDsl.g:4310:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
     public final EObject entryRuleXMemberFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -12105,8 +12403,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4209:59: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
-            // InternalPerspectiveDsl.g:4210:2: iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF
+            // InternalPerspectiveDsl.g:4310:59: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
+            // InternalPerspectiveDsl.g:4311:2: iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); 
@@ -12137,7 +12435,7 @@
 
 
     // $ANTLR start "ruleXMemberFeatureCall"
-    // InternalPerspectiveDsl.g:4216: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:4317: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;
 
@@ -12173,11 +12471,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4222: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:4223: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:4323: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:4324: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:4223: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:4224: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:4324: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:4325: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 ) {
 
@@ -12195,12 +12493,12 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:4232: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:4333:3: ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
             loop64:
             do {
                 int alt64=3;
                 switch ( input.LA(1) ) {
-                case 93:
+                case 95:
                     {
                     int LA64_2 = input.LA(2);
 
@@ -12214,7 +12512,7 @@
 
                     }
                     break;
-                case 94:
+                case 96:
                     {
                     int LA64_3 = input.LA(2);
 
@@ -12228,7 +12526,7 @@
 
                     }
                     break;
-                case 95:
+                case 97:
                     {
                     int LA64_4 = input.LA(2);
 
@@ -12244,19 +12542,19 @@
 
                 switch (alt64) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:4233:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    // InternalPerspectiveDsl.g:4334:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4233:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
-            	    // InternalPerspectiveDsl.g:4234:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) )
+            	    // InternalPerspectiveDsl.g:4334:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    // InternalPerspectiveDsl.g:4335:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4234:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
-            	    // InternalPerspectiveDsl.g:4235:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    // InternalPerspectiveDsl.g:4335:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+            	    // InternalPerspectiveDsl.g:4336:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
             	    {
-            	    // InternalPerspectiveDsl.g:4255:6: ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
-            	    // InternalPerspectiveDsl.g:4256:7: () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+            	    // InternalPerspectiveDsl.g:4356:6: ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    // InternalPerspectiveDsl.g:4357:7: () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
             	    {
-            	    // InternalPerspectiveDsl.g:4256:7: ()
-            	    // InternalPerspectiveDsl.g:4257:8: 
+            	    // InternalPerspectiveDsl.g:4357:7: ()
+            	    // InternalPerspectiveDsl.g:4358:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -12268,14 +12566,14 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4263:7: (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) )
+            	    // InternalPerspectiveDsl.g:4364:7: (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) )
             	    int alt56=2;
             	    int LA56_0 = input.LA(1);
 
-            	    if ( (LA56_0==93) ) {
+            	    if ( (LA56_0==95) ) {
             	        alt56=1;
             	    }
-            	    else if ( (LA56_0==94) ) {
+            	    else if ( (LA56_0==96) ) {
             	        alt56=2;
             	    }
             	    else {
@@ -12287,9 +12585,9 @@
             	    }
             	    switch (alt56) {
             	        case 1 :
-            	            // InternalPerspectiveDsl.g:4264:8: otherlv_2= '.'
+            	            // InternalPerspectiveDsl.g:4365:8: otherlv_2= '.'
             	            {
-            	            otherlv_2=(Token)match(input,93,FOLLOW_56); if (state.failed) return current;
+            	            otherlv_2=(Token)match(input,95,FOLLOW_56); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              								newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
@@ -12299,15 +12597,15 @@
             	            }
             	            break;
             	        case 2 :
-            	            // InternalPerspectiveDsl.g:4269:8: ( (lv_explicitStatic_3_0= '::' ) )
+            	            // InternalPerspectiveDsl.g:4370:8: ( (lv_explicitStatic_3_0= '::' ) )
             	            {
-            	            // InternalPerspectiveDsl.g:4269:8: ( (lv_explicitStatic_3_0= '::' ) )
-            	            // InternalPerspectiveDsl.g:4270:9: (lv_explicitStatic_3_0= '::' )
+            	            // InternalPerspectiveDsl.g:4370:8: ( (lv_explicitStatic_3_0= '::' ) )
+            	            // InternalPerspectiveDsl.g:4371:9: (lv_explicitStatic_3_0= '::' )
             	            {
-            	            // InternalPerspectiveDsl.g:4270:9: (lv_explicitStatic_3_0= '::' )
-            	            // InternalPerspectiveDsl.g:4271:10: lv_explicitStatic_3_0= '::'
+            	            // InternalPerspectiveDsl.g:4371:9: (lv_explicitStatic_3_0= '::' )
+            	            // InternalPerspectiveDsl.g:4372:10: lv_explicitStatic_3_0= '::'
             	            {
-            	            lv_explicitStatic_3_0=(Token)match(input,94,FOLLOW_56); if (state.failed) return current;
+            	            lv_explicitStatic_3_0=(Token)match(input,96,FOLLOW_56); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              										newLeafNode(lv_explicitStatic_3_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0());
@@ -12333,11 +12631,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4284:7: ( ( ruleFeatureCallID ) )
-            	    // InternalPerspectiveDsl.g:4285:8: ( ruleFeatureCallID )
+            	    // InternalPerspectiveDsl.g:4385:7: ( ( ruleFeatureCallID ) )
+            	    // InternalPerspectiveDsl.g:4386:8: ( ruleFeatureCallID )
             	    {
-            	    // InternalPerspectiveDsl.g:4285:8: ( ruleFeatureCallID )
-            	    // InternalPerspectiveDsl.g:4286:9: ruleFeatureCallID
+            	    // InternalPerspectiveDsl.g:4386:8: ( ruleFeatureCallID )
+            	    // InternalPerspectiveDsl.g:4387:9: ruleFeatureCallID
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -12388,11 +12686,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4309:5: ( (lv_value_6_0= ruleXAssignment ) )
-            	    // InternalPerspectiveDsl.g:4310:6: (lv_value_6_0= ruleXAssignment )
+            	    // InternalPerspectiveDsl.g:4410:5: ( (lv_value_6_0= ruleXAssignment ) )
+            	    // InternalPerspectiveDsl.g:4411:6: (lv_value_6_0= ruleXAssignment )
             	    {
-            	    // InternalPerspectiveDsl.g:4310:6: (lv_value_6_0= ruleXAssignment )
-            	    // InternalPerspectiveDsl.g:4311:7: lv_value_6_0= ruleXAssignment
+            	    // InternalPerspectiveDsl.g:4411:6: (lv_value_6_0= ruleXAssignment )
+            	    // InternalPerspectiveDsl.g:4412:7: lv_value_6_0= ruleXAssignment
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -12430,19 +12728,19 @@
             	    }
             	    break;
             	case 2 :
-            	    // InternalPerspectiveDsl.g:4330: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:4431: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:4330: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:4331: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:4431: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:4432: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:4331:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:4332:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    // InternalPerspectiveDsl.g:4432:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:4433:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4352:6: ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
-            	    // InternalPerspectiveDsl.g:4353:7: () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    // InternalPerspectiveDsl.g:4453:6: ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    // InternalPerspectiveDsl.g:4454:7: () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4353:7: ()
-            	    // InternalPerspectiveDsl.g:4354:8: 
+            	    // InternalPerspectiveDsl.g:4454:7: ()
+            	    // InternalPerspectiveDsl.g:4455:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -12454,20 +12752,20 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4360:7: (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    // InternalPerspectiveDsl.g:4461:7: (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
             	    int alt57=3;
             	    switch ( input.LA(1) ) {
-            	    case 93:
+            	    case 95:
             	        {
             	        alt57=1;
             	        }
             	        break;
-            	    case 95:
+            	    case 97:
             	        {
             	        alt57=2;
             	        }
             	        break;
-            	    case 94:
+            	    case 96:
             	        {
             	        alt57=3;
             	        }
@@ -12482,9 +12780,9 @@
 
             	    switch (alt57) {
             	        case 1 :
-            	            // InternalPerspectiveDsl.g:4361:8: otherlv_8= '.'
+            	            // InternalPerspectiveDsl.g:4462:8: otherlv_8= '.'
             	            {
-            	            otherlv_8=(Token)match(input,93,FOLLOW_57); if (state.failed) return current;
+            	            otherlv_8=(Token)match(input,95,FOLLOW_57); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              								newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
@@ -12494,15 +12792,15 @@
             	            }
             	            break;
             	        case 2 :
-            	            // InternalPerspectiveDsl.g:4366:8: ( (lv_nullSafe_9_0= '?.' ) )
+            	            // InternalPerspectiveDsl.g:4467:8: ( (lv_nullSafe_9_0= '?.' ) )
             	            {
-            	            // InternalPerspectiveDsl.g:4366:8: ( (lv_nullSafe_9_0= '?.' ) )
-            	            // InternalPerspectiveDsl.g:4367:9: (lv_nullSafe_9_0= '?.' )
+            	            // InternalPerspectiveDsl.g:4467:8: ( (lv_nullSafe_9_0= '?.' ) )
+            	            // InternalPerspectiveDsl.g:4468:9: (lv_nullSafe_9_0= '?.' )
             	            {
-            	            // InternalPerspectiveDsl.g:4367:9: (lv_nullSafe_9_0= '?.' )
-            	            // InternalPerspectiveDsl.g:4368:10: lv_nullSafe_9_0= '?.'
+            	            // InternalPerspectiveDsl.g:4468:9: (lv_nullSafe_9_0= '?.' )
+            	            // InternalPerspectiveDsl.g:4469:10: lv_nullSafe_9_0= '?.'
             	            {
-            	            lv_nullSafe_9_0=(Token)match(input,95,FOLLOW_57); if (state.failed) return current;
+            	            lv_nullSafe_9_0=(Token)match(input,97,FOLLOW_57); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              										newLeafNode(lv_nullSafe_9_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
@@ -12526,15 +12824,15 @@
             	            }
             	            break;
             	        case 3 :
-            	            // InternalPerspectiveDsl.g:4381:8: ( (lv_explicitStatic_10_0= '::' ) )
+            	            // InternalPerspectiveDsl.g:4482:8: ( (lv_explicitStatic_10_0= '::' ) )
             	            {
-            	            // InternalPerspectiveDsl.g:4381:8: ( (lv_explicitStatic_10_0= '::' ) )
-            	            // InternalPerspectiveDsl.g:4382:9: (lv_explicitStatic_10_0= '::' )
+            	            // InternalPerspectiveDsl.g:4482:8: ( (lv_explicitStatic_10_0= '::' ) )
+            	            // InternalPerspectiveDsl.g:4483:9: (lv_explicitStatic_10_0= '::' )
             	            {
-            	            // InternalPerspectiveDsl.g:4382:9: (lv_explicitStatic_10_0= '::' )
-            	            // InternalPerspectiveDsl.g:4383:10: lv_explicitStatic_10_0= '::'
+            	            // InternalPerspectiveDsl.g:4483:9: (lv_explicitStatic_10_0= '::' )
+            	            // InternalPerspectiveDsl.g:4484:10: lv_explicitStatic_10_0= '::'
             	            {
-            	            lv_explicitStatic_10_0=(Token)match(input,94,FOLLOW_57); if (state.failed) return current;
+            	            lv_explicitStatic_10_0=(Token)match(input,96,FOLLOW_57); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              										newLeafNode(lv_explicitStatic_10_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0());
@@ -12566,28 +12864,28 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4398:5: (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )?
+            	    // InternalPerspectiveDsl.g:4499:5: (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )?
             	    int alt59=2;
             	    int LA59_0 = input.LA(1);
 
-            	    if ( (LA59_0==68) ) {
+            	    if ( (LA59_0==70) ) {
             	        alt59=1;
             	    }
             	    switch (alt59) {
             	        case 1 :
-            	            // InternalPerspectiveDsl.g:4399:6: otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>'
+            	            // InternalPerspectiveDsl.g:4500:6: otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>'
             	            {
-            	            otherlv_11=(Token)match(input,68,FOLLOW_58); if (state.failed) return current;
+            	            otherlv_11=(Token)match(input,70,FOLLOW_58); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              						newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
             	              					
             	            }
-            	            // InternalPerspectiveDsl.g:4403:6: ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) )
-            	            // InternalPerspectiveDsl.g:4404:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            // InternalPerspectiveDsl.g:4504:6: ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) )
+            	            // InternalPerspectiveDsl.g:4505:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
             	            {
-            	            // InternalPerspectiveDsl.g:4404:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
-            	            // InternalPerspectiveDsl.g:4405:8: lv_typeArguments_12_0= ruleJvmArgumentTypeReference
+            	            // InternalPerspectiveDsl.g:4505:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            // InternalPerspectiveDsl.g:4506:8: lv_typeArguments_12_0= ruleJvmArgumentTypeReference
             	            {
             	            if ( state.backtracking==0 ) {
 
@@ -12618,32 +12916,32 @@
 
             	            }
 
-            	            // InternalPerspectiveDsl.g:4422:6: (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )*
+            	            // InternalPerspectiveDsl.g:4523:6: (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )*
             	            loop58:
             	            do {
             	                int alt58=2;
             	                int LA58_0 = input.LA(1);
 
-            	                if ( (LA58_0==57) ) {
+            	                if ( (LA58_0==59) ) {
             	                    alt58=1;
             	                }
 
 
             	                switch (alt58) {
             	            	case 1 :
-            	            	    // InternalPerspectiveDsl.g:4423:7: otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    // InternalPerspectiveDsl.g:4524:7: otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
             	            	    {
-            	            	    otherlv_13=(Token)match(input,57,FOLLOW_58); if (state.failed) return current;
+            	            	    otherlv_13=(Token)match(input,59,FOLLOW_58); if (state.failed) return current;
             	            	    if ( state.backtracking==0 ) {
 
             	            	      							newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
             	            	      						
             	            	    }
-            	            	    // InternalPerspectiveDsl.g:4427:7: ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
-            	            	    // InternalPerspectiveDsl.g:4428:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    // InternalPerspectiveDsl.g:4528:7: ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    // InternalPerspectiveDsl.g:4529:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
             	            	    {
-            	            	    // InternalPerspectiveDsl.g:4428:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
-            	            	    // InternalPerspectiveDsl.g:4429:9: lv_typeArguments_14_0= ruleJvmArgumentTypeReference
+            	            	    // InternalPerspectiveDsl.g:4529:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    // InternalPerspectiveDsl.g:4530:9: lv_typeArguments_14_0= ruleJvmArgumentTypeReference
             	            	    {
             	            	    if ( state.backtracking==0 ) {
 
@@ -12683,7 +12981,7 @@
             	                }
             	            } while (true);
 
-            	            otherlv_15=(Token)match(input,69,FOLLOW_57); if (state.failed) return current;
+            	            otherlv_15=(Token)match(input,71,FOLLOW_57); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              						newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
@@ -12695,11 +12993,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4452:5: ( ( ruleIdOrSuper ) )
-            	    // InternalPerspectiveDsl.g:4453:6: ( ruleIdOrSuper )
+            	    // InternalPerspectiveDsl.g:4553:5: ( ( ruleIdOrSuper ) )
+            	    // InternalPerspectiveDsl.g:4554:6: ( ruleIdOrSuper )
             	    {
-            	    // InternalPerspectiveDsl.g:4453:6: ( ruleIdOrSuper )
-            	    // InternalPerspectiveDsl.g:4454:7: ruleIdOrSuper
+            	    // InternalPerspectiveDsl.g:4554:6: ( ruleIdOrSuper )
+            	    // InternalPerspectiveDsl.g:4555:7: ruleIdOrSuper
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -12729,20 +13027,20 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4468: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:4569:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?
             	    int alt62=2;
             	    alt62 = dfa62.predict(input);
             	    switch (alt62) {
             	        case 1 :
-            	            // InternalPerspectiveDsl.g:4469: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:4570: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:4469:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) )
-            	            // InternalPerspectiveDsl.g:4470:7: ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' )
+            	            // InternalPerspectiveDsl.g:4570:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) )
+            	            // InternalPerspectiveDsl.g:4571:7: ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' )
             	            {
-            	            // InternalPerspectiveDsl.g:4474:7: (lv_explicitOperationCall_17_0= '(' )
-            	            // InternalPerspectiveDsl.g:4475:8: lv_explicitOperationCall_17_0= '('
+            	            // InternalPerspectiveDsl.g:4575:7: (lv_explicitOperationCall_17_0= '(' )
+            	            // InternalPerspectiveDsl.g:4576:8: lv_explicitOperationCall_17_0= '('
             	            {
-            	            lv_explicitOperationCall_17_0=(Token)match(input,56,FOLLOW_61); if (state.failed) return current;
+            	            lv_explicitOperationCall_17_0=(Token)match(input,58,FOLLOW_61); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              								newLeafNode(lv_explicitOperationCall_17_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
@@ -12762,18 +13060,18 @@
 
             	            }
 
-            	            // InternalPerspectiveDsl.g:4487:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?
+            	            // InternalPerspectiveDsl.g:4588:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?
             	            int alt61=3;
             	            alt61 = dfa61.predict(input);
             	            switch (alt61) {
             	                case 1 :
-            	                    // InternalPerspectiveDsl.g:4488:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    // InternalPerspectiveDsl.g:4589:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
             	                    {
-            	                    // InternalPerspectiveDsl.g:4488:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
-            	                    // InternalPerspectiveDsl.g:4489:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    // InternalPerspectiveDsl.g:4589:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    // InternalPerspectiveDsl.g:4590:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure )
             	                    {
-            	                    // InternalPerspectiveDsl.g:4514:8: (lv_memberCallArguments_18_0= ruleXShortClosure )
-            	                    // InternalPerspectiveDsl.g:4515:9: lv_memberCallArguments_18_0= ruleXShortClosure
+            	                    // InternalPerspectiveDsl.g:4615:8: (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    // InternalPerspectiveDsl.g:4616:9: lv_memberCallArguments_18_0= ruleXShortClosure
             	                    {
             	                    if ( state.backtracking==0 ) {
 
@@ -12808,16 +13106,16 @@
             	                    }
             	                    break;
             	                case 2 :
-            	                    // InternalPerspectiveDsl.g:4533:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    // InternalPerspectiveDsl.g:4634:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
             	                    {
-            	                    // InternalPerspectiveDsl.g:4533:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
-            	                    // InternalPerspectiveDsl.g:4534:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    // InternalPerspectiveDsl.g:4634:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    // InternalPerspectiveDsl.g:4635:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
             	                    {
-            	                    // InternalPerspectiveDsl.g:4534:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) )
-            	                    // InternalPerspectiveDsl.g:4535:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    // InternalPerspectiveDsl.g:4635:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) )
+            	                    // InternalPerspectiveDsl.g:4636:9: (lv_memberCallArguments_19_0= ruleXExpression )
             	                    {
-            	                    // InternalPerspectiveDsl.g:4535:9: (lv_memberCallArguments_19_0= ruleXExpression )
-            	                    // InternalPerspectiveDsl.g:4536:10: lv_memberCallArguments_19_0= ruleXExpression
+            	                    // InternalPerspectiveDsl.g:4636:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    // InternalPerspectiveDsl.g:4637:10: lv_memberCallArguments_19_0= ruleXExpression
             	                    {
             	                    if ( state.backtracking==0 ) {
 
@@ -12848,32 +13146,32 @@
 
             	                    }
 
-            	                    // InternalPerspectiveDsl.g:4553:8: (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    // InternalPerspectiveDsl.g:4654:8: (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
             	                    loop60:
             	                    do {
             	                        int alt60=2;
             	                        int LA60_0 = input.LA(1);
 
-            	                        if ( (LA60_0==57) ) {
+            	                        if ( (LA60_0==59) ) {
             	                            alt60=1;
             	                        }
 
 
             	                        switch (alt60) {
             	                    	case 1 :
-            	                    	    // InternalPerspectiveDsl.g:4554:9: otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    // InternalPerspectiveDsl.g:4655:9: otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) )
             	                    	    {
-            	                    	    otherlv_20=(Token)match(input,57,FOLLOW_33); if (state.failed) return current;
+            	                    	    otherlv_20=(Token)match(input,59,FOLLOW_33); if (state.failed) return current;
             	                    	    if ( state.backtracking==0 ) {
 
             	                    	      									newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
             	                    	      								
             	                    	    }
-            	                    	    // InternalPerspectiveDsl.g:4558:9: ( (lv_memberCallArguments_21_0= ruleXExpression ) )
-            	                    	    // InternalPerspectiveDsl.g:4559:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    // InternalPerspectiveDsl.g:4659:9: ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    // InternalPerspectiveDsl.g:4660:10: (lv_memberCallArguments_21_0= ruleXExpression )
             	                    	    {
-            	                    	    // InternalPerspectiveDsl.g:4559:10: (lv_memberCallArguments_21_0= ruleXExpression )
-            	                    	    // InternalPerspectiveDsl.g:4560:11: lv_memberCallArguments_21_0= ruleXExpression
+            	                    	    // InternalPerspectiveDsl.g:4660:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    // InternalPerspectiveDsl.g:4661:11: lv_memberCallArguments_21_0= ruleXExpression
             	                    	    {
             	                    	    if ( state.backtracking==0 ) {
 
@@ -12922,7 +13220,7 @@
 
             	            }
 
-            	            otherlv_22=(Token)match(input,58,FOLLOW_62); if (state.failed) return current;
+            	            otherlv_22=(Token)match(input,60,FOLLOW_62); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              						newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
@@ -12934,15 +13232,15 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4585:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
+            	    // InternalPerspectiveDsl.g:4686:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
             	    int alt63=2;
             	    alt63 = dfa63.predict(input);
             	    switch (alt63) {
             	        case 1 :
-            	            // InternalPerspectiveDsl.g:4586:6: ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure )
+            	            // InternalPerspectiveDsl.g:4687:6: ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure )
             	            {
-            	            // InternalPerspectiveDsl.g:4592:6: (lv_memberCallArguments_23_0= ruleXClosure )
-            	            // InternalPerspectiveDsl.g:4593:7: lv_memberCallArguments_23_0= ruleXClosure
+            	            // InternalPerspectiveDsl.g:4693:6: (lv_memberCallArguments_23_0= ruleXClosure )
+            	            // InternalPerspectiveDsl.g:4694:7: lv_memberCallArguments_23_0= ruleXClosure
             	            {
             	            if ( state.backtracking==0 ) {
 
@@ -13013,7 +13311,7 @@
 
 
     // $ANTLR start "entryRuleXPrimaryExpression"
-    // InternalPerspectiveDsl.g:4616:1: entryRuleXPrimaryExpression returns [EObject current=null] : iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF ;
+    // InternalPerspectiveDsl.g:4717:1: entryRuleXPrimaryExpression returns [EObject current=null] : iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF ;
     public final EObject entryRuleXPrimaryExpression() throws RecognitionException {
         EObject current = null;
 
@@ -13021,8 +13319,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4616:59: (iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF )
-            // InternalPerspectiveDsl.g:4617:2: iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF
+            // InternalPerspectiveDsl.g:4717:59: (iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF )
+            // InternalPerspectiveDsl.g:4718:2: iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXPrimaryExpressionRule()); 
@@ -13053,7 +13351,7 @@
 
 
     // $ANTLR start "ruleXPrimaryExpression"
-    // InternalPerspectiveDsl.g:4623: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:4724: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;
 
@@ -13092,15 +13390,15 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4629: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:4630: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:4730: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:4731: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:4630: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:4731:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )
             int alt65=15;
             alt65 = dfa65.predict(input);
             switch (alt65) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4631:3: this_XConstructorCall_0= ruleXConstructorCall
+                    // InternalPerspectiveDsl.g:4732:3: this_XConstructorCall_0= ruleXConstructorCall
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13122,7 +13420,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:4640:3: this_XBlockExpression_1= ruleXBlockExpression
+                    // InternalPerspectiveDsl.g:4741:3: this_XBlockExpression_1= ruleXBlockExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13144,7 +13442,7 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:4649:3: this_XSwitchExpression_2= ruleXSwitchExpression
+                    // InternalPerspectiveDsl.g:4750:3: this_XSwitchExpression_2= ruleXSwitchExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13166,10 +13464,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:4658:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    // InternalPerspectiveDsl.g:4759:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
                     {
-                    // InternalPerspectiveDsl.g:4658:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
-                    // InternalPerspectiveDsl.g:4659:4: ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression
+                    // InternalPerspectiveDsl.g:4759:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    // InternalPerspectiveDsl.g:4760:4: ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13194,7 +13492,7 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:4676:3: this_XFeatureCall_4= ruleXFeatureCall
+                    // InternalPerspectiveDsl.g:4777:3: this_XFeatureCall_4= ruleXFeatureCall
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13216,7 +13514,7 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:4685:3: this_XLiteral_5= ruleXLiteral
+                    // InternalPerspectiveDsl.g:4786:3: this_XLiteral_5= ruleXLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13238,7 +13536,7 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:4694:3: this_XIfExpression_6= ruleXIfExpression
+                    // InternalPerspectiveDsl.g:4795:3: this_XIfExpression_6= ruleXIfExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13260,10 +13558,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalPerspectiveDsl.g:4703:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    // InternalPerspectiveDsl.g:4804:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
                     {
-                    // InternalPerspectiveDsl.g:4703:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
-                    // InternalPerspectiveDsl.g:4704:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression
+                    // InternalPerspectiveDsl.g:4804:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    // InternalPerspectiveDsl.g:4805:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13288,7 +13586,7 @@
                     }
                     break;
                 case 9 :
-                    // InternalPerspectiveDsl.g:4727:3: this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression
+                    // InternalPerspectiveDsl.g:4828:3: this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13310,7 +13608,7 @@
                     }
                     break;
                 case 10 :
-                    // InternalPerspectiveDsl.g:4736:3: this_XWhileExpression_9= ruleXWhileExpression
+                    // InternalPerspectiveDsl.g:4837:3: this_XWhileExpression_9= ruleXWhileExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13332,7 +13630,7 @@
                     }
                     break;
                 case 11 :
-                    // InternalPerspectiveDsl.g:4745:3: this_XDoWhileExpression_10= ruleXDoWhileExpression
+                    // InternalPerspectiveDsl.g:4846:3: this_XDoWhileExpression_10= ruleXDoWhileExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13354,7 +13652,7 @@
                     }
                     break;
                 case 12 :
-                    // InternalPerspectiveDsl.g:4754:3: this_XThrowExpression_11= ruleXThrowExpression
+                    // InternalPerspectiveDsl.g:4855:3: this_XThrowExpression_11= ruleXThrowExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13376,7 +13674,7 @@
                     }
                     break;
                 case 13 :
-                    // InternalPerspectiveDsl.g:4763:3: this_XReturnExpression_12= ruleXReturnExpression
+                    // InternalPerspectiveDsl.g:4864:3: this_XReturnExpression_12= ruleXReturnExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13398,7 +13696,7 @@
                     }
                     break;
                 case 14 :
-                    // InternalPerspectiveDsl.g:4772:3: this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression
+                    // InternalPerspectiveDsl.g:4873:3: this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13420,7 +13718,7 @@
                     }
                     break;
                 case 15 :
-                    // InternalPerspectiveDsl.g:4781:3: this_XParenthesizedExpression_14= ruleXParenthesizedExpression
+                    // InternalPerspectiveDsl.g:4882:3: this_XParenthesizedExpression_14= ruleXParenthesizedExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13466,7 +13764,7 @@
 
 
     // $ANTLR start "entryRuleXLiteral"
-    // InternalPerspectiveDsl.g:4793:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
+    // InternalPerspectiveDsl.g:4894:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
     public final EObject entryRuleXLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -13474,8 +13772,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4793:49: (iv_ruleXLiteral= ruleXLiteral EOF )
-            // InternalPerspectiveDsl.g:4794:2: iv_ruleXLiteral= ruleXLiteral EOF
+            // InternalPerspectiveDsl.g:4894:49: (iv_ruleXLiteral= ruleXLiteral EOF )
+            // InternalPerspectiveDsl.g:4895:2: iv_ruleXLiteral= ruleXLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXLiteralRule()); 
@@ -13506,7 +13804,7 @@
 
 
     // $ANTLR start "ruleXLiteral"
-    // InternalPerspectiveDsl.g:4800: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:4901: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;
 
@@ -13529,32 +13827,32 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4806: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:4807: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:4907: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:4908: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:4807: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:4908:2: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
             int alt66=7;
             int LA66_0 = input.LA(1);
 
-            if ( (LA66_0==60) ) {
+            if ( (LA66_0==62) ) {
                 alt66=1;
             }
-            else if ( (LA66_0==61) && (synpred27_InternalPerspectiveDsl())) {
+            else if ( (LA66_0==63) && (synpred27_InternalPerspectiveDsl())) {
                 alt66=2;
             }
-            else if ( ((LA66_0>=111 && LA66_0<=112)) ) {
+            else if ( ((LA66_0>=113 && LA66_0<=114)) ) {
                 alt66=3;
             }
             else if ( ((LA66_0>=RULE_INT && LA66_0<=RULE_DECIMAL)) ) {
                 alt66=4;
             }
-            else if ( (LA66_0==113) ) {
+            else if ( (LA66_0==115) ) {
                 alt66=5;
             }
             else if ( (LA66_0==RULE_STRING) ) {
                 alt66=6;
             }
-            else if ( (LA66_0==114) ) {
+            else if ( (LA66_0==116) ) {
                 alt66=7;
             }
             else {
@@ -13566,7 +13864,7 @@
             }
             switch (alt66) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4808:3: this_XCollectionLiteral_0= ruleXCollectionLiteral
+                    // InternalPerspectiveDsl.g:4909:3: this_XCollectionLiteral_0= ruleXCollectionLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13588,10 +13886,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:4817:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    // InternalPerspectiveDsl.g:4918:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
                     {
-                    // InternalPerspectiveDsl.g:4817:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
-                    // InternalPerspectiveDsl.g:4818:4: ( ( () '[' ) )=>this_XClosure_1= ruleXClosure
+                    // InternalPerspectiveDsl.g:4918:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    // InternalPerspectiveDsl.g:4919:4: ( ( () '[' ) )=>this_XClosure_1= ruleXClosure
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13616,7 +13914,7 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:4834:3: this_XBooleanLiteral_2= ruleXBooleanLiteral
+                    // InternalPerspectiveDsl.g:4935:3: this_XBooleanLiteral_2= ruleXBooleanLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13638,7 +13936,7 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:4843:3: this_XNumberLiteral_3= ruleXNumberLiteral
+                    // InternalPerspectiveDsl.g:4944:3: this_XNumberLiteral_3= ruleXNumberLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13660,7 +13958,7 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:4852:3: this_XNullLiteral_4= ruleXNullLiteral
+                    // InternalPerspectiveDsl.g:4953:3: this_XNullLiteral_4= ruleXNullLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13682,7 +13980,7 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:4861:3: this_XStringLiteral_5= ruleXStringLiteral
+                    // InternalPerspectiveDsl.g:4962:3: this_XStringLiteral_5= ruleXStringLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13704,7 +14002,7 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:4870:3: this_XTypeLiteral_6= ruleXTypeLiteral
+                    // InternalPerspectiveDsl.g:4971:3: this_XTypeLiteral_6= ruleXTypeLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13750,7 +14048,7 @@
 
 
     // $ANTLR start "entryRuleXCollectionLiteral"
-    // InternalPerspectiveDsl.g:4882:1: entryRuleXCollectionLiteral returns [EObject current=null] : iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF ;
+    // InternalPerspectiveDsl.g:4983:1: entryRuleXCollectionLiteral returns [EObject current=null] : iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF ;
     public final EObject entryRuleXCollectionLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -13758,8 +14056,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4882:59: (iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF )
-            // InternalPerspectiveDsl.g:4883:2: iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF
+            // InternalPerspectiveDsl.g:4983:59: (iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF )
+            // InternalPerspectiveDsl.g:4984:2: iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCollectionLiteralRule()); 
@@ -13790,7 +14088,7 @@
 
 
     // $ANTLR start "ruleXCollectionLiteral"
-    // InternalPerspectiveDsl.g:4889:1: ruleXCollectionLiteral returns [EObject current=null] : (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) ;
+    // InternalPerspectiveDsl.g:4990:1: ruleXCollectionLiteral returns [EObject current=null] : (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) ;
     public final EObject ruleXCollectionLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -13803,17 +14101,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4895:2: ( (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) )
-            // InternalPerspectiveDsl.g:4896:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            // InternalPerspectiveDsl.g:4996:2: ( (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) )
+            // InternalPerspectiveDsl.g:4997:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
             {
-            // InternalPerspectiveDsl.g:4896:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            // InternalPerspectiveDsl.g:4997:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
             int alt67=2;
             int LA67_0 = input.LA(1);
 
-            if ( (LA67_0==60) ) {
+            if ( (LA67_0==62) ) {
                 int LA67_1 = input.LA(2);
 
-                if ( (LA67_1==61) ) {
+                if ( (LA67_1==63) ) {
                     alt67=2;
                 }
                 else if ( (LA67_1==14) ) {
@@ -13836,7 +14134,7 @@
             }
             switch (alt67) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4897:3: this_XSetLiteral_0= ruleXSetLiteral
+                    // InternalPerspectiveDsl.g:4998:3: this_XSetLiteral_0= ruleXSetLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13858,7 +14156,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:4906:3: this_XListLiteral_1= ruleXListLiteral
+                    // InternalPerspectiveDsl.g:5007:3: this_XListLiteral_1= ruleXListLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13904,7 +14202,7 @@
 
 
     // $ANTLR start "entryRuleXSetLiteral"
-    // InternalPerspectiveDsl.g:4918:1: entryRuleXSetLiteral returns [EObject current=null] : iv_ruleXSetLiteral= ruleXSetLiteral EOF ;
+    // InternalPerspectiveDsl.g:5019:1: entryRuleXSetLiteral returns [EObject current=null] : iv_ruleXSetLiteral= ruleXSetLiteral EOF ;
     public final EObject entryRuleXSetLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -13912,8 +14210,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4918:52: (iv_ruleXSetLiteral= ruleXSetLiteral EOF )
-            // InternalPerspectiveDsl.g:4919:2: iv_ruleXSetLiteral= ruleXSetLiteral EOF
+            // InternalPerspectiveDsl.g:5019:52: (iv_ruleXSetLiteral= ruleXSetLiteral EOF )
+            // InternalPerspectiveDsl.g:5020:2: iv_ruleXSetLiteral= ruleXSetLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXSetLiteralRule()); 
@@ -13944,7 +14242,7 @@
 
 
     // $ANTLR start "ruleXSetLiteral"
-    // InternalPerspectiveDsl.g:4925: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:5026: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;
 
@@ -13961,14 +14259,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4931:2: ( ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) )
-            // InternalPerspectiveDsl.g:4932:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            // InternalPerspectiveDsl.g:5032:2: ( ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) )
+            // InternalPerspectiveDsl.g:5033:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
             {
-            // InternalPerspectiveDsl.g:4932:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
-            // InternalPerspectiveDsl.g:4933:3: () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}'
+            // InternalPerspectiveDsl.g:5033:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            // InternalPerspectiveDsl.g:5034:3: () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}'
             {
-            // InternalPerspectiveDsl.g:4933:3: ()
-            // InternalPerspectiveDsl.g:4934:4: 
+            // InternalPerspectiveDsl.g:5034:3: ()
+            // InternalPerspectiveDsl.g:5035:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -13980,7 +14278,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,60,FOLLOW_63); if (state.failed) return current;
+            otherlv_1=(Token)match(input,62,FOLLOW_63); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
@@ -13992,22 +14290,22 @@
               			newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:4948:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            // InternalPerspectiveDsl.g:5049:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
             int alt69=2;
             int LA69_0 = input.LA(1);
 
-            if ( ((LA69_0>=RULE_ID && LA69_0<=RULE_DECIMAL)||LA69_0==14||(LA69_0>=49 && LA69_0<=51)||LA69_0==56||(LA69_0>=60 && LA69_0<=61)||LA69_0==68||(LA69_0>=84 && LA69_0<=85)||LA69_0==89||LA69_0==97||LA69_0==99||(LA69_0>=103 && LA69_0<=105)||(LA69_0>=108 && LA69_0<=117)||LA69_0==119) ) {
+            if ( ((LA69_0>=RULE_ID && LA69_0<=RULE_DECIMAL)||LA69_0==14||(LA69_0>=51 && LA69_0<=53)||LA69_0==58||(LA69_0>=62 && LA69_0<=63)||LA69_0==70||(LA69_0>=86 && LA69_0<=87)||LA69_0==91||LA69_0==99||LA69_0==101||(LA69_0>=105 && LA69_0<=107)||(LA69_0>=110 && LA69_0<=119)||LA69_0==121) ) {
                 alt69=1;
             }
             switch (alt69) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4949:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    // InternalPerspectiveDsl.g:5050:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                     {
-                    // InternalPerspectiveDsl.g:4949:4: ( (lv_elements_3_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:4950:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5050:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5051:5: (lv_elements_3_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:4950:5: (lv_elements_3_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:4951:6: lv_elements_3_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:5051:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5052:6: lv_elements_3_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14038,32 +14336,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:4968:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    // InternalPerspectiveDsl.g:5069:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                     loop68:
                     do {
                         int alt68=2;
                         int LA68_0 = input.LA(1);
 
-                        if ( (LA68_0==57) ) {
+                        if ( (LA68_0==59) ) {
                             alt68=1;
                         }
 
 
                         switch (alt68) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:4969:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalPerspectiveDsl.g:5070:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
                     	    {
-                    	    otherlv_4=(Token)match(input,57,FOLLOW_33); if (state.failed) return current;
+                    	    otherlv_4=(Token)match(input,59,FOLLOW_33); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
                     	      				
                     	    }
-                    	    // InternalPerspectiveDsl.g:4973:5: ( (lv_elements_5_0= ruleXExpression ) )
-                    	    // InternalPerspectiveDsl.g:4974:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalPerspectiveDsl.g:5074:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalPerspectiveDsl.g:5075:6: (lv_elements_5_0= ruleXExpression )
                     	    {
-                    	    // InternalPerspectiveDsl.g:4974:6: (lv_elements_5_0= ruleXExpression )
-                    	    // InternalPerspectiveDsl.g:4975:7: lv_elements_5_0= ruleXExpression
+                    	    // InternalPerspectiveDsl.g:5075:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalPerspectiveDsl.g:5076:7: lv_elements_5_0= ruleXExpression
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -14140,7 +14438,7 @@
 
 
     // $ANTLR start "entryRuleXListLiteral"
-    // InternalPerspectiveDsl.g:5002:1: entryRuleXListLiteral returns [EObject current=null] : iv_ruleXListLiteral= ruleXListLiteral EOF ;
+    // InternalPerspectiveDsl.g:5103:1: entryRuleXListLiteral returns [EObject current=null] : iv_ruleXListLiteral= ruleXListLiteral EOF ;
     public final EObject entryRuleXListLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -14148,8 +14446,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5002:53: (iv_ruleXListLiteral= ruleXListLiteral EOF )
-            // InternalPerspectiveDsl.g:5003:2: iv_ruleXListLiteral= ruleXListLiteral EOF
+            // InternalPerspectiveDsl.g:5103:53: (iv_ruleXListLiteral= ruleXListLiteral EOF )
+            // InternalPerspectiveDsl.g:5104:2: iv_ruleXListLiteral= ruleXListLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXListLiteralRule()); 
@@ -14180,7 +14478,7 @@
 
 
     // $ANTLR start "ruleXListLiteral"
-    // InternalPerspectiveDsl.g:5009: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:5110: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;
 
@@ -14197,14 +14495,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5015:2: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
-            // InternalPerspectiveDsl.g:5016:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            // InternalPerspectiveDsl.g:5116:2: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
+            // InternalPerspectiveDsl.g:5117:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
             {
-            // InternalPerspectiveDsl.g:5016:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
-            // InternalPerspectiveDsl.g:5017:3: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
+            // InternalPerspectiveDsl.g:5117:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            // InternalPerspectiveDsl.g:5118:3: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
             {
-            // InternalPerspectiveDsl.g:5017:3: ()
-            // InternalPerspectiveDsl.g:5018:4: 
+            // InternalPerspectiveDsl.g:5118:3: ()
+            // InternalPerspectiveDsl.g:5119:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -14216,34 +14514,34 @@
 
             }
 
-            otherlv_1=(Token)match(input,60,FOLLOW_34); if (state.failed) return current;
+            otherlv_1=(Token)match(input,62,FOLLOW_34); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,61,FOLLOW_35); if (state.failed) return current;
+            otherlv_2=(Token)match(input,63,FOLLOW_35); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:5032:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            // InternalPerspectiveDsl.g:5133:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
             int alt71=2;
             int LA71_0 = input.LA(1);
 
-            if ( ((LA71_0>=RULE_ID && LA71_0<=RULE_DECIMAL)||LA71_0==14||(LA71_0>=49 && LA71_0<=51)||LA71_0==56||(LA71_0>=60 && LA71_0<=61)||LA71_0==68||(LA71_0>=84 && LA71_0<=85)||LA71_0==89||LA71_0==97||LA71_0==99||(LA71_0>=103 && LA71_0<=105)||(LA71_0>=108 && LA71_0<=117)||LA71_0==119) ) {
+            if ( ((LA71_0>=RULE_ID && LA71_0<=RULE_DECIMAL)||LA71_0==14||(LA71_0>=51 && LA71_0<=53)||LA71_0==58||(LA71_0>=62 && LA71_0<=63)||LA71_0==70||(LA71_0>=86 && LA71_0<=87)||LA71_0==91||LA71_0==99||LA71_0==101||(LA71_0>=105 && LA71_0<=107)||(LA71_0>=110 && LA71_0<=119)||LA71_0==121) ) {
                 alt71=1;
             }
             switch (alt71) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5033:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    // InternalPerspectiveDsl.g:5134:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                     {
-                    // InternalPerspectiveDsl.g:5033:4: ( (lv_elements_3_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:5034:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5134:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5135:5: (lv_elements_3_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:5034:5: (lv_elements_3_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:5035:6: lv_elements_3_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:5135:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5136:6: lv_elements_3_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14274,32 +14572,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:5052:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    // InternalPerspectiveDsl.g:5153:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                     loop70:
                     do {
                         int alt70=2;
                         int LA70_0 = input.LA(1);
 
-                        if ( (LA70_0==57) ) {
+                        if ( (LA70_0==59) ) {
                             alt70=1;
                         }
 
 
                         switch (alt70) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:5053:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalPerspectiveDsl.g:5154:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
                     	    {
-                    	    otherlv_4=(Token)match(input,57,FOLLOW_33); if (state.failed) return current;
+                    	    otherlv_4=(Token)match(input,59,FOLLOW_33); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
                     	      				
                     	    }
-                    	    // InternalPerspectiveDsl.g:5057:5: ( (lv_elements_5_0= ruleXExpression ) )
-                    	    // InternalPerspectiveDsl.g:5058:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalPerspectiveDsl.g:5158:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalPerspectiveDsl.g:5159:6: (lv_elements_5_0= ruleXExpression )
                     	    {
-                    	    // InternalPerspectiveDsl.g:5058:6: (lv_elements_5_0= ruleXExpression )
-                    	    // InternalPerspectiveDsl.g:5059:7: lv_elements_5_0= ruleXExpression
+                    	    // InternalPerspectiveDsl.g:5159:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalPerspectiveDsl.g:5160:7: lv_elements_5_0= ruleXExpression
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -14345,7 +14643,7 @@
 
             }
 
-            otherlv_6=(Token)match(input,62,FOLLOW_2); if (state.failed) return current;
+            otherlv_6=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4());
@@ -14376,7 +14674,7 @@
 
 
     // $ANTLR start "entryRuleXClosure"
-    // InternalPerspectiveDsl.g:5086:1: entryRuleXClosure returns [EObject current=null] : iv_ruleXClosure= ruleXClosure EOF ;
+    // InternalPerspectiveDsl.g:5187:1: entryRuleXClosure returns [EObject current=null] : iv_ruleXClosure= ruleXClosure EOF ;
     public final EObject entryRuleXClosure() throws RecognitionException {
         EObject current = null;
 
@@ -14384,8 +14682,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5086:49: (iv_ruleXClosure= ruleXClosure EOF )
-            // InternalPerspectiveDsl.g:5087:2: iv_ruleXClosure= ruleXClosure EOF
+            // InternalPerspectiveDsl.g:5187:49: (iv_ruleXClosure= ruleXClosure EOF )
+            // InternalPerspectiveDsl.g:5188:2: iv_ruleXClosure= ruleXClosure EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXClosureRule()); 
@@ -14416,7 +14714,7 @@
 
 
     // $ANTLR start "ruleXClosure"
-    // InternalPerspectiveDsl.g:5093: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:5194: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;
 
@@ -14435,20 +14733,20 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5099: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:5100: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:5200: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:5201: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:5100: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:5101: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:5201: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:5202: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:5101:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) )
-            // InternalPerspectiveDsl.g:5102:4: ( ( () '[' ) )=> ( () otherlv_1= '[' )
+            // InternalPerspectiveDsl.g:5202:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) )
+            // InternalPerspectiveDsl.g:5203:4: ( ( () '[' ) )=> ( () otherlv_1= '[' )
             {
-            // InternalPerspectiveDsl.g:5108:4: ( () otherlv_1= '[' )
-            // InternalPerspectiveDsl.g:5109:5: () otherlv_1= '['
+            // InternalPerspectiveDsl.g:5209:4: ( () otherlv_1= '[' )
+            // InternalPerspectiveDsl.g:5210:5: () otherlv_1= '['
             {
-            // InternalPerspectiveDsl.g:5109:5: ()
-            // InternalPerspectiveDsl.g:5110:6: 
+            // InternalPerspectiveDsl.g:5210:5: ()
+            // InternalPerspectiveDsl.g:5211:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -14460,7 +14758,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,61,FOLLOW_66); if (state.failed) return current;
+            otherlv_1=(Token)match(input,63,FOLLOW_66); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
@@ -14472,32 +14770,32 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5122:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?
+            // InternalPerspectiveDsl.g:5223:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?
             int alt74=2;
             alt74 = dfa74.predict(input);
             switch (alt74) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5123:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    // InternalPerspectiveDsl.g:5224:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
                     {
-                    // InternalPerspectiveDsl.g:5146:4: ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
-                    // InternalPerspectiveDsl.g:5147:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) )
+                    // InternalPerspectiveDsl.g:5247:4: ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    // InternalPerspectiveDsl.g:5248:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) )
                     {
-                    // InternalPerspectiveDsl.g:5147:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )?
+                    // InternalPerspectiveDsl.g:5248:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )?
                     int alt73=2;
                     int LA73_0 = input.LA(1);
 
-                    if ( (LA73_0==RULE_ID||LA73_0==56||LA73_0==81) ) {
+                    if ( (LA73_0==RULE_ID||LA73_0==58||LA73_0==83) ) {
                         alt73=1;
                     }
                     switch (alt73) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:5148:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            // InternalPerspectiveDsl.g:5249:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
                             {
-                            // InternalPerspectiveDsl.g:5148:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) )
-                            // InternalPerspectiveDsl.g:5149:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            // InternalPerspectiveDsl.g:5249:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) )
+                            // InternalPerspectiveDsl.g:5250:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
                             {
-                            // InternalPerspectiveDsl.g:5149:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
-                            // InternalPerspectiveDsl.g:5150:8: lv_declaredFormalParameters_2_0= ruleJvmFormalParameter
+                            // InternalPerspectiveDsl.g:5250:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            // InternalPerspectiveDsl.g:5251:8: lv_declaredFormalParameters_2_0= ruleJvmFormalParameter
                             {
                             if ( state.backtracking==0 ) {
 
@@ -14528,32 +14826,32 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:5167:6: (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            // InternalPerspectiveDsl.g:5268:6: (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
                             loop72:
                             do {
                                 int alt72=2;
                                 int LA72_0 = input.LA(1);
 
-                                if ( (LA72_0==57) ) {
+                                if ( (LA72_0==59) ) {
                                     alt72=1;
                                 }
 
 
                                 switch (alt72) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:5168:7: otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    // InternalPerspectiveDsl.g:5269:7: otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
                             	    {
-                            	    otherlv_3=(Token)match(input,57,FOLLOW_46); if (state.failed) return current;
+                            	    otherlv_3=(Token)match(input,59,FOLLOW_46); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      							newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
                             	      						
                             	    }
-                            	    // InternalPerspectiveDsl.g:5172:7: ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
-                            	    // InternalPerspectiveDsl.g:5173:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    // InternalPerspectiveDsl.g:5273:7: ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    // InternalPerspectiveDsl.g:5274:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
                             	    {
-                            	    // InternalPerspectiveDsl.g:5173:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
-                            	    // InternalPerspectiveDsl.g:5174:9: lv_declaredFormalParameters_4_0= ruleJvmFormalParameter
+                            	    // InternalPerspectiveDsl.g:5274:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    // InternalPerspectiveDsl.g:5275:9: lv_declaredFormalParameters_4_0= ruleJvmFormalParameter
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -14599,13 +14897,13 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:5193:5: ( (lv_explicitSyntax_5_0= '|' ) )
-                    // InternalPerspectiveDsl.g:5194:6: (lv_explicitSyntax_5_0= '|' )
+                    // InternalPerspectiveDsl.g:5294:5: ( (lv_explicitSyntax_5_0= '|' ) )
+                    // InternalPerspectiveDsl.g:5295:6: (lv_explicitSyntax_5_0= '|' )
                     {
-                    // InternalPerspectiveDsl.g:5194:6: (lv_explicitSyntax_5_0= '|' )
-                    // InternalPerspectiveDsl.g:5195:7: lv_explicitSyntax_5_0= '|'
+                    // InternalPerspectiveDsl.g:5295:6: (lv_explicitSyntax_5_0= '|' )
+                    // InternalPerspectiveDsl.g:5296:7: lv_explicitSyntax_5_0= '|'
                     {
-                    lv_explicitSyntax_5_0=(Token)match(input,96,FOLLOW_68); if (state.failed) return current;
+                    lv_explicitSyntax_5_0=(Token)match(input,98,FOLLOW_68); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(lv_explicitSyntax_5_0, grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0());
@@ -14634,11 +14932,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5209:3: ( (lv_expression_6_0= ruleXExpressionInClosure ) )
-            // InternalPerspectiveDsl.g:5210:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            // InternalPerspectiveDsl.g:5310:3: ( (lv_expression_6_0= ruleXExpressionInClosure ) )
+            // InternalPerspectiveDsl.g:5311:4: (lv_expression_6_0= ruleXExpressionInClosure )
             {
-            // InternalPerspectiveDsl.g:5210:4: (lv_expression_6_0= ruleXExpressionInClosure )
-            // InternalPerspectiveDsl.g:5211:5: lv_expression_6_0= ruleXExpressionInClosure
+            // InternalPerspectiveDsl.g:5311:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            // InternalPerspectiveDsl.g:5312:5: lv_expression_6_0= ruleXExpressionInClosure
             {
             if ( state.backtracking==0 ) {
 
@@ -14669,7 +14967,7 @@
 
             }
 
-            otherlv_7=(Token)match(input,62,FOLLOW_2); if (state.failed) return current;
+            otherlv_7=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_7, grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3());
@@ -14700,7 +14998,7 @@
 
 
     // $ANTLR start "entryRuleXExpressionInClosure"
-    // InternalPerspectiveDsl.g:5236:1: entryRuleXExpressionInClosure returns [EObject current=null] : iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF ;
+    // InternalPerspectiveDsl.g:5337:1: entryRuleXExpressionInClosure returns [EObject current=null] : iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF ;
     public final EObject entryRuleXExpressionInClosure() throws RecognitionException {
         EObject current = null;
 
@@ -14708,8 +15006,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5236:61: (iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF )
-            // InternalPerspectiveDsl.g:5237:2: iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF
+            // InternalPerspectiveDsl.g:5337:61: (iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF )
+            // InternalPerspectiveDsl.g:5338:2: iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionInClosureRule()); 
@@ -14740,7 +15038,7 @@
 
 
     // $ANTLR start "ruleXExpressionInClosure"
-    // InternalPerspectiveDsl.g:5243:1: ruleXExpressionInClosure returns [EObject current=null] : ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) ;
+    // InternalPerspectiveDsl.g:5344:1: ruleXExpressionInClosure returns [EObject current=null] : ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) ;
     public final EObject ruleXExpressionInClosure() throws RecognitionException {
         EObject current = null;
 
@@ -14752,14 +15050,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5249:2: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) )
-            // InternalPerspectiveDsl.g:5250:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            // InternalPerspectiveDsl.g:5350:2: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) )
+            // InternalPerspectiveDsl.g:5351:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
             {
-            // InternalPerspectiveDsl.g:5250:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
-            // InternalPerspectiveDsl.g:5251:3: () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            // InternalPerspectiveDsl.g:5351:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            // InternalPerspectiveDsl.g:5352:3: () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
             {
-            // InternalPerspectiveDsl.g:5251:3: ()
-            // InternalPerspectiveDsl.g:5252:4: 
+            // InternalPerspectiveDsl.g:5352:3: ()
+            // InternalPerspectiveDsl.g:5353:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -14771,26 +15069,26 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5258:3: ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            // InternalPerspectiveDsl.g:5359:3: ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
             loop76:
             do {
                 int alt76=2;
                 int LA76_0 = input.LA(1);
 
-                if ( ((LA76_0>=RULE_ID && LA76_0<=RULE_DECIMAL)||LA76_0==14||(LA76_0>=49 && LA76_0<=51)||LA76_0==56||(LA76_0>=60 && LA76_0<=61)||LA76_0==68||(LA76_0>=84 && LA76_0<=85)||LA76_0==89||LA76_0==97||LA76_0==99||(LA76_0>=103 && LA76_0<=117)||LA76_0==119) ) {
+                if ( ((LA76_0>=RULE_ID && LA76_0<=RULE_DECIMAL)||LA76_0==14||(LA76_0>=51 && LA76_0<=53)||LA76_0==58||(LA76_0>=62 && LA76_0<=63)||LA76_0==70||(LA76_0>=86 && LA76_0<=87)||LA76_0==91||LA76_0==99||LA76_0==101||(LA76_0>=105 && LA76_0<=119)||LA76_0==121) ) {
                     alt76=1;
                 }
 
 
                 switch (alt76) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:5259:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )?
+            	    // InternalPerspectiveDsl.g:5360:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )?
             	    {
-            	    // InternalPerspectiveDsl.g:5259:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) )
-            	    // InternalPerspectiveDsl.g:5260:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalPerspectiveDsl.g:5360:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalPerspectiveDsl.g:5361:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
             	    {
-            	    // InternalPerspectiveDsl.g:5260:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
-            	    // InternalPerspectiveDsl.g:5261:6: lv_expressions_1_0= ruleXExpressionOrVarDeclaration
+            	    // InternalPerspectiveDsl.g:5361:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalPerspectiveDsl.g:5362:6: lv_expressions_1_0= ruleXExpressionOrVarDeclaration
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -14821,18 +15119,18 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:5278:4: (otherlv_2= ';' )?
+            	    // InternalPerspectiveDsl.g:5379:4: (otherlv_2= ';' )?
             	    int alt75=2;
             	    int LA75_0 = input.LA(1);
 
-            	    if ( (LA75_0==54) ) {
+            	    if ( (LA75_0==56) ) {
             	        alt75=1;
             	    }
             	    switch (alt75) {
             	        case 1 :
-            	            // InternalPerspectiveDsl.g:5279:5: otherlv_2= ';'
+            	            // InternalPerspectiveDsl.g:5380:5: otherlv_2= ';'
             	            {
-            	            otherlv_2=(Token)match(input,54,FOLLOW_71); if (state.failed) return current;
+            	            otherlv_2=(Token)match(input,56,FOLLOW_71); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              					newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
@@ -14878,7 +15176,7 @@
 
 
     // $ANTLR start "entryRuleXShortClosure"
-    // InternalPerspectiveDsl.g:5289:1: entryRuleXShortClosure returns [EObject current=null] : iv_ruleXShortClosure= ruleXShortClosure EOF ;
+    // InternalPerspectiveDsl.g:5390:1: entryRuleXShortClosure returns [EObject current=null] : iv_ruleXShortClosure= ruleXShortClosure EOF ;
     public final EObject entryRuleXShortClosure() throws RecognitionException {
         EObject current = null;
 
@@ -14886,8 +15184,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5289:54: (iv_ruleXShortClosure= ruleXShortClosure EOF )
-            // InternalPerspectiveDsl.g:5290:2: iv_ruleXShortClosure= ruleXShortClosure EOF
+            // InternalPerspectiveDsl.g:5390:54: (iv_ruleXShortClosure= ruleXShortClosure EOF )
+            // InternalPerspectiveDsl.g:5391:2: iv_ruleXShortClosure= ruleXShortClosure EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXShortClosureRule()); 
@@ -14918,7 +15216,7 @@
 
 
     // $ANTLR start "ruleXShortClosure"
-    // InternalPerspectiveDsl.g:5296: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:5397: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;
 
@@ -14935,20 +15233,20 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5302: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:5303: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:5403: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:5404: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:5303: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:5304: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:5404: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:5405: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:5304:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) )
-            // InternalPerspectiveDsl.g:5305:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            // InternalPerspectiveDsl.g:5405:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) )
+            // InternalPerspectiveDsl.g:5406:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
             {
-            // InternalPerspectiveDsl.g:5330:4: ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
-            // InternalPerspectiveDsl.g:5331:5: () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) )
+            // InternalPerspectiveDsl.g:5431:4: ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            // InternalPerspectiveDsl.g:5432:5: () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) )
             {
-            // InternalPerspectiveDsl.g:5331:5: ()
-            // InternalPerspectiveDsl.g:5332:6: 
+            // InternalPerspectiveDsl.g:5432:5: ()
+            // InternalPerspectiveDsl.g:5433:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -14960,22 +15258,22 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5338:5: ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
+            // InternalPerspectiveDsl.g:5439:5: ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
             int alt78=2;
             int LA78_0 = input.LA(1);
 
-            if ( (LA78_0==RULE_ID||LA78_0==56||LA78_0==81) ) {
+            if ( (LA78_0==RULE_ID||LA78_0==58||LA78_0==83) ) {
                 alt78=1;
             }
             switch (alt78) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5339:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    // InternalPerspectiveDsl.g:5440:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
                     {
-                    // InternalPerspectiveDsl.g:5339:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) )
-                    // InternalPerspectiveDsl.g:5340:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    // InternalPerspectiveDsl.g:5440:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) )
+                    // InternalPerspectiveDsl.g:5441:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
                     {
-                    // InternalPerspectiveDsl.g:5340:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
-                    // InternalPerspectiveDsl.g:5341:8: lv_declaredFormalParameters_1_0= ruleJvmFormalParameter
+                    // InternalPerspectiveDsl.g:5441:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    // InternalPerspectiveDsl.g:5442:8: lv_declaredFormalParameters_1_0= ruleJvmFormalParameter
                     {
                     if ( state.backtracking==0 ) {
 
@@ -15006,32 +15304,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:5358:6: (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    // InternalPerspectiveDsl.g:5459:6: (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
                     loop77:
                     do {
                         int alt77=2;
                         int LA77_0 = input.LA(1);
 
-                        if ( (LA77_0==57) ) {
+                        if ( (LA77_0==59) ) {
                             alt77=1;
                         }
 
 
                         switch (alt77) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:5359:7: otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    // InternalPerspectiveDsl.g:5460:7: otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
                     	    {
-                    	    otherlv_2=(Token)match(input,57,FOLLOW_46); if (state.failed) return current;
+                    	    otherlv_2=(Token)match(input,59,FOLLOW_46); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      							newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
                     	      						
                     	    }
-                    	    // InternalPerspectiveDsl.g:5363:7: ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
-                    	    // InternalPerspectiveDsl.g:5364:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    // InternalPerspectiveDsl.g:5464:7: ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    // InternalPerspectiveDsl.g:5465:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
                     	    {
-                    	    // InternalPerspectiveDsl.g:5364:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
-                    	    // InternalPerspectiveDsl.g:5365:9: lv_declaredFormalParameters_3_0= ruleJvmFormalParameter
+                    	    // InternalPerspectiveDsl.g:5465:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    // InternalPerspectiveDsl.g:5466:9: lv_declaredFormalParameters_3_0= ruleJvmFormalParameter
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -15077,13 +15375,13 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5384:5: ( (lv_explicitSyntax_4_0= '|' ) )
-            // InternalPerspectiveDsl.g:5385:6: (lv_explicitSyntax_4_0= '|' )
+            // InternalPerspectiveDsl.g:5485:5: ( (lv_explicitSyntax_4_0= '|' ) )
+            // InternalPerspectiveDsl.g:5486:6: (lv_explicitSyntax_4_0= '|' )
             {
-            // InternalPerspectiveDsl.g:5385:6: (lv_explicitSyntax_4_0= '|' )
-            // InternalPerspectiveDsl.g:5386:7: lv_explicitSyntax_4_0= '|'
+            // InternalPerspectiveDsl.g:5486:6: (lv_explicitSyntax_4_0= '|' )
+            // InternalPerspectiveDsl.g:5487:7: lv_explicitSyntax_4_0= '|'
             {
-            lv_explicitSyntax_4_0=(Token)match(input,96,FOLLOW_33); if (state.failed) return current;
+            lv_explicitSyntax_4_0=(Token)match(input,98,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               							newLeafNode(lv_explicitSyntax_4_0, grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0());
@@ -15109,11 +15407,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5400:3: ( (lv_expression_5_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:5401:4: (lv_expression_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5501:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:5502:4: (lv_expression_5_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:5401:4: (lv_expression_5_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:5402:5: lv_expression_5_0= ruleXExpression
+            // InternalPerspectiveDsl.g:5502:4: (lv_expression_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5503:5: lv_expression_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -15169,7 +15467,7 @@
 
 
     // $ANTLR start "entryRuleXParenthesizedExpression"
-    // InternalPerspectiveDsl.g:5423:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
+    // InternalPerspectiveDsl.g:5524:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
     public final EObject entryRuleXParenthesizedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -15177,8 +15475,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5423:65: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
-            // InternalPerspectiveDsl.g:5424:2: iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF
+            // InternalPerspectiveDsl.g:5524:65: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
+            // InternalPerspectiveDsl.g:5525:2: iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); 
@@ -15209,7 +15507,7 @@
 
 
     // $ANTLR start "ruleXParenthesizedExpression"
-    // InternalPerspectiveDsl.g:5430:1: ruleXParenthesizedExpression returns [EObject current=null] : (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) ;
+    // InternalPerspectiveDsl.g:5531:1: ruleXParenthesizedExpression returns [EObject current=null] : (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) ;
     public final EObject ruleXParenthesizedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -15222,13 +15520,13 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5436:2: ( (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) )
-            // InternalPerspectiveDsl.g:5437:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            // InternalPerspectiveDsl.g:5537:2: ( (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) )
+            // InternalPerspectiveDsl.g:5538:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
             {
-            // InternalPerspectiveDsl.g:5437:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
-            // InternalPerspectiveDsl.g:5438:3: otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')'
+            // InternalPerspectiveDsl.g:5538:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            // InternalPerspectiveDsl.g:5539:3: otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')'
             {
-            otherlv_0=(Token)match(input,56,FOLLOW_33); if (state.failed) return current;
+            otherlv_0=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
@@ -15250,7 +15548,7 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            otherlv_2=(Token)match(input,58,FOLLOW_2); if (state.failed) return current;
+            otherlv_2=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2());
@@ -15281,7 +15579,7 @@
 
 
     // $ANTLR start "entryRuleXIfExpression"
-    // InternalPerspectiveDsl.g:5458:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
+    // InternalPerspectiveDsl.g:5559:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
     public final EObject entryRuleXIfExpression() throws RecognitionException {
         EObject current = null;
 
@@ -15289,8 +15587,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5458:54: (iv_ruleXIfExpression= ruleXIfExpression EOF )
-            // InternalPerspectiveDsl.g:5459:2: iv_ruleXIfExpression= ruleXIfExpression EOF
+            // InternalPerspectiveDsl.g:5559:54: (iv_ruleXIfExpression= ruleXIfExpression EOF )
+            // InternalPerspectiveDsl.g:5560:2: iv_ruleXIfExpression= ruleXIfExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXIfExpressionRule()); 
@@ -15321,7 +15619,7 @@
 
 
     // $ANTLR start "ruleXIfExpression"
-    // InternalPerspectiveDsl.g:5465: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:5566: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;
 
@@ -15340,14 +15638,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5471: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:5472: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:5572: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:5573: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:5472: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:5473: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:5573: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:5574: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:5473:3: ()
-            // InternalPerspectiveDsl.g:5474:4: 
+            // InternalPerspectiveDsl.g:5574:3: ()
+            // InternalPerspectiveDsl.g:5575:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -15359,23 +15657,23 @@
 
             }
 
-            otherlv_1=(Token)match(input,97,FOLLOW_72); if (state.failed) return current;
+            otherlv_1=(Token)match(input,99,FOLLOW_72); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,56,FOLLOW_33); if (state.failed) return current;
+            otherlv_2=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:5488:3: ( (lv_if_3_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:5489:4: (lv_if_3_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5589:3: ( (lv_if_3_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:5590:4: (lv_if_3_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:5489:4: (lv_if_3_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:5490:5: lv_if_3_0= ruleXExpression
+            // InternalPerspectiveDsl.g:5590:4: (lv_if_3_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5591:5: lv_if_3_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -15406,17 +15704,17 @@
 
             }
 
-            otherlv_4=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
+            otherlv_4=(Token)match(input,60,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
               		
             }
-            // InternalPerspectiveDsl.g:5511:3: ( (lv_then_5_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:5512:4: (lv_then_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5612:3: ( (lv_then_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:5613:4: (lv_then_5_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:5512:4: (lv_then_5_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:5513:5: lv_then_5_0= ruleXExpression
+            // InternalPerspectiveDsl.g:5613:4: (lv_then_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5614:5: lv_then_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -15447,11 +15745,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5530:3: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
+            // InternalPerspectiveDsl.g:5631:3: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
             int alt79=2;
             int LA79_0 = input.LA(1);
 
-            if ( (LA79_0==98) ) {
+            if ( (LA79_0==100) ) {
                 int LA79_1 = input.LA(2);
 
                 if ( (synpred31_InternalPerspectiveDsl()) ) {
@@ -15460,12 +15758,12 @@
             }
             switch (alt79) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5531:4: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5632:4: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) )
                     {
-                    // InternalPerspectiveDsl.g:5531:4: ( ( 'else' )=>otherlv_6= 'else' )
-                    // InternalPerspectiveDsl.g:5532:5: ( 'else' )=>otherlv_6= 'else'
+                    // InternalPerspectiveDsl.g:5632:4: ( ( 'else' )=>otherlv_6= 'else' )
+                    // InternalPerspectiveDsl.g:5633:5: ( 'else' )=>otherlv_6= 'else'
                     {
-                    otherlv_6=(Token)match(input,98,FOLLOW_33); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,100,FOLLOW_33); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
@@ -15474,11 +15772,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:5538:4: ( (lv_else_7_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:5539:5: (lv_else_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5639:4: ( (lv_else_7_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5640:5: (lv_else_7_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:5539:5: (lv_else_7_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:5540:6: lv_else_7_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:5640:5: (lv_else_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5641:6: lv_else_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -15540,7 +15838,7 @@
 
 
     // $ANTLR start "entryRuleXSwitchExpression"
-    // InternalPerspectiveDsl.g:5562:1: entryRuleXSwitchExpression returns [EObject current=null] : iv_ruleXSwitchExpression= ruleXSwitchExpression EOF ;
+    // InternalPerspectiveDsl.g:5663:1: entryRuleXSwitchExpression returns [EObject current=null] : iv_ruleXSwitchExpression= ruleXSwitchExpression EOF ;
     public final EObject entryRuleXSwitchExpression() throws RecognitionException {
         EObject current = null;
 
@@ -15548,8 +15846,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5562:58: (iv_ruleXSwitchExpression= ruleXSwitchExpression EOF )
-            // InternalPerspectiveDsl.g:5563:2: iv_ruleXSwitchExpression= ruleXSwitchExpression EOF
+            // InternalPerspectiveDsl.g:5663:58: (iv_ruleXSwitchExpression= ruleXSwitchExpression EOF )
+            // InternalPerspectiveDsl.g:5664:2: iv_ruleXSwitchExpression= ruleXSwitchExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXSwitchExpressionRule()); 
@@ -15580,7 +15878,7 @@
 
 
     // $ANTLR start "ruleXSwitchExpression"
-    // InternalPerspectiveDsl.g:5569: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:5670: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;
 
@@ -15610,14 +15908,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5575: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:5576: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:5676: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:5677: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:5576: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:5577: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:5677: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:5678: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:5577:3: ()
-            // InternalPerspectiveDsl.g:5578:4: 
+            // InternalPerspectiveDsl.g:5678:3: ()
+            // InternalPerspectiveDsl.g:5679:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -15629,39 +15927,39 @@
 
             }
 
-            otherlv_1=(Token)match(input,99,FOLLOW_74); if (state.failed) return current;
+            otherlv_1=(Token)match(input,101,FOLLOW_74); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:5588: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:5689:3: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )
             int alt81=2;
             alt81 = dfa81.predict(input);
             switch (alt81) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5589:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    // InternalPerspectiveDsl.g:5690:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
                     {
-                    // InternalPerspectiveDsl.g:5589:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
-                    // InternalPerspectiveDsl.g:5590:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')'
+                    // InternalPerspectiveDsl.g:5690:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    // InternalPerspectiveDsl.g:5691:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')'
                     {
-                    // InternalPerspectiveDsl.g:5590:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
-                    // InternalPerspectiveDsl.g:5591:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    // InternalPerspectiveDsl.g:5691:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+                    // InternalPerspectiveDsl.g:5692:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
                     {
-                    // InternalPerspectiveDsl.g:5601:6: (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
-                    // InternalPerspectiveDsl.g:5602:7: otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+                    // InternalPerspectiveDsl.g:5702:6: (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    // InternalPerspectiveDsl.g:5703:7: otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
                     {
-                    otherlv_2=(Token)match(input,56,FOLLOW_46); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,58,FOLLOW_46); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(otherlv_2, grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0());
                       						
                     }
-                    // InternalPerspectiveDsl.g:5606:7: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
-                    // InternalPerspectiveDsl.g:5607:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    // InternalPerspectiveDsl.g:5707:7: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+                    // InternalPerspectiveDsl.g:5708:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
                     {
-                    // InternalPerspectiveDsl.g:5607:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
-                    // InternalPerspectiveDsl.g:5608:9: lv_declaredParam_3_0= ruleJvmFormalParameter
+                    // InternalPerspectiveDsl.g:5708:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    // InternalPerspectiveDsl.g:5709:9: lv_declaredParam_3_0= ruleJvmFormalParameter
                     {
                     if ( state.backtracking==0 ) {
 
@@ -15692,7 +15990,7 @@
 
                     }
 
-                    otherlv_4=(Token)match(input,100,FOLLOW_33); if (state.failed) return current;
+                    otherlv_4=(Token)match(input,102,FOLLOW_33); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(otherlv_4, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2());
@@ -15704,11 +16002,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:5631:5: ( (lv_switch_5_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:5632:6: (lv_switch_5_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5732:5: ( (lv_switch_5_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5733:6: (lv_switch_5_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:5632:6: (lv_switch_5_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:5633:7: lv_switch_5_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:5733:6: (lv_switch_5_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5734:7: lv_switch_5_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -15739,7 +16037,7 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,58,FOLLOW_63); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,60,FOLLOW_63); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_6, grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2());
@@ -15752,26 +16050,26 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:5656:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    // InternalPerspectiveDsl.g:5757:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
                     {
-                    // InternalPerspectiveDsl.g:5656:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
-                    // InternalPerspectiveDsl.g:5657:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5757:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    // InternalPerspectiveDsl.g:5758:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) )
                     {
-                    // InternalPerspectiveDsl.g:5657:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?
+                    // InternalPerspectiveDsl.g:5758:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?
                     int alt80=2;
                     alt80 = dfa80.predict(input);
                     switch (alt80) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:5658:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            // InternalPerspectiveDsl.g:5759:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
                             {
-                            // InternalPerspectiveDsl.g:5667:6: ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
-                            // InternalPerspectiveDsl.g:5668:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':'
+                            // InternalPerspectiveDsl.g:5768:6: ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            // InternalPerspectiveDsl.g:5769:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':'
                             {
-                            // InternalPerspectiveDsl.g:5668:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) )
-                            // InternalPerspectiveDsl.g:5669:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            // InternalPerspectiveDsl.g:5769:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) )
+                            // InternalPerspectiveDsl.g:5770:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
                             {
-                            // InternalPerspectiveDsl.g:5669:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
-                            // InternalPerspectiveDsl.g:5670:9: lv_declaredParam_7_0= ruleJvmFormalParameter
+                            // InternalPerspectiveDsl.g:5770:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            // InternalPerspectiveDsl.g:5771:9: lv_declaredParam_7_0= ruleJvmFormalParameter
                             {
                             if ( state.backtracking==0 ) {
 
@@ -15802,7 +16100,7 @@
 
                             }
 
-                            otherlv_8=(Token)match(input,100,FOLLOW_33); if (state.failed) return current;
+                            otherlv_8=(Token)match(input,102,FOLLOW_33); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1());
@@ -15817,11 +16115,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:5693:5: ( (lv_switch_9_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:5694:6: (lv_switch_9_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5794:5: ( (lv_switch_9_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5795:6: (lv_switch_9_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:5694:6: (lv_switch_9_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:5695:7: lv_switch_9_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:5795:6: (lv_switch_9_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5796:7: lv_switch_9_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -15867,23 +16165,23 @@
               			newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3());
               		
             }
-            // InternalPerspectiveDsl.g:5718:3: ( (lv_cases_11_0= ruleXCasePart ) )*
+            // InternalPerspectiveDsl.g:5819:3: ( (lv_cases_11_0= ruleXCasePart ) )*
             loop82:
             do {
                 int alt82=2;
                 int LA82_0 = input.LA(1);
 
-                if ( (LA82_0==RULE_ID||(LA82_0>=56 && LA82_0<=57)||LA82_0==81||LA82_0==100||LA82_0==102) ) {
+                if ( (LA82_0==RULE_ID||(LA82_0>=58 && LA82_0<=59)||LA82_0==83||LA82_0==102||LA82_0==104) ) {
                     alt82=1;
                 }
 
 
                 switch (alt82) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:5719:4: (lv_cases_11_0= ruleXCasePart )
+            	    // InternalPerspectiveDsl.g:5820:4: (lv_cases_11_0= ruleXCasePart )
             	    {
-            	    // InternalPerspectiveDsl.g:5719:4: (lv_cases_11_0= ruleXCasePart )
-            	    // InternalPerspectiveDsl.g:5720:5: lv_cases_11_0= ruleXCasePart
+            	    // InternalPerspectiveDsl.g:5820:4: (lv_cases_11_0= ruleXCasePart )
+            	    // InternalPerspectiveDsl.g:5821:5: lv_cases_11_0= ruleXCasePart
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -15920,34 +16218,34 @@
                 }
             } while (true);
 
-            // InternalPerspectiveDsl.g:5737:3: (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )?
+            // InternalPerspectiveDsl.g:5838:3: (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )?
             int alt83=2;
             int LA83_0 = input.LA(1);
 
-            if ( (LA83_0==101) ) {
+            if ( (LA83_0==103) ) {
                 alt83=1;
             }
             switch (alt83) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5738:4: otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5839:4: otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) )
                     {
-                    otherlv_12=(Token)match(input,101,FOLLOW_75); if (state.failed) return current;
+                    otherlv_12=(Token)match(input,103,FOLLOW_75); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_12, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0());
                       			
                     }
-                    otherlv_13=(Token)match(input,100,FOLLOW_33); if (state.failed) return current;
+                    otherlv_13=(Token)match(input,102,FOLLOW_33); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_13, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1());
                       			
                     }
-                    // InternalPerspectiveDsl.g:5746:4: ( (lv_default_14_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:5747:5: (lv_default_14_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5847:4: ( (lv_default_14_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5848:5: (lv_default_14_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:5747:5: (lv_default_14_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:5748:6: lv_default_14_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:5848:5: (lv_default_14_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5849:6: lv_default_14_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16015,7 +16313,7 @@
 
 
     // $ANTLR start "entryRuleXCasePart"
-    // InternalPerspectiveDsl.g:5774:1: entryRuleXCasePart returns [EObject current=null] : iv_ruleXCasePart= ruleXCasePart EOF ;
+    // InternalPerspectiveDsl.g:5875:1: entryRuleXCasePart returns [EObject current=null] : iv_ruleXCasePart= ruleXCasePart EOF ;
     public final EObject entryRuleXCasePart() throws RecognitionException {
         EObject current = null;
 
@@ -16023,8 +16321,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5774:50: (iv_ruleXCasePart= ruleXCasePart EOF )
-            // InternalPerspectiveDsl.g:5775:2: iv_ruleXCasePart= ruleXCasePart EOF
+            // InternalPerspectiveDsl.g:5875:50: (iv_ruleXCasePart= ruleXCasePart EOF )
+            // InternalPerspectiveDsl.g:5876:2: iv_ruleXCasePart= ruleXCasePart EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCasePartRule()); 
@@ -16055,7 +16353,7 @@
 
 
     // $ANTLR start "ruleXCasePart"
-    // InternalPerspectiveDsl.g:5781: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:5882: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;
 
@@ -16073,14 +16371,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5787: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:5788: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:5888: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:5889: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:5788: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:5789: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:5889: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:5890: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:5789:3: ()
-            // InternalPerspectiveDsl.g:5790:4: 
+            // InternalPerspectiveDsl.g:5890:3: ()
+            // InternalPerspectiveDsl.g:5891:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -16092,19 +16390,19 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5796:3: ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )?
+            // InternalPerspectiveDsl.g:5897:3: ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )?
             int alt84=2;
             int LA84_0 = input.LA(1);
 
-            if ( (LA84_0==RULE_ID||LA84_0==56||LA84_0==81) ) {
+            if ( (LA84_0==RULE_ID||LA84_0==58||LA84_0==83) ) {
                 alt84=1;
             }
             switch (alt84) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5797:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:5898:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:5797:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
-                    // InternalPerspectiveDsl.g:5798:5: lv_typeGuard_1_0= ruleJvmTypeReference
+                    // InternalPerspectiveDsl.g:5898:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:5899:5: lv_typeGuard_1_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16138,28 +16436,28 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5815:3: (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )?
+            // InternalPerspectiveDsl.g:5916:3: (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )?
             int alt85=2;
             int LA85_0 = input.LA(1);
 
-            if ( (LA85_0==102) ) {
+            if ( (LA85_0==104) ) {
                 alt85=1;
             }
             switch (alt85) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5816:4: otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5917:4: otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) )
                     {
-                    otherlv_2=(Token)match(input,102,FOLLOW_33); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,104,FOLLOW_33); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_2, grammarAccess.getXCasePartAccess().getCaseKeyword_2_0());
                       			
                     }
-                    // InternalPerspectiveDsl.g:5820:4: ( (lv_case_3_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:5821:5: (lv_case_3_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5921:4: ( (lv_case_3_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5922:5: (lv_case_3_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:5821:5: (lv_case_3_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:5822:6: lv_case_3_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:5922:5: (lv_case_3_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5923:6: lv_case_3_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16196,14 +16494,14 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5840:3: ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
+            // InternalPerspectiveDsl.g:5941:3: ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
             int alt86=2;
             int LA86_0 = input.LA(1);
 
-            if ( (LA86_0==100) ) {
+            if ( (LA86_0==102) ) {
                 alt86=1;
             }
-            else if ( (LA86_0==57) ) {
+            else if ( (LA86_0==59) ) {
                 alt86=2;
             }
             else {
@@ -16215,22 +16513,22 @@
             }
             switch (alt86) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5841:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    // InternalPerspectiveDsl.g:5942:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
                     {
-                    // InternalPerspectiveDsl.g:5841:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
-                    // InternalPerspectiveDsl.g:5842:5: otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5942:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    // InternalPerspectiveDsl.g:5943:5: otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) )
                     {
-                    otherlv_4=(Token)match(input,100,FOLLOW_33); if (state.failed) return current;
+                    otherlv_4=(Token)match(input,102,FOLLOW_33); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_4, grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0());
                       				
                     }
-                    // InternalPerspectiveDsl.g:5846:5: ( (lv_then_5_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:5847:6: (lv_then_5_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5947:5: ( (lv_then_5_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5948:6: (lv_then_5_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:5847:6: (lv_then_5_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:5848:7: lv_then_5_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:5948:6: (lv_then_5_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5949:7: lv_then_5_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16268,15 +16566,15 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:5867:4: ( (lv_fallThrough_6_0= ',' ) )
+                    // InternalPerspectiveDsl.g:5968:4: ( (lv_fallThrough_6_0= ',' ) )
                     {
-                    // InternalPerspectiveDsl.g:5867:4: ( (lv_fallThrough_6_0= ',' ) )
-                    // InternalPerspectiveDsl.g:5868:5: (lv_fallThrough_6_0= ',' )
+                    // InternalPerspectiveDsl.g:5968:4: ( (lv_fallThrough_6_0= ',' ) )
+                    // InternalPerspectiveDsl.g:5969:5: (lv_fallThrough_6_0= ',' )
                     {
-                    // InternalPerspectiveDsl.g:5868:5: (lv_fallThrough_6_0= ',' )
-                    // InternalPerspectiveDsl.g:5869:6: lv_fallThrough_6_0= ','
+                    // InternalPerspectiveDsl.g:5969:5: (lv_fallThrough_6_0= ',' )
+                    // InternalPerspectiveDsl.g:5970:6: lv_fallThrough_6_0= ','
                     {
-                    lv_fallThrough_6_0=(Token)match(input,57,FOLLOW_2); if (state.failed) return current;
+                    lv_fallThrough_6_0=(Token)match(input,59,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_fallThrough_6_0, grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0());
@@ -16327,7 +16625,7 @@
 
 
     // $ANTLR start "entryRuleXForLoopExpression"
-    // InternalPerspectiveDsl.g:5886:1: entryRuleXForLoopExpression returns [EObject current=null] : iv_ruleXForLoopExpression= ruleXForLoopExpression EOF ;
+    // InternalPerspectiveDsl.g:5987:1: entryRuleXForLoopExpression returns [EObject current=null] : iv_ruleXForLoopExpression= ruleXForLoopExpression EOF ;
     public final EObject entryRuleXForLoopExpression() throws RecognitionException {
         EObject current = null;
 
@@ -16335,8 +16633,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5886:59: (iv_ruleXForLoopExpression= ruleXForLoopExpression EOF )
-            // InternalPerspectiveDsl.g:5887:2: iv_ruleXForLoopExpression= ruleXForLoopExpression EOF
+            // InternalPerspectiveDsl.g:5987:59: (iv_ruleXForLoopExpression= ruleXForLoopExpression EOF )
+            // InternalPerspectiveDsl.g:5988:2: iv_ruleXForLoopExpression= ruleXForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXForLoopExpressionRule()); 
@@ -16367,7 +16665,7 @@
 
 
     // $ANTLR start "ruleXForLoopExpression"
-    // InternalPerspectiveDsl.g:5893: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:5994: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;
 
@@ -16386,20 +16684,20 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5899: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:5900: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:6000: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:6001: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:5900: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:5901: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:6001: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:6002: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:5901:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
-            // InternalPerspectiveDsl.g:5902:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            // InternalPerspectiveDsl.g:6002:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+            // InternalPerspectiveDsl.g:6003:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
             {
-            // InternalPerspectiveDsl.g:5915:4: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
-            // InternalPerspectiveDsl.g:5916:5: () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+            // InternalPerspectiveDsl.g:6016:4: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            // InternalPerspectiveDsl.g:6017:5: () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
             {
-            // InternalPerspectiveDsl.g:5916:5: ()
-            // InternalPerspectiveDsl.g:5917:6: 
+            // InternalPerspectiveDsl.g:6017:5: ()
+            // InternalPerspectiveDsl.g:6018:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -16411,23 +16709,23 @@
 
             }
 
-            otherlv_1=(Token)match(input,103,FOLLOW_72); if (state.failed) return current;
+            otherlv_1=(Token)match(input,105,FOLLOW_72); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1());
               				
             }
-            otherlv_2=(Token)match(input,56,FOLLOW_46); if (state.failed) return current;
+            otherlv_2=(Token)match(input,58,FOLLOW_46); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2());
               				
             }
-            // InternalPerspectiveDsl.g:5931:5: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:5932:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:6032:5: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:6033:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:5932:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:5933:7: lv_declaredParam_3_0= ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:6033:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:6034:7: lv_declaredParam_3_0= ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
 
@@ -16458,7 +16756,7 @@
 
             }
 
-            otherlv_4=(Token)match(input,100,FOLLOW_33); if (state.failed) return current;
+            otherlv_4=(Token)match(input,102,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4());
@@ -16470,11 +16768,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5956:3: ( (lv_forExpression_5_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:5957:4: (lv_forExpression_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6057:3: ( (lv_forExpression_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6058:4: (lv_forExpression_5_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:5957:4: (lv_forExpression_5_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:5958:5: lv_forExpression_5_0= ruleXExpression
+            // InternalPerspectiveDsl.g:6058:4: (lv_forExpression_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6059:5: lv_forExpression_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -16505,17 +16803,17 @@
 
             }
 
-            otherlv_6=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
+            otherlv_6=(Token)match(input,60,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:5979:3: ( (lv_eachExpression_7_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:5980:4: (lv_eachExpression_7_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6080:3: ( (lv_eachExpression_7_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6081:4: (lv_eachExpression_7_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:5980:4: (lv_eachExpression_7_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:5981:5: lv_eachExpression_7_0= ruleXExpression
+            // InternalPerspectiveDsl.g:6081:4: (lv_eachExpression_7_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6082:5: lv_eachExpression_7_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -16571,7 +16869,7 @@
 
 
     // $ANTLR start "entryRuleXBasicForLoopExpression"
-    // InternalPerspectiveDsl.g:6002:1: entryRuleXBasicForLoopExpression returns [EObject current=null] : iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF ;
+    // InternalPerspectiveDsl.g:6103:1: entryRuleXBasicForLoopExpression returns [EObject current=null] : iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF ;
     public final EObject entryRuleXBasicForLoopExpression() throws RecognitionException {
         EObject current = null;
 
@@ -16579,8 +16877,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6002:64: (iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF )
-            // InternalPerspectiveDsl.g:6003:2: iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF
+            // InternalPerspectiveDsl.g:6103:64: (iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF )
+            // InternalPerspectiveDsl.g:6104:2: iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXBasicForLoopExpressionRule()); 
@@ -16611,7 +16909,7 @@
 
 
     // $ANTLR start "ruleXBasicForLoopExpression"
-    // InternalPerspectiveDsl.g:6009: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:6110: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;
 
@@ -16639,14 +16937,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6015: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:6016: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:6116: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:6117: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:6016: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:6017: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:6117: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:6118: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:6017:3: ()
-            // InternalPerspectiveDsl.g:6018:4: 
+            // InternalPerspectiveDsl.g:6118:3: ()
+            // InternalPerspectiveDsl.g:6119:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -16658,34 +16956,34 @@
 
             }
 
-            otherlv_1=(Token)match(input,103,FOLLOW_72); if (state.failed) return current;
+            otherlv_1=(Token)match(input,105,FOLLOW_72); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,56,FOLLOW_80); if (state.failed) return current;
+            otherlv_2=(Token)match(input,58,FOLLOW_80); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:6032:3: ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )?
+            // InternalPerspectiveDsl.g:6133:3: ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )?
             int alt88=2;
             int LA88_0 = input.LA(1);
 
-            if ( ((LA88_0>=RULE_ID && LA88_0<=RULE_DECIMAL)||LA88_0==14||(LA88_0>=49 && LA88_0<=51)||LA88_0==56||(LA88_0>=60 && LA88_0<=61)||LA88_0==68||(LA88_0>=84 && LA88_0<=85)||LA88_0==89||LA88_0==97||LA88_0==99||(LA88_0>=103 && LA88_0<=117)||LA88_0==119) ) {
+            if ( ((LA88_0>=RULE_ID && LA88_0<=RULE_DECIMAL)||LA88_0==14||(LA88_0>=51 && LA88_0<=53)||LA88_0==58||(LA88_0>=62 && LA88_0<=63)||LA88_0==70||(LA88_0>=86 && LA88_0<=87)||LA88_0==91||LA88_0==99||LA88_0==101||(LA88_0>=105 && LA88_0<=119)||LA88_0==121) ) {
                 alt88=1;
             }
             switch (alt88) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6033:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    // InternalPerspectiveDsl.g:6134:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
                     {
-                    // InternalPerspectiveDsl.g:6033:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) )
-                    // InternalPerspectiveDsl.g:6034:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    // InternalPerspectiveDsl.g:6134:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) )
+                    // InternalPerspectiveDsl.g:6135:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
                     {
-                    // InternalPerspectiveDsl.g:6034:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
-                    // InternalPerspectiveDsl.g:6035:6: lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration
+                    // InternalPerspectiveDsl.g:6135:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    // InternalPerspectiveDsl.g:6136:6: lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16716,32 +17014,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:6052:4: (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    // InternalPerspectiveDsl.g:6153:4: (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
                     loop87:
                     do {
                         int alt87=2;
                         int LA87_0 = input.LA(1);
 
-                        if ( (LA87_0==57) ) {
+                        if ( (LA87_0==59) ) {
                             alt87=1;
                         }
 
 
                         switch (alt87) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:6053:5: otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    // InternalPerspectiveDsl.g:6154:5: otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
                     	    {
-                    	    otherlv_4=(Token)match(input,57,FOLLOW_82); if (state.failed) return current;
+                    	    otherlv_4=(Token)match(input,59,FOLLOW_82); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_4, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0());
                     	      				
                     	    }
-                    	    // InternalPerspectiveDsl.g:6057:5: ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
-                    	    // InternalPerspectiveDsl.g:6058:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    // InternalPerspectiveDsl.g:6158:5: ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    // InternalPerspectiveDsl.g:6159:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
                     	    {
-                    	    // InternalPerspectiveDsl.g:6058:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
-                    	    // InternalPerspectiveDsl.g:6059:7: lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration
+                    	    // InternalPerspectiveDsl.g:6159:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    // InternalPerspectiveDsl.g:6160:7: lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -16787,25 +17085,25 @@
 
             }
 
-            otherlv_6=(Token)match(input,54,FOLLOW_83); if (state.failed) return current;
+            otherlv_6=(Token)match(input,56,FOLLOW_83); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4());
               		
             }
-            // InternalPerspectiveDsl.g:6082:3: ( (lv_expression_7_0= ruleXExpression ) )?
+            // InternalPerspectiveDsl.g:6183:3: ( (lv_expression_7_0= ruleXExpression ) )?
             int alt89=2;
             int LA89_0 = input.LA(1);
 
-            if ( ((LA89_0>=RULE_ID && LA89_0<=RULE_DECIMAL)||LA89_0==14||(LA89_0>=49 && LA89_0<=51)||LA89_0==56||(LA89_0>=60 && LA89_0<=61)||LA89_0==68||(LA89_0>=84 && LA89_0<=85)||LA89_0==89||LA89_0==97||LA89_0==99||(LA89_0>=103 && LA89_0<=105)||(LA89_0>=108 && LA89_0<=117)||LA89_0==119) ) {
+            if ( ((LA89_0>=RULE_ID && LA89_0<=RULE_DECIMAL)||LA89_0==14||(LA89_0>=51 && LA89_0<=53)||LA89_0==58||(LA89_0>=62 && LA89_0<=63)||LA89_0==70||(LA89_0>=86 && LA89_0<=87)||LA89_0==91||LA89_0==99||LA89_0==101||(LA89_0>=105 && LA89_0<=107)||(LA89_0>=110 && LA89_0<=119)||LA89_0==121) ) {
                 alt89=1;
             }
             switch (alt89) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6083:4: (lv_expression_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6184:4: (lv_expression_7_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:6083:4: (lv_expression_7_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:6084:5: lv_expression_7_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:6184:4: (lv_expression_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6185:5: lv_expression_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16839,28 +17137,28 @@
 
             }
 
-            otherlv_8=(Token)match(input,54,FOLLOW_29); if (state.failed) return current;
+            otherlv_8=(Token)match(input,56,FOLLOW_29); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_8, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6());
               		
             }
-            // InternalPerspectiveDsl.g:6105:3: ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )?
+            // InternalPerspectiveDsl.g:6206:3: ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )?
             int alt91=2;
             int LA91_0 = input.LA(1);
 
-            if ( ((LA91_0>=RULE_ID && LA91_0<=RULE_DECIMAL)||LA91_0==14||(LA91_0>=49 && LA91_0<=51)||LA91_0==56||(LA91_0>=60 && LA91_0<=61)||LA91_0==68||(LA91_0>=84 && LA91_0<=85)||LA91_0==89||LA91_0==97||LA91_0==99||(LA91_0>=103 && LA91_0<=105)||(LA91_0>=108 && LA91_0<=117)||LA91_0==119) ) {
+            if ( ((LA91_0>=RULE_ID && LA91_0<=RULE_DECIMAL)||LA91_0==14||(LA91_0>=51 && LA91_0<=53)||LA91_0==58||(LA91_0>=62 && LA91_0<=63)||LA91_0==70||(LA91_0>=86 && LA91_0<=87)||LA91_0==91||LA91_0==99||LA91_0==101||(LA91_0>=105 && LA91_0<=107)||(LA91_0>=110 && LA91_0<=119)||LA91_0==121) ) {
                 alt91=1;
             }
             switch (alt91) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6106:4: ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    // InternalPerspectiveDsl.g:6207:4: ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
                     {
-                    // InternalPerspectiveDsl.g:6106:4: ( (lv_updateExpressions_9_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:6107:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6207:4: ( (lv_updateExpressions_9_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6208:5: (lv_updateExpressions_9_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:6107:5: (lv_updateExpressions_9_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:6108:6: lv_updateExpressions_9_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:6208:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6209:6: lv_updateExpressions_9_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16891,32 +17189,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:6125:4: (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    // InternalPerspectiveDsl.g:6226:4: (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
                     loop90:
                     do {
                         int alt90=2;
                         int LA90_0 = input.LA(1);
 
-                        if ( (LA90_0==57) ) {
+                        if ( (LA90_0==59) ) {
                             alt90=1;
                         }
 
 
                         switch (alt90) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:6126:5: otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    // InternalPerspectiveDsl.g:6227:5: otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) )
                     	    {
-                    	    otherlv_10=(Token)match(input,57,FOLLOW_33); if (state.failed) return current;
+                    	    otherlv_10=(Token)match(input,59,FOLLOW_33); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_10, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0());
                     	      				
                     	    }
-                    	    // InternalPerspectiveDsl.g:6130:5: ( (lv_updateExpressions_11_0= ruleXExpression ) )
-                    	    // InternalPerspectiveDsl.g:6131:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    // InternalPerspectiveDsl.g:6231:5: ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    // InternalPerspectiveDsl.g:6232:6: (lv_updateExpressions_11_0= ruleXExpression )
                     	    {
-                    	    // InternalPerspectiveDsl.g:6131:6: (lv_updateExpressions_11_0= ruleXExpression )
-                    	    // InternalPerspectiveDsl.g:6132:7: lv_updateExpressions_11_0= ruleXExpression
+                    	    // InternalPerspectiveDsl.g:6232:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    // InternalPerspectiveDsl.g:6233:7: lv_updateExpressions_11_0= ruleXExpression
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -16962,17 +17260,17 @@
 
             }
 
-            otherlv_12=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
+            otherlv_12=(Token)match(input,60,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_12, grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8());
               		
             }
-            // InternalPerspectiveDsl.g:6155:3: ( (lv_eachExpression_13_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:6156:4: (lv_eachExpression_13_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6256:3: ( (lv_eachExpression_13_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6257:4: (lv_eachExpression_13_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:6156:4: (lv_eachExpression_13_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:6157:5: lv_eachExpression_13_0= ruleXExpression
+            // InternalPerspectiveDsl.g:6257:4: (lv_eachExpression_13_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6258:5: lv_eachExpression_13_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -17028,7 +17326,7 @@
 
 
     // $ANTLR start "entryRuleXWhileExpression"
-    // InternalPerspectiveDsl.g:6178:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
+    // InternalPerspectiveDsl.g:6279:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
     public final EObject entryRuleXWhileExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17036,8 +17334,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6178:57: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
-            // InternalPerspectiveDsl.g:6179:2: iv_ruleXWhileExpression= ruleXWhileExpression EOF
+            // InternalPerspectiveDsl.g:6279:57: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
+            // InternalPerspectiveDsl.g:6280:2: iv_ruleXWhileExpression= ruleXWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXWhileExpressionRule()); 
@@ -17068,7 +17366,7 @@
 
 
     // $ANTLR start "ruleXWhileExpression"
-    // InternalPerspectiveDsl.g:6185: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:6286: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;
 
@@ -17084,14 +17382,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6191:2: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) )
-            // InternalPerspectiveDsl.g:6192:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:6292:2: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:6293:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
             {
-            // InternalPerspectiveDsl.g:6192:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
-            // InternalPerspectiveDsl.g:6193:3: () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6293:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:6294:3: () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) )
             {
-            // InternalPerspectiveDsl.g:6193:3: ()
-            // InternalPerspectiveDsl.g:6194:4: 
+            // InternalPerspectiveDsl.g:6294:3: ()
+            // InternalPerspectiveDsl.g:6295:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17103,23 +17401,23 @@
 
             }
 
-            otherlv_1=(Token)match(input,104,FOLLOW_72); if (state.failed) return current;
+            otherlv_1=(Token)match(input,106,FOLLOW_72); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,56,FOLLOW_33); if (state.failed) return current;
+            otherlv_2=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:6208:3: ( (lv_predicate_3_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:6209:4: (lv_predicate_3_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6309:3: ( (lv_predicate_3_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6310:4: (lv_predicate_3_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:6209:4: (lv_predicate_3_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:6210:5: lv_predicate_3_0= ruleXExpression
+            // InternalPerspectiveDsl.g:6310:4: (lv_predicate_3_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6311:5: lv_predicate_3_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -17150,17 +17448,17 @@
 
             }
 
-            otherlv_4=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
+            otherlv_4=(Token)match(input,60,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
               		
             }
-            // InternalPerspectiveDsl.g:6231:3: ( (lv_body_5_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:6232:4: (lv_body_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6332:3: ( (lv_body_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6333:4: (lv_body_5_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:6232:4: (lv_body_5_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:6233:5: lv_body_5_0= ruleXExpression
+            // InternalPerspectiveDsl.g:6333:4: (lv_body_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6334:5: lv_body_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -17216,7 +17514,7 @@
 
 
     // $ANTLR start "entryRuleXDoWhileExpression"
-    // InternalPerspectiveDsl.g:6254:1: entryRuleXDoWhileExpression returns [EObject current=null] : iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF ;
+    // InternalPerspectiveDsl.g:6355:1: entryRuleXDoWhileExpression returns [EObject current=null] : iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF ;
     public final EObject entryRuleXDoWhileExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17224,8 +17522,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6254:59: (iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF )
-            // InternalPerspectiveDsl.g:6255:2: iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF
+            // InternalPerspectiveDsl.g:6355:59: (iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF )
+            // InternalPerspectiveDsl.g:6356:2: iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXDoWhileExpressionRule()); 
@@ -17256,7 +17554,7 @@
 
 
     // $ANTLR start "ruleXDoWhileExpression"
-    // InternalPerspectiveDsl.g:6261: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:6362: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;
 
@@ -17273,14 +17571,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6267:2: ( ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) )
-            // InternalPerspectiveDsl.g:6268:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            // InternalPerspectiveDsl.g:6368:2: ( ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) )
+            // InternalPerspectiveDsl.g:6369:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
             {
-            // InternalPerspectiveDsl.g:6268:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
-            // InternalPerspectiveDsl.g:6269:3: () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')'
+            // InternalPerspectiveDsl.g:6369:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            // InternalPerspectiveDsl.g:6370:3: () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')'
             {
-            // InternalPerspectiveDsl.g:6269:3: ()
-            // InternalPerspectiveDsl.g:6270:4: 
+            // InternalPerspectiveDsl.g:6370:3: ()
+            // InternalPerspectiveDsl.g:6371:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17292,17 +17590,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,105,FOLLOW_33); if (state.failed) return current;
+            otherlv_1=(Token)match(input,107,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:6280:3: ( (lv_body_2_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:6281:4: (lv_body_2_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6381:3: ( (lv_body_2_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6382:4: (lv_body_2_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:6281:4: (lv_body_2_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:6282:5: lv_body_2_0= ruleXExpression
+            // InternalPerspectiveDsl.g:6382:4: (lv_body_2_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6383:5: lv_body_2_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -17333,23 +17631,23 @@
 
             }
 
-            otherlv_3=(Token)match(input,104,FOLLOW_72); if (state.failed) return current;
+            otherlv_3=(Token)match(input,106,FOLLOW_72); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
               		
             }
-            otherlv_4=(Token)match(input,56,FOLLOW_33); if (state.failed) return current;
+            otherlv_4=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
               		
             }
-            // InternalPerspectiveDsl.g:6307:3: ( (lv_predicate_5_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:6308:4: (lv_predicate_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6408:3: ( (lv_predicate_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6409:4: (lv_predicate_5_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:6308:4: (lv_predicate_5_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:6309:5: lv_predicate_5_0= ruleXExpression
+            // InternalPerspectiveDsl.g:6409:4: (lv_predicate_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6410:5: lv_predicate_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -17380,7 +17678,7 @@
 
             }
 
-            otherlv_6=(Token)match(input,58,FOLLOW_2); if (state.failed) return current;
+            otherlv_6=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6());
@@ -17411,7 +17709,7 @@
 
 
     // $ANTLR start "entryRuleXBlockExpression"
-    // InternalPerspectiveDsl.g:6334:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
+    // InternalPerspectiveDsl.g:6435:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
     public final EObject entryRuleXBlockExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17419,8 +17717,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6334:57: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
-            // InternalPerspectiveDsl.g:6335:2: iv_ruleXBlockExpression= ruleXBlockExpression EOF
+            // InternalPerspectiveDsl.g:6435:57: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
+            // InternalPerspectiveDsl.g:6436:2: iv_ruleXBlockExpression= ruleXBlockExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXBlockExpressionRule()); 
@@ -17451,7 +17749,7 @@
 
 
     // $ANTLR start "ruleXBlockExpression"
-    // InternalPerspectiveDsl.g:6341:1: ruleXBlockExpression returns [EObject current=null] : ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) ;
+    // InternalPerspectiveDsl.g:6442: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;
 
@@ -17465,14 +17763,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6347:2: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
-            // InternalPerspectiveDsl.g:6348:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            // InternalPerspectiveDsl.g:6448:2: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
+            // InternalPerspectiveDsl.g:6449:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
             {
-            // InternalPerspectiveDsl.g:6348:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
-            // InternalPerspectiveDsl.g:6349:3: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
+            // InternalPerspectiveDsl.g:6449:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            // InternalPerspectiveDsl.g:6450:3: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
             {
-            // InternalPerspectiveDsl.g:6349:3: ()
-            // InternalPerspectiveDsl.g:6350:4: 
+            // InternalPerspectiveDsl.g:6450:3: ()
+            // InternalPerspectiveDsl.g:6451:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17490,26 +17788,26 @@
               			newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:6360:3: ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )*
+            // InternalPerspectiveDsl.g:6461:3: ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )*
             loop93:
             do {
                 int alt93=2;
                 int LA93_0 = input.LA(1);
 
-                if ( ((LA93_0>=RULE_ID && LA93_0<=RULE_DECIMAL)||LA93_0==14||(LA93_0>=49 && LA93_0<=51)||LA93_0==56||(LA93_0>=60 && LA93_0<=61)||LA93_0==68||(LA93_0>=84 && LA93_0<=85)||LA93_0==89||LA93_0==97||LA93_0==99||(LA93_0>=103 && LA93_0<=117)||LA93_0==119) ) {
+                if ( ((LA93_0>=RULE_ID && LA93_0<=RULE_DECIMAL)||LA93_0==14||(LA93_0>=51 && LA93_0<=53)||LA93_0==58||(LA93_0>=62 && LA93_0<=63)||LA93_0==70||(LA93_0>=86 && LA93_0<=87)||LA93_0==91||LA93_0==99||LA93_0==101||(LA93_0>=105 && LA93_0<=119)||LA93_0==121) ) {
                     alt93=1;
                 }
 
 
                 switch (alt93) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:6361:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )?
+            	    // InternalPerspectiveDsl.g:6462:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )?
             	    {
-            	    // InternalPerspectiveDsl.g:6361:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) )
-            	    // InternalPerspectiveDsl.g:6362:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalPerspectiveDsl.g:6462:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalPerspectiveDsl.g:6463:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
             	    {
-            	    // InternalPerspectiveDsl.g:6362:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
-            	    // InternalPerspectiveDsl.g:6363:6: lv_expressions_2_0= ruleXExpressionOrVarDeclaration
+            	    // InternalPerspectiveDsl.g:6463:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalPerspectiveDsl.g:6464:6: lv_expressions_2_0= ruleXExpressionOrVarDeclaration
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -17540,18 +17838,18 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:6380:4: (otherlv_3= ';' )?
+            	    // InternalPerspectiveDsl.g:6481:4: (otherlv_3= ';' )?
             	    int alt92=2;
             	    int LA92_0 = input.LA(1);
 
-            	    if ( (LA92_0==54) ) {
+            	    if ( (LA92_0==56) ) {
             	        alt92=1;
             	    }
             	    switch (alt92) {
             	        case 1 :
-            	            // InternalPerspectiveDsl.g:6381:5: otherlv_3= ';'
+            	            // InternalPerspectiveDsl.g:6482:5: otherlv_3= ';'
             	            {
-            	            otherlv_3=(Token)match(input,54,FOLLOW_86); if (state.failed) return current;
+            	            otherlv_3=(Token)match(input,56,FOLLOW_86); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              					newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
@@ -17603,7 +17901,7 @@
 
 
     // $ANTLR start "entryRuleXExpressionOrVarDeclaration"
-    // InternalPerspectiveDsl.g:6395:1: entryRuleXExpressionOrVarDeclaration returns [EObject current=null] : iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF ;
+    // InternalPerspectiveDsl.g:6496:1: entryRuleXExpressionOrVarDeclaration returns [EObject current=null] : iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF ;
     public final EObject entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -17611,8 +17909,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6395:68: (iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF )
-            // InternalPerspectiveDsl.g:6396:2: iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF
+            // InternalPerspectiveDsl.g:6496:68: (iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF )
+            // InternalPerspectiveDsl.g:6497:2: iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationRule()); 
@@ -17643,7 +17941,7 @@
 
 
     // $ANTLR start "ruleXExpressionOrVarDeclaration"
-    // InternalPerspectiveDsl.g:6402:1: ruleXExpressionOrVarDeclaration returns [EObject current=null] : (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:6503:1: ruleXExpressionOrVarDeclaration returns [EObject current=null] : (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) ;
     public final EObject ruleXExpressionOrVarDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -17656,17 +17954,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6408:2: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:6409:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            // InternalPerspectiveDsl.g:6509:2: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6510:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:6409:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            // InternalPerspectiveDsl.g:6510:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
             int alt94=2;
             int LA94_0 = input.LA(1);
 
-            if ( ((LA94_0>=106 && LA94_0<=107)) ) {
+            if ( ((LA94_0>=108 && LA94_0<=109)) ) {
                 alt94=1;
             }
-            else if ( ((LA94_0>=RULE_ID && LA94_0<=RULE_DECIMAL)||LA94_0==14||(LA94_0>=49 && LA94_0<=51)||LA94_0==56||(LA94_0>=60 && LA94_0<=61)||LA94_0==68||(LA94_0>=84 && LA94_0<=85)||LA94_0==89||LA94_0==97||LA94_0==99||(LA94_0>=103 && LA94_0<=105)||(LA94_0>=108 && LA94_0<=117)||LA94_0==119) ) {
+            else if ( ((LA94_0>=RULE_ID && LA94_0<=RULE_DECIMAL)||LA94_0==14||(LA94_0>=51 && LA94_0<=53)||LA94_0==58||(LA94_0>=62 && LA94_0<=63)||LA94_0==70||(LA94_0>=86 && LA94_0<=87)||LA94_0==91||LA94_0==99||LA94_0==101||(LA94_0>=105 && LA94_0<=107)||(LA94_0>=110 && LA94_0<=119)||LA94_0==121) ) {
                 alt94=2;
             }
             else {
@@ -17678,7 +17976,7 @@
             }
             switch (alt94) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6410:3: this_XVariableDeclaration_0= ruleXVariableDeclaration
+                    // InternalPerspectiveDsl.g:6511:3: this_XVariableDeclaration_0= ruleXVariableDeclaration
                     {
                     if ( state.backtracking==0 ) {
 
@@ -17700,7 +17998,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:6419:3: this_XExpression_1= ruleXExpression
+                    // InternalPerspectiveDsl.g:6520:3: this_XExpression_1= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -17746,7 +18044,7 @@
 
 
     // $ANTLR start "entryRuleXVariableDeclaration"
-    // InternalPerspectiveDsl.g:6431:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
+    // InternalPerspectiveDsl.g:6532:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
     public final EObject entryRuleXVariableDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -17754,8 +18052,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6431:61: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
-            // InternalPerspectiveDsl.g:6432:2: iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF
+            // InternalPerspectiveDsl.g:6532:61: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
+            // InternalPerspectiveDsl.g:6533:2: iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXVariableDeclarationRule()); 
@@ -17786,7 +18084,7 @@
 
 
     // $ANTLR start "ruleXVariableDeclaration"
-    // InternalPerspectiveDsl.g:6438: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:6539: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;
 
@@ -17806,14 +18104,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6444: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:6445: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:6545: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:6546: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:6445: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:6446: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:6546: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:6547: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:6446:3: ()
-            // InternalPerspectiveDsl.g:6447:4: 
+            // InternalPerspectiveDsl.g:6547:3: ()
+            // InternalPerspectiveDsl.g:6548:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17825,14 +18123,14 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6453:3: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
+            // InternalPerspectiveDsl.g:6554:3: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
             int alt95=2;
             int LA95_0 = input.LA(1);
 
-            if ( (LA95_0==106) ) {
+            if ( (LA95_0==108) ) {
                 alt95=1;
             }
-            else if ( (LA95_0==107) ) {
+            else if ( (LA95_0==109) ) {
                 alt95=2;
             }
             else {
@@ -17844,15 +18142,15 @@
             }
             switch (alt95) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6454:4: ( (lv_writeable_1_0= 'var' ) )
+                    // InternalPerspectiveDsl.g:6555:4: ( (lv_writeable_1_0= 'var' ) )
                     {
-                    // InternalPerspectiveDsl.g:6454:4: ( (lv_writeable_1_0= 'var' ) )
-                    // InternalPerspectiveDsl.g:6455:5: (lv_writeable_1_0= 'var' )
+                    // InternalPerspectiveDsl.g:6555:4: ( (lv_writeable_1_0= 'var' ) )
+                    // InternalPerspectiveDsl.g:6556:5: (lv_writeable_1_0= 'var' )
                     {
-                    // InternalPerspectiveDsl.g:6455:5: (lv_writeable_1_0= 'var' )
-                    // InternalPerspectiveDsl.g:6456:6: lv_writeable_1_0= 'var'
+                    // InternalPerspectiveDsl.g:6556:5: (lv_writeable_1_0= 'var' )
+                    // InternalPerspectiveDsl.g:6557:6: lv_writeable_1_0= 'var'
                     {
-                    lv_writeable_1_0=(Token)match(input,106,FOLLOW_46); if (state.failed) return current;
+                    lv_writeable_1_0=(Token)match(input,108,FOLLOW_46); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_writeable_1_0, grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0());
@@ -17876,9 +18174,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:6469:4: otherlv_2= 'val'
+                    // InternalPerspectiveDsl.g:6570:4: otherlv_2= 'val'
                     {
-                    otherlv_2=(Token)match(input,107,FOLLOW_46); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,109,FOLLOW_46); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
@@ -17890,7 +18188,7 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6474:3: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:6575:3: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
             int alt96=2;
             int LA96_0 = input.LA(1);
 
@@ -17911,10 +18209,10 @@
                     throw nvae;
                 }
             }
-            else if ( (LA96_0==56) && (synpred35_InternalPerspectiveDsl())) {
+            else if ( (LA96_0==58) && (synpred35_InternalPerspectiveDsl())) {
                 alt96=1;
             }
-            else if ( (LA96_0==81) && (synpred35_InternalPerspectiveDsl())) {
+            else if ( (LA96_0==83) && (synpred35_InternalPerspectiveDsl())) {
                 alt96=1;
             }
             else {
@@ -17926,19 +18224,19 @@
             }
             switch (alt96) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6475:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    // InternalPerspectiveDsl.g:6576:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:6475:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
-                    // InternalPerspectiveDsl.g:6476:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    // InternalPerspectiveDsl.g:6576:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    // InternalPerspectiveDsl.g:6577:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
                     {
-                    // InternalPerspectiveDsl.g:6489:5: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
-                    // InternalPerspectiveDsl.g:6490:6: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
+                    // InternalPerspectiveDsl.g:6590:5: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    // InternalPerspectiveDsl.g:6591:6: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
                     {
-                    // InternalPerspectiveDsl.g:6490:6: ( (lv_type_3_0= ruleJvmTypeReference ) )
-                    // InternalPerspectiveDsl.g:6491:7: (lv_type_3_0= ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:6591:6: ( (lv_type_3_0= ruleJvmTypeReference ) )
+                    // InternalPerspectiveDsl.g:6592:7: (lv_type_3_0= ruleJvmTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:6491:7: (lv_type_3_0= ruleJvmTypeReference )
-                    // InternalPerspectiveDsl.g:6492:8: lv_type_3_0= ruleJvmTypeReference
+                    // InternalPerspectiveDsl.g:6592:7: (lv_type_3_0= ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:6593:8: lv_type_3_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -17969,11 +18267,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:6509:6: ( (lv_name_4_0= ruleValidID ) )
-                    // InternalPerspectiveDsl.g:6510:7: (lv_name_4_0= ruleValidID )
+                    // InternalPerspectiveDsl.g:6610:6: ( (lv_name_4_0= ruleValidID ) )
+                    // InternalPerspectiveDsl.g:6611:7: (lv_name_4_0= ruleValidID )
                     {
-                    // InternalPerspectiveDsl.g:6510:7: (lv_name_4_0= ruleValidID )
-                    // InternalPerspectiveDsl.g:6511:8: lv_name_4_0= ruleValidID
+                    // InternalPerspectiveDsl.g:6611:7: (lv_name_4_0= ruleValidID )
+                    // InternalPerspectiveDsl.g:6612:8: lv_name_4_0= ruleValidID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -18014,13 +18312,13 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:6531:4: ( (lv_name_5_0= ruleValidID ) )
+                    // InternalPerspectiveDsl.g:6632:4: ( (lv_name_5_0= ruleValidID ) )
                     {
-                    // InternalPerspectiveDsl.g:6531:4: ( (lv_name_5_0= ruleValidID ) )
-                    // InternalPerspectiveDsl.g:6532:5: (lv_name_5_0= ruleValidID )
+                    // InternalPerspectiveDsl.g:6632:4: ( (lv_name_5_0= ruleValidID ) )
+                    // InternalPerspectiveDsl.g:6633:5: (lv_name_5_0= ruleValidID )
                     {
-                    // InternalPerspectiveDsl.g:6532:5: (lv_name_5_0= ruleValidID )
-                    // InternalPerspectiveDsl.g:6533:6: lv_name_5_0= ruleValidID
+                    // InternalPerspectiveDsl.g:6633:5: (lv_name_5_0= ruleValidID )
+                    // InternalPerspectiveDsl.g:6634:6: lv_name_5_0= ruleValidID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -18057,28 +18355,28 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6551:3: (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
+            // InternalPerspectiveDsl.g:6652:3: (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
             int alt97=2;
             int LA97_0 = input.LA(1);
 
-            if ( (LA97_0==59) ) {
+            if ( (LA97_0==61) ) {
                 alt97=1;
             }
             switch (alt97) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6552:4: otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6653:4: otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
                     {
-                    otherlv_6=(Token)match(input,59,FOLLOW_33); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,61,FOLLOW_33); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
                       			
                     }
-                    // InternalPerspectiveDsl.g:6556:4: ( (lv_right_7_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:6557:5: (lv_right_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6657:4: ( (lv_right_7_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6658:5: (lv_right_7_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:6557:5: (lv_right_7_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:6558:6: lv_right_7_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:6658:5: (lv_right_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6659:6: lv_right_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -18140,7 +18438,7 @@
 
 
     // $ANTLR start "entryRuleJvmFormalParameter"
-    // InternalPerspectiveDsl.g:6580:1: entryRuleJvmFormalParameter returns [EObject current=null] : iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF ;
+    // InternalPerspectiveDsl.g:6681:1: entryRuleJvmFormalParameter returns [EObject current=null] : iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF ;
     public final EObject entryRuleJvmFormalParameter() throws RecognitionException {
         EObject current = null;
 
@@ -18148,8 +18446,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6580:59: (iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF )
-            // InternalPerspectiveDsl.g:6581:2: iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF
+            // InternalPerspectiveDsl.g:6681:59: (iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF )
+            // InternalPerspectiveDsl.g:6682:2: iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmFormalParameterRule()); 
@@ -18180,7 +18478,7 @@
 
 
     // $ANTLR start "ruleJvmFormalParameter"
-    // InternalPerspectiveDsl.g:6587:1: ruleJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) ;
+    // InternalPerspectiveDsl.g:6688: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;
 
@@ -18193,32 +18491,32 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6593:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) )
-            // InternalPerspectiveDsl.g:6594:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:6694:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalPerspectiveDsl.g:6695:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
             {
-            // InternalPerspectiveDsl.g:6594:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
-            // InternalPerspectiveDsl.g:6595:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) )
+            // InternalPerspectiveDsl.g:6695:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:6696:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) )
             {
-            // InternalPerspectiveDsl.g:6595:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )?
+            // InternalPerspectiveDsl.g:6696:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )?
             int alt98=2;
             int LA98_0 = input.LA(1);
 
             if ( (LA98_0==RULE_ID) ) {
                 int LA98_1 = input.LA(2);
 
-                if ( (LA98_1==RULE_ID||LA98_1==61||LA98_1==68||LA98_1==93) ) {
+                if ( (LA98_1==RULE_ID||LA98_1==63||LA98_1==70||LA98_1==95) ) {
                     alt98=1;
                 }
             }
-            else if ( (LA98_0==56||LA98_0==81) ) {
+            else if ( (LA98_0==58||LA98_0==83) ) {
                 alt98=1;
             }
             switch (alt98) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6596:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:6697:4: (lv_parameterType_0_0= ruleJvmTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:6596:4: (lv_parameterType_0_0= ruleJvmTypeReference )
-                    // InternalPerspectiveDsl.g:6597:5: lv_parameterType_0_0= ruleJvmTypeReference
+                    // InternalPerspectiveDsl.g:6697:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:6698:5: lv_parameterType_0_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -18252,11 +18550,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6614:3: ( (lv_name_1_0= ruleValidID ) )
-            // InternalPerspectiveDsl.g:6615:4: (lv_name_1_0= ruleValidID )
+            // InternalPerspectiveDsl.g:6715:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalPerspectiveDsl.g:6716:4: (lv_name_1_0= ruleValidID )
             {
-            // InternalPerspectiveDsl.g:6615:4: (lv_name_1_0= ruleValidID )
-            // InternalPerspectiveDsl.g:6616:5: lv_name_1_0= ruleValidID
+            // InternalPerspectiveDsl.g:6716:4: (lv_name_1_0= ruleValidID )
+            // InternalPerspectiveDsl.g:6717:5: lv_name_1_0= ruleValidID
             {
             if ( state.backtracking==0 ) {
 
@@ -18312,7 +18610,7 @@
 
 
     // $ANTLR start "entryRuleFullJvmFormalParameter"
-    // InternalPerspectiveDsl.g:6637:1: entryRuleFullJvmFormalParameter returns [EObject current=null] : iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF ;
+    // InternalPerspectiveDsl.g:6738:1: entryRuleFullJvmFormalParameter returns [EObject current=null] : iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF ;
     public final EObject entryRuleFullJvmFormalParameter() throws RecognitionException {
         EObject current = null;
 
@@ -18320,8 +18618,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6637:63: (iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF )
-            // InternalPerspectiveDsl.g:6638:2: iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF
+            // InternalPerspectiveDsl.g:6738:63: (iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF )
+            // InternalPerspectiveDsl.g:6739:2: iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getFullJvmFormalParameterRule()); 
@@ -18352,7 +18650,7 @@
 
 
     // $ANTLR start "ruleFullJvmFormalParameter"
-    // InternalPerspectiveDsl.g:6644:1: ruleFullJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) ;
+    // InternalPerspectiveDsl.g:6745: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;
 
@@ -18365,17 +18663,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6650:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) )
-            // InternalPerspectiveDsl.g:6651:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:6751:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalPerspectiveDsl.g:6752:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
             {
-            // InternalPerspectiveDsl.g:6651:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
-            // InternalPerspectiveDsl.g:6652:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) )
+            // InternalPerspectiveDsl.g:6752:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:6753:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) )
             {
-            // InternalPerspectiveDsl.g:6652:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:6653:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:6753:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:6754:4: (lv_parameterType_0_0= ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:6653:4: (lv_parameterType_0_0= ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:6654:5: lv_parameterType_0_0= ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:6754:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:6755:5: lv_parameterType_0_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -18406,11 +18704,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6671:3: ( (lv_name_1_0= ruleValidID ) )
-            // InternalPerspectiveDsl.g:6672:4: (lv_name_1_0= ruleValidID )
+            // InternalPerspectiveDsl.g:6772:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalPerspectiveDsl.g:6773:4: (lv_name_1_0= ruleValidID )
             {
-            // InternalPerspectiveDsl.g:6672:4: (lv_name_1_0= ruleValidID )
-            // InternalPerspectiveDsl.g:6673:5: lv_name_1_0= ruleValidID
+            // InternalPerspectiveDsl.g:6773:4: (lv_name_1_0= ruleValidID )
+            // InternalPerspectiveDsl.g:6774:5: lv_name_1_0= ruleValidID
             {
             if ( state.backtracking==0 ) {
 
@@ -18466,7 +18764,7 @@
 
 
     // $ANTLR start "entryRuleXFeatureCall"
-    // InternalPerspectiveDsl.g:6694:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
+    // InternalPerspectiveDsl.g:6795:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
     public final EObject entryRuleXFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -18474,8 +18772,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6694:53: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
-            // InternalPerspectiveDsl.g:6695:2: iv_ruleXFeatureCall= ruleXFeatureCall EOF
+            // InternalPerspectiveDsl.g:6795:53: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
+            // InternalPerspectiveDsl.g:6796:2: iv_ruleXFeatureCall= ruleXFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXFeatureCallRule()); 
@@ -18506,7 +18804,7 @@
 
 
     // $ANTLR start "ruleXFeatureCall"
-    // InternalPerspectiveDsl.g:6701: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:6802: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;
 
@@ -18533,14 +18831,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6707: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:6708: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:6808: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:6809: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:6708: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:6709: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:6809: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:6810: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:6709:3: ()
-            // InternalPerspectiveDsl.g:6710:4: 
+            // InternalPerspectiveDsl.g:6810:3: ()
+            // InternalPerspectiveDsl.g:6811:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -18552,28 +18850,28 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6716:3: (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
+            // InternalPerspectiveDsl.g:6817:3: (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
             int alt100=2;
             int LA100_0 = input.LA(1);
 
-            if ( (LA100_0==68) ) {
+            if ( (LA100_0==70) ) {
                 alt100=1;
             }
             switch (alt100) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6717:4: otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>'
+                    // InternalPerspectiveDsl.g:6818:4: otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>'
                     {
-                    otherlv_1=(Token)match(input,68,FOLLOW_58); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,70,FOLLOW_58); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_1, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0());
                       			
                     }
-                    // InternalPerspectiveDsl.g:6721:4: ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) )
-                    // InternalPerspectiveDsl.g:6722:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalPerspectiveDsl.g:6822:4: ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalPerspectiveDsl.g:6823:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:6722:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
-                    // InternalPerspectiveDsl.g:6723:6: lv_typeArguments_2_0= ruleJvmArgumentTypeReference
+                    // InternalPerspectiveDsl.g:6823:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalPerspectiveDsl.g:6824:6: lv_typeArguments_2_0= ruleJvmArgumentTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -18604,32 +18902,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:6740:4: (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    // InternalPerspectiveDsl.g:6841:4: (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )*
                     loop99:
                     do {
                         int alt99=2;
                         int LA99_0 = input.LA(1);
 
-                        if ( (LA99_0==57) ) {
+                        if ( (LA99_0==59) ) {
                             alt99=1;
                         }
 
 
                         switch (alt99) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:6741:5: otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalPerspectiveDsl.g:6842:5: otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
                     	    {
-                    	    otherlv_3=(Token)match(input,57,FOLLOW_58); if (state.failed) return current;
+                    	    otherlv_3=(Token)match(input,59,FOLLOW_58); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_3, grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0());
                     	      				
                     	    }
-                    	    // InternalPerspectiveDsl.g:6745:5: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
-                    	    // InternalPerspectiveDsl.g:6746:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalPerspectiveDsl.g:6846:5: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalPerspectiveDsl.g:6847:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
                     	    {
-                    	    // InternalPerspectiveDsl.g:6746:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
-                    	    // InternalPerspectiveDsl.g:6747:7: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    	    // InternalPerspectiveDsl.g:6847:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalPerspectiveDsl.g:6848:7: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -18669,7 +18967,7 @@
                         }
                     } while (true);
 
-                    otherlv_5=(Token)match(input,69,FOLLOW_57); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,71,FOLLOW_57); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_5, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3());
@@ -18681,11 +18979,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6770:3: ( ( ruleIdOrSuper ) )
-            // InternalPerspectiveDsl.g:6771:4: ( ruleIdOrSuper )
+            // InternalPerspectiveDsl.g:6871:3: ( ( ruleIdOrSuper ) )
+            // InternalPerspectiveDsl.g:6872:4: ( ruleIdOrSuper )
             {
-            // InternalPerspectiveDsl.g:6771:4: ( ruleIdOrSuper )
-            // InternalPerspectiveDsl.g:6772:5: ruleIdOrSuper
+            // InternalPerspectiveDsl.g:6872:4: ( ruleIdOrSuper )
+            // InternalPerspectiveDsl.g:6873:5: ruleIdOrSuper
             {
             if ( state.backtracking==0 ) {
 
@@ -18715,20 +19013,20 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6786: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:6887:3: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?
             int alt103=2;
             alt103 = dfa103.predict(input);
             switch (alt103) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6787: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:6888: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:6787:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) )
-                    // InternalPerspectiveDsl.g:6788:5: ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' )
+                    // InternalPerspectiveDsl.g:6888:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) )
+                    // InternalPerspectiveDsl.g:6889:5: ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' )
                     {
-                    // InternalPerspectiveDsl.g:6792:5: (lv_explicitOperationCall_7_0= '(' )
-                    // InternalPerspectiveDsl.g:6793:6: lv_explicitOperationCall_7_0= '('
+                    // InternalPerspectiveDsl.g:6893:5: (lv_explicitOperationCall_7_0= '(' )
+                    // InternalPerspectiveDsl.g:6894:6: lv_explicitOperationCall_7_0= '('
                     {
-                    lv_explicitOperationCall_7_0=(Token)match(input,56,FOLLOW_61); if (state.failed) return current;
+                    lv_explicitOperationCall_7_0=(Token)match(input,58,FOLLOW_61); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_explicitOperationCall_7_0, grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0());
@@ -18748,18 +19046,18 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:6805:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?
+                    // InternalPerspectiveDsl.g:6906:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?
                     int alt102=3;
                     alt102 = dfa102.predict(input);
                     switch (alt102) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:6806:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            // InternalPerspectiveDsl.g:6907:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
                             {
-                            // InternalPerspectiveDsl.g:6806:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
-                            // InternalPerspectiveDsl.g:6807:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            // InternalPerspectiveDsl.g:6907:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            // InternalPerspectiveDsl.g:6908:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure )
                             {
-                            // InternalPerspectiveDsl.g:6832:6: (lv_featureCallArguments_8_0= ruleXShortClosure )
-                            // InternalPerspectiveDsl.g:6833:7: lv_featureCallArguments_8_0= ruleXShortClosure
+                            // InternalPerspectiveDsl.g:6933:6: (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            // InternalPerspectiveDsl.g:6934:7: lv_featureCallArguments_8_0= ruleXShortClosure
                             {
                             if ( state.backtracking==0 ) {
 
@@ -18794,16 +19092,16 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:6851:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            // InternalPerspectiveDsl.g:6952:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
                             {
-                            // InternalPerspectiveDsl.g:6851:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
-                            // InternalPerspectiveDsl.g:6852:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            // InternalPerspectiveDsl.g:6952:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            // InternalPerspectiveDsl.g:6953:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
                             {
-                            // InternalPerspectiveDsl.g:6852:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) )
-                            // InternalPerspectiveDsl.g:6853:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            // InternalPerspectiveDsl.g:6953:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) )
+                            // InternalPerspectiveDsl.g:6954:7: (lv_featureCallArguments_9_0= ruleXExpression )
                             {
-                            // InternalPerspectiveDsl.g:6853:7: (lv_featureCallArguments_9_0= ruleXExpression )
-                            // InternalPerspectiveDsl.g:6854:8: lv_featureCallArguments_9_0= ruleXExpression
+                            // InternalPerspectiveDsl.g:6954:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            // InternalPerspectiveDsl.g:6955:8: lv_featureCallArguments_9_0= ruleXExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -18834,32 +19132,32 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:6871:6: (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            // InternalPerspectiveDsl.g:6972:6: (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
                             loop101:
                             do {
                                 int alt101=2;
                                 int LA101_0 = input.LA(1);
 
-                                if ( (LA101_0==57) ) {
+                                if ( (LA101_0==59) ) {
                                     alt101=1;
                                 }
 
 
                                 switch (alt101) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:6872:7: otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    // InternalPerspectiveDsl.g:6973:7: otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) )
                             	    {
-                            	    otherlv_10=(Token)match(input,57,FOLLOW_33); if (state.failed) return current;
+                            	    otherlv_10=(Token)match(input,59,FOLLOW_33); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      							newLeafNode(otherlv_10, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
                             	      						
                             	    }
-                            	    // InternalPerspectiveDsl.g:6876:7: ( (lv_featureCallArguments_11_0= ruleXExpression ) )
-                            	    // InternalPerspectiveDsl.g:6877:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    // InternalPerspectiveDsl.g:6977:7: ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    // InternalPerspectiveDsl.g:6978:8: (lv_featureCallArguments_11_0= ruleXExpression )
                             	    {
-                            	    // InternalPerspectiveDsl.g:6877:8: (lv_featureCallArguments_11_0= ruleXExpression )
-                            	    // InternalPerspectiveDsl.g:6878:9: lv_featureCallArguments_11_0= ruleXExpression
+                            	    // InternalPerspectiveDsl.g:6978:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    // InternalPerspectiveDsl.g:6979:9: lv_featureCallArguments_11_0= ruleXExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -18908,7 +19206,7 @@
 
                     }
 
-                    otherlv_12=(Token)match(input,58,FOLLOW_90); if (state.failed) return current;
+                    otherlv_12=(Token)match(input,60,FOLLOW_90); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_12, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2());
@@ -18920,15 +19218,15 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6903:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
+            // InternalPerspectiveDsl.g:7004:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
             int alt104=2;
             alt104 = dfa104.predict(input);
             switch (alt104) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6904:4: ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure )
+                    // InternalPerspectiveDsl.g:7005:4: ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure )
                     {
-                    // InternalPerspectiveDsl.g:6910:4: (lv_featureCallArguments_13_0= ruleXClosure )
-                    // InternalPerspectiveDsl.g:6911:5: lv_featureCallArguments_13_0= ruleXClosure
+                    // InternalPerspectiveDsl.g:7011:4: (lv_featureCallArguments_13_0= ruleXClosure )
+                    // InternalPerspectiveDsl.g:7012:5: lv_featureCallArguments_13_0= ruleXClosure
                     {
                     if ( state.backtracking==0 ) {
 
@@ -18987,7 +19285,7 @@
 
 
     // $ANTLR start "entryRuleFeatureCallID"
-    // InternalPerspectiveDsl.g:6932:1: entryRuleFeatureCallID returns [String current=null] : iv_ruleFeatureCallID= ruleFeatureCallID EOF ;
+    // InternalPerspectiveDsl.g:7033:1: entryRuleFeatureCallID returns [String current=null] : iv_ruleFeatureCallID= ruleFeatureCallID EOF ;
     public final String entryRuleFeatureCallID() throws RecognitionException {
         String current = null;
 
@@ -18995,8 +19293,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6932:53: (iv_ruleFeatureCallID= ruleFeatureCallID EOF )
-            // InternalPerspectiveDsl.g:6933:2: iv_ruleFeatureCallID= ruleFeatureCallID EOF
+            // InternalPerspectiveDsl.g:7033:53: (iv_ruleFeatureCallID= ruleFeatureCallID EOF )
+            // InternalPerspectiveDsl.g:7034:2: iv_ruleFeatureCallID= ruleFeatureCallID EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getFeatureCallIDRule()); 
@@ -19027,7 +19325,7 @@
 
 
     // $ANTLR start "ruleFeatureCallID"
-    // InternalPerspectiveDsl.g:6939:1: ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) ;
+    // InternalPerspectiveDsl.g:7040: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();
 
@@ -19039,10 +19337,10 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6945:2: ( (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) )
-            // InternalPerspectiveDsl.g:6946:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            // InternalPerspectiveDsl.g:7046:2: ( (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) )
+            // InternalPerspectiveDsl.g:7047:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
             {
-            // InternalPerspectiveDsl.g:6946:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            // InternalPerspectiveDsl.g:7047:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
             int alt105=5;
             switch ( input.LA(1) ) {
             case RULE_ID:
@@ -19050,22 +19348,22 @@
                 alt105=1;
                 }
                 break;
-            case 108:
+            case 110:
                 {
                 alt105=2;
                 }
                 break;
-            case 50:
+            case 52:
                 {
                 alt105=3;
                 }
                 break;
-            case 49:
+            case 51:
                 {
                 alt105=4;
                 }
                 break;
-            case 51:
+            case 53:
                 {
                 alt105=5;
                 }
@@ -19080,7 +19378,7 @@
 
             switch (alt105) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6947:3: this_ValidID_0= ruleValidID
+                    // InternalPerspectiveDsl.g:7048:3: this_ValidID_0= ruleValidID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -19106,9 +19404,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:6958:3: kw= 'extends'
+                    // InternalPerspectiveDsl.g:7059:3: kw= 'extends'
                     {
-                    kw=(Token)match(input,108,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,110,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -19119,9 +19417,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:6964:3: kw= 'static'
+                    // InternalPerspectiveDsl.g:7065:3: kw= 'static'
                     {
-                    kw=(Token)match(input,50,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,52,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -19132,9 +19430,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:6970:3: kw= 'import'
+                    // InternalPerspectiveDsl.g:7071:3: kw= 'import'
                     {
-                    kw=(Token)match(input,49,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,51,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -19145,9 +19443,9 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:6976:3: kw= 'extension'
+                    // InternalPerspectiveDsl.g:7077:3: kw= 'extension'
                     {
-                    kw=(Token)match(input,51,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,53,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -19182,7 +19480,7 @@
 
 
     // $ANTLR start "entryRuleIdOrSuper"
-    // InternalPerspectiveDsl.g:6985:1: entryRuleIdOrSuper returns [String current=null] : iv_ruleIdOrSuper= ruleIdOrSuper EOF ;
+    // InternalPerspectiveDsl.g:7086:1: entryRuleIdOrSuper returns [String current=null] : iv_ruleIdOrSuper= ruleIdOrSuper EOF ;
     public final String entryRuleIdOrSuper() throws RecognitionException {
         String current = null;
 
@@ -19190,8 +19488,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6985:49: (iv_ruleIdOrSuper= ruleIdOrSuper EOF )
-            // InternalPerspectiveDsl.g:6986:2: iv_ruleIdOrSuper= ruleIdOrSuper EOF
+            // InternalPerspectiveDsl.g:7086:49: (iv_ruleIdOrSuper= ruleIdOrSuper EOF )
+            // InternalPerspectiveDsl.g:7087:2: iv_ruleIdOrSuper= ruleIdOrSuper EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getIdOrSuperRule()); 
@@ -19222,7 +19520,7 @@
 
 
     // $ANTLR start "ruleIdOrSuper"
-    // InternalPerspectiveDsl.g:6992:1: ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) ;
+    // InternalPerspectiveDsl.g:7093:1: ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) ;
     public final AntlrDatatypeRuleToken ruleIdOrSuper() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -19234,17 +19532,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6998:2: ( (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) )
-            // InternalPerspectiveDsl.g:6999:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            // InternalPerspectiveDsl.g:7099:2: ( (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) )
+            // InternalPerspectiveDsl.g:7100:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
             {
-            // InternalPerspectiveDsl.g:6999:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            // InternalPerspectiveDsl.g:7100:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
             int alt106=2;
             int LA106_0 = input.LA(1);
 
-            if ( (LA106_0==RULE_ID||(LA106_0>=49 && LA106_0<=51)||LA106_0==108) ) {
+            if ( (LA106_0==RULE_ID||(LA106_0>=51 && LA106_0<=53)||LA106_0==110) ) {
                 alt106=1;
             }
-            else if ( (LA106_0==109) ) {
+            else if ( (LA106_0==111) ) {
                 alt106=2;
             }
             else {
@@ -19256,7 +19554,7 @@
             }
             switch (alt106) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7000:3: this_FeatureCallID_0= ruleFeatureCallID
+                    // InternalPerspectiveDsl.g:7101:3: this_FeatureCallID_0= ruleFeatureCallID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -19282,9 +19580,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:7011:3: kw= 'super'
+                    // InternalPerspectiveDsl.g:7112:3: kw= 'super'
                     {
-                    kw=(Token)match(input,109,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,111,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -19319,7 +19617,7 @@
 
 
     // $ANTLR start "entryRuleXConstructorCall"
-    // InternalPerspectiveDsl.g:7020:1: entryRuleXConstructorCall returns [EObject current=null] : iv_ruleXConstructorCall= ruleXConstructorCall EOF ;
+    // InternalPerspectiveDsl.g:7121:1: entryRuleXConstructorCall returns [EObject current=null] : iv_ruleXConstructorCall= ruleXConstructorCall EOF ;
     public final EObject entryRuleXConstructorCall() throws RecognitionException {
         EObject current = null;
 
@@ -19327,8 +19625,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7020:57: (iv_ruleXConstructorCall= ruleXConstructorCall EOF )
-            // InternalPerspectiveDsl.g:7021:2: iv_ruleXConstructorCall= ruleXConstructorCall EOF
+            // InternalPerspectiveDsl.g:7121:57: (iv_ruleXConstructorCall= ruleXConstructorCall EOF )
+            // InternalPerspectiveDsl.g:7122:2: iv_ruleXConstructorCall= ruleXConstructorCall EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXConstructorCallRule()); 
@@ -19359,7 +19657,7 @@
 
 
     // $ANTLR start "ruleXConstructorCall"
-    // InternalPerspectiveDsl.g:7027: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:7128: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;
 
@@ -19387,14 +19685,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7033: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:7034: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:7134: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:7135: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:7034: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:7035: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:7135: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:7136: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:7035:3: ()
-            // InternalPerspectiveDsl.g:7036:4: 
+            // InternalPerspectiveDsl.g:7136:3: ()
+            // InternalPerspectiveDsl.g:7137:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -19406,17 +19704,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,110,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,112,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:7046:3: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:7047:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:7147:3: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:7148:4: ( ruleQualifiedName )
             {
-            // InternalPerspectiveDsl.g:7047:4: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:7048:5: ruleQualifiedName
+            // InternalPerspectiveDsl.g:7148:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:7149:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -19446,17 +19744,17 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7062:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?
+            // InternalPerspectiveDsl.g:7163:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?
             int alt108=2;
             alt108 = dfa108.predict(input);
             switch (alt108) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7063:4: ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>'
+                    // InternalPerspectiveDsl.g:7164:4: ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>'
                     {
-                    // InternalPerspectiveDsl.g:7063:4: ( ( '<' )=>otherlv_3= '<' )
-                    // InternalPerspectiveDsl.g:7064:5: ( '<' )=>otherlv_3= '<'
+                    // InternalPerspectiveDsl.g:7164:4: ( ( '<' )=>otherlv_3= '<' )
+                    // InternalPerspectiveDsl.g:7165:5: ( '<' )=>otherlv_3= '<'
                     {
-                    otherlv_3=(Token)match(input,68,FOLLOW_58); if (state.failed) return current;
+                    otherlv_3=(Token)match(input,70,FOLLOW_58); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
@@ -19465,11 +19763,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:7070:4: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
-                    // InternalPerspectiveDsl.g:7071:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    // InternalPerspectiveDsl.g:7171:4: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    // InternalPerspectiveDsl.g:7172:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:7071:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
-                    // InternalPerspectiveDsl.g:7072:6: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    // InternalPerspectiveDsl.g:7172:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    // InternalPerspectiveDsl.g:7173:6: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -19500,32 +19798,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:7089:4: (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )*
+                    // InternalPerspectiveDsl.g:7190:4: (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )*
                     loop107:
                     do {
                         int alt107=2;
                         int LA107_0 = input.LA(1);
 
-                        if ( (LA107_0==57) ) {
+                        if ( (LA107_0==59) ) {
                             alt107=1;
                         }
 
 
                         switch (alt107) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:7090:5: otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalPerspectiveDsl.g:7191:5: otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
                     	    {
-                    	    otherlv_5=(Token)match(input,57,FOLLOW_58); if (state.failed) return current;
+                    	    otherlv_5=(Token)match(input,59,FOLLOW_58); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
                     	      				
                     	    }
-                    	    // InternalPerspectiveDsl.g:7094:5: ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
-                    	    // InternalPerspectiveDsl.g:7095:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    // InternalPerspectiveDsl.g:7195:5: ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalPerspectiveDsl.g:7196:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
                     	    {
-                    	    // InternalPerspectiveDsl.g:7095:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
-                    	    // InternalPerspectiveDsl.g:7096:7: lv_typeArguments_6_0= ruleJvmArgumentTypeReference
+                    	    // InternalPerspectiveDsl.g:7196:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    // InternalPerspectiveDsl.g:7197:7: lv_typeArguments_6_0= ruleJvmArgumentTypeReference
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -19565,7 +19863,7 @@
                         }
                     } while (true);
 
-                    otherlv_7=(Token)match(input,69,FOLLOW_89); if (state.failed) return current;
+                    otherlv_7=(Token)match(input,71,FOLLOW_89); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
@@ -19577,20 +19875,20 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7119: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:7220:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?
             int alt111=2;
             alt111 = dfa111.predict(input);
             switch (alt111) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7120: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:7221: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:7120:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) )
-                    // InternalPerspectiveDsl.g:7121:5: ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' )
+                    // InternalPerspectiveDsl.g:7221:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) )
+                    // InternalPerspectiveDsl.g:7222:5: ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' )
                     {
-                    // InternalPerspectiveDsl.g:7125:5: (lv_explicitConstructorCall_8_0= '(' )
-                    // InternalPerspectiveDsl.g:7126:6: lv_explicitConstructorCall_8_0= '('
+                    // InternalPerspectiveDsl.g:7226:5: (lv_explicitConstructorCall_8_0= '(' )
+                    // InternalPerspectiveDsl.g:7227:6: lv_explicitConstructorCall_8_0= '('
                     {
-                    lv_explicitConstructorCall_8_0=(Token)match(input,56,FOLLOW_61); if (state.failed) return current;
+                    lv_explicitConstructorCall_8_0=(Token)match(input,58,FOLLOW_61); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_explicitConstructorCall_8_0, grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0());
@@ -19610,18 +19908,18 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:7138:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?
+                    // InternalPerspectiveDsl.g:7239:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?
                     int alt110=3;
                     alt110 = dfa110.predict(input);
                     switch (alt110) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:7139:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            // InternalPerspectiveDsl.g:7240:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
                             {
-                            // InternalPerspectiveDsl.g:7139:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
-                            // InternalPerspectiveDsl.g:7140:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure )
+                            // InternalPerspectiveDsl.g:7240:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            // InternalPerspectiveDsl.g:7241:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure )
                             {
-                            // InternalPerspectiveDsl.g:7165:6: (lv_arguments_9_0= ruleXShortClosure )
-                            // InternalPerspectiveDsl.g:7166:7: lv_arguments_9_0= ruleXShortClosure
+                            // InternalPerspectiveDsl.g:7266:6: (lv_arguments_9_0= ruleXShortClosure )
+                            // InternalPerspectiveDsl.g:7267:7: lv_arguments_9_0= ruleXShortClosure
                             {
                             if ( state.backtracking==0 ) {
 
@@ -19656,16 +19954,16 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:7184:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            // InternalPerspectiveDsl.g:7285:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
                             {
-                            // InternalPerspectiveDsl.g:7184:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
-                            // InternalPerspectiveDsl.g:7185:6: ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            // InternalPerspectiveDsl.g:7285:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            // InternalPerspectiveDsl.g:7286:6: ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
                             {
-                            // InternalPerspectiveDsl.g:7185:6: ( (lv_arguments_10_0= ruleXExpression ) )
-                            // InternalPerspectiveDsl.g:7186:7: (lv_arguments_10_0= ruleXExpression )
+                            // InternalPerspectiveDsl.g:7286:6: ( (lv_arguments_10_0= ruleXExpression ) )
+                            // InternalPerspectiveDsl.g:7287:7: (lv_arguments_10_0= ruleXExpression )
                             {
-                            // InternalPerspectiveDsl.g:7186:7: (lv_arguments_10_0= ruleXExpression )
-                            // InternalPerspectiveDsl.g:7187:8: lv_arguments_10_0= ruleXExpression
+                            // InternalPerspectiveDsl.g:7287:7: (lv_arguments_10_0= ruleXExpression )
+                            // InternalPerspectiveDsl.g:7288:8: lv_arguments_10_0= ruleXExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -19696,32 +19994,32 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:7204:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            // InternalPerspectiveDsl.g:7305:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
                             loop109:
                             do {
                                 int alt109=2;
                                 int LA109_0 = input.LA(1);
 
-                                if ( (LA109_0==57) ) {
+                                if ( (LA109_0==59) ) {
                                     alt109=1;
                                 }
 
 
                                 switch (alt109) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:7205:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    // InternalPerspectiveDsl.g:7306:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) )
                             	    {
-                            	    otherlv_11=(Token)match(input,57,FOLLOW_33); if (state.failed) return current;
+                            	    otherlv_11=(Token)match(input,59,FOLLOW_33); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      							newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0());
                             	      						
                             	    }
-                            	    // InternalPerspectiveDsl.g:7209:7: ( (lv_arguments_12_0= ruleXExpression ) )
-                            	    // InternalPerspectiveDsl.g:7210:8: (lv_arguments_12_0= ruleXExpression )
+                            	    // InternalPerspectiveDsl.g:7310:7: ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    // InternalPerspectiveDsl.g:7311:8: (lv_arguments_12_0= ruleXExpression )
                             	    {
-                            	    // InternalPerspectiveDsl.g:7210:8: (lv_arguments_12_0= ruleXExpression )
-                            	    // InternalPerspectiveDsl.g:7211:9: lv_arguments_12_0= ruleXExpression
+                            	    // InternalPerspectiveDsl.g:7311:8: (lv_arguments_12_0= ruleXExpression )
+                            	    // InternalPerspectiveDsl.g:7312:9: lv_arguments_12_0= ruleXExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -19770,7 +20068,7 @@
 
                     }
 
-                    otherlv_13=(Token)match(input,58,FOLLOW_90); if (state.failed) return current;
+                    otherlv_13=(Token)match(input,60,FOLLOW_90); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2());
@@ -19782,15 +20080,15 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7236:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
+            // InternalPerspectiveDsl.g:7337:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
             int alt112=2;
             alt112 = dfa112.predict(input);
             switch (alt112) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7237:4: ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure )
+                    // InternalPerspectiveDsl.g:7338:4: ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure )
                     {
-                    // InternalPerspectiveDsl.g:7243:4: (lv_arguments_14_0= ruleXClosure )
-                    // InternalPerspectiveDsl.g:7244:5: lv_arguments_14_0= ruleXClosure
+                    // InternalPerspectiveDsl.g:7344:4: (lv_arguments_14_0= ruleXClosure )
+                    // InternalPerspectiveDsl.g:7345:5: lv_arguments_14_0= ruleXClosure
                     {
                     if ( state.backtracking==0 ) {
 
@@ -19849,7 +20147,7 @@
 
 
     // $ANTLR start "entryRuleXBooleanLiteral"
-    // InternalPerspectiveDsl.g:7265:1: entryRuleXBooleanLiteral returns [EObject current=null] : iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF ;
+    // InternalPerspectiveDsl.g:7366:1: entryRuleXBooleanLiteral returns [EObject current=null] : iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF ;
     public final EObject entryRuleXBooleanLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -19857,8 +20155,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7265:56: (iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF )
-            // InternalPerspectiveDsl.g:7266:2: iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF
+            // InternalPerspectiveDsl.g:7366:56: (iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF )
+            // InternalPerspectiveDsl.g:7367:2: iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXBooleanLiteralRule()); 
@@ -19889,7 +20187,7 @@
 
 
     // $ANTLR start "ruleXBooleanLiteral"
-    // InternalPerspectiveDsl.g:7272:1: ruleXBooleanLiteral returns [EObject current=null] : ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) ;
+    // InternalPerspectiveDsl.g:7373:1: ruleXBooleanLiteral returns [EObject current=null] : ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) ;
     public final EObject ruleXBooleanLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -19900,14 +20198,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7278:2: ( ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) )
-            // InternalPerspectiveDsl.g:7279:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            // InternalPerspectiveDsl.g:7379:2: ( ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) )
+            // InternalPerspectiveDsl.g:7380:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
             {
-            // InternalPerspectiveDsl.g:7279:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
-            // InternalPerspectiveDsl.g:7280:3: () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            // InternalPerspectiveDsl.g:7380:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            // InternalPerspectiveDsl.g:7381:3: () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
             {
-            // InternalPerspectiveDsl.g:7280:3: ()
-            // InternalPerspectiveDsl.g:7281:4: 
+            // InternalPerspectiveDsl.g:7381:3: ()
+            // InternalPerspectiveDsl.g:7382:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -19919,14 +20217,14 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7287:3: (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            // InternalPerspectiveDsl.g:7388:3: (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
             int alt113=2;
             int LA113_0 = input.LA(1);
 
-            if ( (LA113_0==111) ) {
+            if ( (LA113_0==113) ) {
                 alt113=1;
             }
-            else if ( (LA113_0==112) ) {
+            else if ( (LA113_0==114) ) {
                 alt113=2;
             }
             else {
@@ -19938,9 +20236,9 @@
             }
             switch (alt113) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7288:4: otherlv_1= 'false'
+                    // InternalPerspectiveDsl.g:7389:4: otherlv_1= 'false'
                     {
-                    otherlv_1=(Token)match(input,111,FOLLOW_2); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,113,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
@@ -19950,15 +20248,15 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:7293:4: ( (lv_isTrue_2_0= 'true' ) )
+                    // InternalPerspectiveDsl.g:7394:4: ( (lv_isTrue_2_0= 'true' ) )
                     {
-                    // InternalPerspectiveDsl.g:7293:4: ( (lv_isTrue_2_0= 'true' ) )
-                    // InternalPerspectiveDsl.g:7294:5: (lv_isTrue_2_0= 'true' )
+                    // InternalPerspectiveDsl.g:7394:4: ( (lv_isTrue_2_0= 'true' ) )
+                    // InternalPerspectiveDsl.g:7395:5: (lv_isTrue_2_0= 'true' )
                     {
-                    // InternalPerspectiveDsl.g:7294:5: (lv_isTrue_2_0= 'true' )
-                    // InternalPerspectiveDsl.g:7295:6: lv_isTrue_2_0= 'true'
+                    // InternalPerspectiveDsl.g:7395:5: (lv_isTrue_2_0= 'true' )
+                    // InternalPerspectiveDsl.g:7396:6: lv_isTrue_2_0= 'true'
                     {
-                    lv_isTrue_2_0=(Token)match(input,112,FOLLOW_2); if (state.failed) return current;
+                    lv_isTrue_2_0=(Token)match(input,114,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_isTrue_2_0, grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0());
@@ -20009,7 +20307,7 @@
 
 
     // $ANTLR start "entryRuleXNullLiteral"
-    // InternalPerspectiveDsl.g:7312:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
+    // InternalPerspectiveDsl.g:7413:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
     public final EObject entryRuleXNullLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -20017,8 +20315,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7312:53: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
-            // InternalPerspectiveDsl.g:7313:2: iv_ruleXNullLiteral= ruleXNullLiteral EOF
+            // InternalPerspectiveDsl.g:7413:53: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
+            // InternalPerspectiveDsl.g:7414:2: iv_ruleXNullLiteral= ruleXNullLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXNullLiteralRule()); 
@@ -20049,7 +20347,7 @@
 
 
     // $ANTLR start "ruleXNullLiteral"
-    // InternalPerspectiveDsl.g:7319:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
+    // InternalPerspectiveDsl.g:7420:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
     public final EObject ruleXNullLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -20059,14 +20357,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7325:2: ( ( () otherlv_1= 'null' ) )
-            // InternalPerspectiveDsl.g:7326:2: ( () otherlv_1= 'null' )
+            // InternalPerspectiveDsl.g:7426:2: ( ( () otherlv_1= 'null' ) )
+            // InternalPerspectiveDsl.g:7427:2: ( () otherlv_1= 'null' )
             {
-            // InternalPerspectiveDsl.g:7326:2: ( () otherlv_1= 'null' )
-            // InternalPerspectiveDsl.g:7327:3: () otherlv_1= 'null'
+            // InternalPerspectiveDsl.g:7427:2: ( () otherlv_1= 'null' )
+            // InternalPerspectiveDsl.g:7428:3: () otherlv_1= 'null'
             {
-            // InternalPerspectiveDsl.g:7327:3: ()
-            // InternalPerspectiveDsl.g:7328:4: 
+            // InternalPerspectiveDsl.g:7428:3: ()
+            // InternalPerspectiveDsl.g:7429:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -20078,7 +20376,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,113,FOLLOW_2); if (state.failed) return current;
+            otherlv_1=(Token)match(input,115,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXNullLiteralAccess().getNullKeyword_1());
@@ -20109,7 +20407,7 @@
 
 
     // $ANTLR start "entryRuleXNumberLiteral"
-    // InternalPerspectiveDsl.g:7342:1: entryRuleXNumberLiteral returns [EObject current=null] : iv_ruleXNumberLiteral= ruleXNumberLiteral EOF ;
+    // InternalPerspectiveDsl.g:7443:1: entryRuleXNumberLiteral returns [EObject current=null] : iv_ruleXNumberLiteral= ruleXNumberLiteral EOF ;
     public final EObject entryRuleXNumberLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -20117,8 +20415,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7342:55: (iv_ruleXNumberLiteral= ruleXNumberLiteral EOF )
-            // InternalPerspectiveDsl.g:7343:2: iv_ruleXNumberLiteral= ruleXNumberLiteral EOF
+            // InternalPerspectiveDsl.g:7443:55: (iv_ruleXNumberLiteral= ruleXNumberLiteral EOF )
+            // InternalPerspectiveDsl.g:7444:2: iv_ruleXNumberLiteral= ruleXNumberLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXNumberLiteralRule()); 
@@ -20149,7 +20447,7 @@
 
 
     // $ANTLR start "ruleXNumberLiteral"
-    // InternalPerspectiveDsl.g:7349:1: ruleXNumberLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= ruleNumber ) ) ) ;
+    // InternalPerspectiveDsl.g:7450:1: ruleXNumberLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= ruleNumber ) ) ) ;
     public final EObject ruleXNumberLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -20160,14 +20458,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7355:2: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
-            // InternalPerspectiveDsl.g:7356:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            // InternalPerspectiveDsl.g:7456:2: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
+            // InternalPerspectiveDsl.g:7457:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
             {
-            // InternalPerspectiveDsl.g:7356:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
-            // InternalPerspectiveDsl.g:7357:3: () ( (lv_value_1_0= ruleNumber ) )
+            // InternalPerspectiveDsl.g:7457:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            // InternalPerspectiveDsl.g:7458:3: () ( (lv_value_1_0= ruleNumber ) )
             {
-            // InternalPerspectiveDsl.g:7357:3: ()
-            // InternalPerspectiveDsl.g:7358:4: 
+            // InternalPerspectiveDsl.g:7458:3: ()
+            // InternalPerspectiveDsl.g:7459:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -20179,11 +20477,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7364:3: ( (lv_value_1_0= ruleNumber ) )
-            // InternalPerspectiveDsl.g:7365:4: (lv_value_1_0= ruleNumber )
+            // InternalPerspectiveDsl.g:7465:3: ( (lv_value_1_0= ruleNumber ) )
+            // InternalPerspectiveDsl.g:7466:4: (lv_value_1_0= ruleNumber )
             {
-            // InternalPerspectiveDsl.g:7365:4: (lv_value_1_0= ruleNumber )
-            // InternalPerspectiveDsl.g:7366:5: lv_value_1_0= ruleNumber
+            // InternalPerspectiveDsl.g:7466:4: (lv_value_1_0= ruleNumber )
+            // InternalPerspectiveDsl.g:7467:5: lv_value_1_0= ruleNumber
             {
             if ( state.backtracking==0 ) {
 
@@ -20239,7 +20537,7 @@
 
 
     // $ANTLR start "entryRuleXStringLiteral"
-    // InternalPerspectiveDsl.g:7387:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
+    // InternalPerspectiveDsl.g:7488:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
     public final EObject entryRuleXStringLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -20247,8 +20545,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7387:55: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
-            // InternalPerspectiveDsl.g:7388:2: iv_ruleXStringLiteral= ruleXStringLiteral EOF
+            // InternalPerspectiveDsl.g:7488:55: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
+            // InternalPerspectiveDsl.g:7489:2: iv_ruleXStringLiteral= ruleXStringLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXStringLiteralRule()); 
@@ -20279,7 +20577,7 @@
 
 
     // $ANTLR start "ruleXStringLiteral"
-    // InternalPerspectiveDsl.g:7394:1: ruleXStringLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_STRING ) ) ) ;
+    // InternalPerspectiveDsl.g:7495:1: ruleXStringLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_STRING ) ) ) ;
     public final EObject ruleXStringLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -20289,14 +20587,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7400:2: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
-            // InternalPerspectiveDsl.g:7401:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            // InternalPerspectiveDsl.g:7501:2: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
+            // InternalPerspectiveDsl.g:7502:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
             {
-            // InternalPerspectiveDsl.g:7401:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
-            // InternalPerspectiveDsl.g:7402:3: () ( (lv_value_1_0= RULE_STRING ) )
+            // InternalPerspectiveDsl.g:7502:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            // InternalPerspectiveDsl.g:7503:3: () ( (lv_value_1_0= RULE_STRING ) )
             {
-            // InternalPerspectiveDsl.g:7402:3: ()
-            // InternalPerspectiveDsl.g:7403:4: 
+            // InternalPerspectiveDsl.g:7503:3: ()
+            // InternalPerspectiveDsl.g:7504:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -20308,11 +20606,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7409:3: ( (lv_value_1_0= RULE_STRING ) )
-            // InternalPerspectiveDsl.g:7410:4: (lv_value_1_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:7510:3: ( (lv_value_1_0= RULE_STRING ) )
+            // InternalPerspectiveDsl.g:7511:4: (lv_value_1_0= RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:7410:4: (lv_value_1_0= RULE_STRING )
-            // InternalPerspectiveDsl.g:7411:5: lv_value_1_0= RULE_STRING
+            // InternalPerspectiveDsl.g:7511:4: (lv_value_1_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:7512: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 ) {
@@ -20363,7 +20661,7 @@
 
 
     // $ANTLR start "entryRuleXTypeLiteral"
-    // InternalPerspectiveDsl.g:7431:1: entryRuleXTypeLiteral returns [EObject current=null] : iv_ruleXTypeLiteral= ruleXTypeLiteral EOF ;
+    // InternalPerspectiveDsl.g:7532:1: entryRuleXTypeLiteral returns [EObject current=null] : iv_ruleXTypeLiteral= ruleXTypeLiteral EOF ;
     public final EObject entryRuleXTypeLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -20371,8 +20669,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7431:53: (iv_ruleXTypeLiteral= ruleXTypeLiteral EOF )
-            // InternalPerspectiveDsl.g:7432:2: iv_ruleXTypeLiteral= ruleXTypeLiteral EOF
+            // InternalPerspectiveDsl.g:7532:53: (iv_ruleXTypeLiteral= ruleXTypeLiteral EOF )
+            // InternalPerspectiveDsl.g:7533:2: iv_ruleXTypeLiteral= ruleXTypeLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXTypeLiteralRule()); 
@@ -20403,7 +20701,7 @@
 
 
     // $ANTLR start "ruleXTypeLiteral"
-    // InternalPerspectiveDsl.g:7438:1: ruleXTypeLiteral returns [EObject current=null] : ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) ;
+    // InternalPerspectiveDsl.g:7539: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;
 
@@ -20417,14 +20715,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7444:2: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
-            // InternalPerspectiveDsl.g:7445:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            // InternalPerspectiveDsl.g:7545:2: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
+            // InternalPerspectiveDsl.g:7546:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
             {
-            // InternalPerspectiveDsl.g:7445:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
-            // InternalPerspectiveDsl.g:7446:3: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
+            // InternalPerspectiveDsl.g:7546:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            // InternalPerspectiveDsl.g:7547:3: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
             {
-            // InternalPerspectiveDsl.g:7446:3: ()
-            // InternalPerspectiveDsl.g:7447:4: 
+            // InternalPerspectiveDsl.g:7547:3: ()
+            // InternalPerspectiveDsl.g:7548:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -20436,23 +20734,23 @@
 
             }
 
-            otherlv_1=(Token)match(input,114,FOLLOW_72); if (state.failed) return current;
+            otherlv_1=(Token)match(input,116,FOLLOW_72); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,56,FOLLOW_4); if (state.failed) return current;
+            otherlv_2=(Token)match(input,58,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:7461:3: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:7462:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:7562:3: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:7563:4: ( ruleQualifiedName )
             {
-            // InternalPerspectiveDsl.g:7462:4: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:7463:5: ruleQualifiedName
+            // InternalPerspectiveDsl.g:7563:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:7564:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -20482,23 +20780,23 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7477:3: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
+            // InternalPerspectiveDsl.g:7578:3: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
             loop114:
             do {
                 int alt114=2;
                 int LA114_0 = input.LA(1);
 
-                if ( (LA114_0==61) ) {
+                if ( (LA114_0==63) ) {
                     alt114=1;
                 }
 
 
                 switch (alt114) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:7478:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    // InternalPerspectiveDsl.g:7579:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
             	    {
-            	    // InternalPerspectiveDsl.g:7478:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
-            	    // InternalPerspectiveDsl.g:7479:5: lv_arrayDimensions_4_0= ruleArrayBrackets
+            	    // InternalPerspectiveDsl.g:7579:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    // InternalPerspectiveDsl.g:7580:5: lv_arrayDimensions_4_0= ruleArrayBrackets
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -20535,7 +20833,7 @@
                 }
             } while (true);
 
-            otherlv_5=(Token)match(input,58,FOLLOW_2); if (state.failed) return current;
+            otherlv_5=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
@@ -20566,7 +20864,7 @@
 
 
     // $ANTLR start "entryRuleXThrowExpression"
-    // InternalPerspectiveDsl.g:7504:1: entryRuleXThrowExpression returns [EObject current=null] : iv_ruleXThrowExpression= ruleXThrowExpression EOF ;
+    // InternalPerspectiveDsl.g:7605:1: entryRuleXThrowExpression returns [EObject current=null] : iv_ruleXThrowExpression= ruleXThrowExpression EOF ;
     public final EObject entryRuleXThrowExpression() throws RecognitionException {
         EObject current = null;
 
@@ -20574,8 +20872,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7504:57: (iv_ruleXThrowExpression= ruleXThrowExpression EOF )
-            // InternalPerspectiveDsl.g:7505:2: iv_ruleXThrowExpression= ruleXThrowExpression EOF
+            // InternalPerspectiveDsl.g:7605:57: (iv_ruleXThrowExpression= ruleXThrowExpression EOF )
+            // InternalPerspectiveDsl.g:7606:2: iv_ruleXThrowExpression= ruleXThrowExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXThrowExpressionRule()); 
@@ -20606,7 +20904,7 @@
 
 
     // $ANTLR start "ruleXThrowExpression"
-    // InternalPerspectiveDsl.g:7511:1: ruleXThrowExpression returns [EObject current=null] : ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) ;
+    // InternalPerspectiveDsl.g:7612:1: ruleXThrowExpression returns [EObject current=null] : ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) ;
     public final EObject ruleXThrowExpression() throws RecognitionException {
         EObject current = null;
 
@@ -20618,14 +20916,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7517:2: ( ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) )
-            // InternalPerspectiveDsl.g:7518:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:7618:2: ( ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:7619:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
             {
-            // InternalPerspectiveDsl.g:7518:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
-            // InternalPerspectiveDsl.g:7519:3: () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7619:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:7620:3: () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) )
             {
-            // InternalPerspectiveDsl.g:7519:3: ()
-            // InternalPerspectiveDsl.g:7520:4: 
+            // InternalPerspectiveDsl.g:7620:3: ()
+            // InternalPerspectiveDsl.g:7621:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -20637,17 +20935,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,115,FOLLOW_33); if (state.failed) return current;
+            otherlv_1=(Token)match(input,117,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:7530:3: ( (lv_expression_2_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:7531:4: (lv_expression_2_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7631:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7632:4: (lv_expression_2_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:7531:4: (lv_expression_2_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:7532:5: lv_expression_2_0= ruleXExpression
+            // InternalPerspectiveDsl.g:7632:4: (lv_expression_2_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7633:5: lv_expression_2_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -20703,7 +21001,7 @@
 
 
     // $ANTLR start "entryRuleXReturnExpression"
-    // InternalPerspectiveDsl.g:7553:1: entryRuleXReturnExpression returns [EObject current=null] : iv_ruleXReturnExpression= ruleXReturnExpression EOF ;
+    // InternalPerspectiveDsl.g:7654:1: entryRuleXReturnExpression returns [EObject current=null] : iv_ruleXReturnExpression= ruleXReturnExpression EOF ;
     public final EObject entryRuleXReturnExpression() throws RecognitionException {
         EObject current = null;
 
@@ -20711,8 +21009,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7553:58: (iv_ruleXReturnExpression= ruleXReturnExpression EOF )
-            // InternalPerspectiveDsl.g:7554:2: iv_ruleXReturnExpression= ruleXReturnExpression EOF
+            // InternalPerspectiveDsl.g:7654:58: (iv_ruleXReturnExpression= ruleXReturnExpression EOF )
+            // InternalPerspectiveDsl.g:7655:2: iv_ruleXReturnExpression= ruleXReturnExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXReturnExpressionRule()); 
@@ -20743,7 +21041,7 @@
 
 
     // $ANTLR start "ruleXReturnExpression"
-    // InternalPerspectiveDsl.g:7560: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:7661: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;
 
@@ -20755,14 +21053,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7566: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:7567: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:7667: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:7668: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:7567: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:7568: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:7668: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:7669: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:7568:3: ()
-            // InternalPerspectiveDsl.g:7569:4: 
+            // InternalPerspectiveDsl.g:7669:3: ()
+            // InternalPerspectiveDsl.g:7670:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -20774,21 +21072,21 @@
 
             }
 
-            otherlv_1=(Token)match(input,116,FOLLOW_93); if (state.failed) return current;
+            otherlv_1=(Token)match(input,118,FOLLOW_93); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:7579: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:7680:3: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?
             int alt115=2;
             alt115 = dfa115.predict(input);
             switch (alt115) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7580: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:7681: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:7581:4: (lv_expression_2_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:7582:5: lv_expression_2_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:7682:4: (lv_expression_2_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:7683:5: lv_expression_2_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -20847,7 +21145,7 @@
 
 
     // $ANTLR start "entryRuleXTryCatchFinallyExpression"
-    // InternalPerspectiveDsl.g:7603:1: entryRuleXTryCatchFinallyExpression returns [EObject current=null] : iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF ;
+    // InternalPerspectiveDsl.g:7704:1: entryRuleXTryCatchFinallyExpression returns [EObject current=null] : iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF ;
     public final EObject entryRuleXTryCatchFinallyExpression() throws RecognitionException {
         EObject current = null;
 
@@ -20855,8 +21153,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7603:67: (iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF )
-            // InternalPerspectiveDsl.g:7604:2: iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF
+            // InternalPerspectiveDsl.g:7704:67: (iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF )
+            // InternalPerspectiveDsl.g:7705:2: iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionRule()); 
@@ -20887,7 +21185,7 @@
 
 
     // $ANTLR start "ruleXTryCatchFinallyExpression"
-    // InternalPerspectiveDsl.g:7610: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:7711: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;
 
@@ -20907,14 +21205,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7616: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:7617: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:7717: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:7718: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:7617: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:7618: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:7718: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:7719: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:7618:3: ()
-            // InternalPerspectiveDsl.g:7619:4: 
+            // InternalPerspectiveDsl.g:7719:3: ()
+            // InternalPerspectiveDsl.g:7720:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -20926,17 +21224,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,117,FOLLOW_33); if (state.failed) return current;
+            otherlv_1=(Token)match(input,119,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:7629:3: ( (lv_expression_2_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:7630:4: (lv_expression_2_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7730:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7731:4: (lv_expression_2_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:7630:4: (lv_expression_2_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:7631:5: lv_expression_2_0= ruleXExpression
+            // InternalPerspectiveDsl.g:7731:4: (lv_expression_2_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7732:5: lv_expression_2_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -20967,14 +21265,14 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7648: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:7749:3: ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
             int alt118=2;
             int LA118_0 = input.LA(1);
 
-            if ( (LA118_0==120) ) {
+            if ( (LA118_0==122) ) {
                 alt118=1;
             }
-            else if ( (LA118_0==118) ) {
+            else if ( (LA118_0==120) ) {
                 alt118=2;
             }
             else {
@@ -20986,19 +21284,19 @@
             }
             switch (alt118) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7649:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    // InternalPerspectiveDsl.g:7750:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
                     {
-                    // InternalPerspectiveDsl.g:7649:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
-                    // InternalPerspectiveDsl.g:7650:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    // InternalPerspectiveDsl.g:7750:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    // InternalPerspectiveDsl.g:7751:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
                     {
-                    // InternalPerspectiveDsl.g:7650:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+
+                    // InternalPerspectiveDsl.g:7751:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+
                     int cnt116=0;
                     loop116:
                     do {
                         int alt116=2;
                         int LA116_0 = input.LA(1);
 
-                        if ( (LA116_0==120) ) {
+                        if ( (LA116_0==122) ) {
                             int LA116_2 = input.LA(2);
 
                             if ( (synpred44_InternalPerspectiveDsl()) ) {
@@ -21011,10 +21309,10 @@
 
                         switch (alt116) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:7651:6: ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    // InternalPerspectiveDsl.g:7752:6: ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause )
                     	    {
-                    	    // InternalPerspectiveDsl.g:7652:6: (lv_catchClauses_3_0= ruleXCatchClause )
-                    	    // InternalPerspectiveDsl.g:7653:7: lv_catchClauses_3_0= ruleXCatchClause
+                    	    // InternalPerspectiveDsl.g:7753:6: (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    // InternalPerspectiveDsl.g:7754:7: lv_catchClauses_3_0= ruleXCatchClause
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -21056,11 +21354,11 @@
                         cnt116++;
                     } while (true);
 
-                    // InternalPerspectiveDsl.g:7670:5: ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    // InternalPerspectiveDsl.g:7771:5: ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
                     int alt117=2;
                     int LA117_0 = input.LA(1);
 
-                    if ( (LA117_0==118) ) {
+                    if ( (LA117_0==120) ) {
                         int LA117_1 = input.LA(2);
 
                         if ( (synpred45_InternalPerspectiveDsl()) ) {
@@ -21069,12 +21367,12 @@
                     }
                     switch (alt117) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:7671:6: ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            // InternalPerspectiveDsl.g:7772:6: ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) )
                             {
-                            // InternalPerspectiveDsl.g:7671:6: ( ( 'finally' )=>otherlv_4= 'finally' )
-                            // InternalPerspectiveDsl.g:7672:7: ( 'finally' )=>otherlv_4= 'finally'
+                            // InternalPerspectiveDsl.g:7772:6: ( ( 'finally' )=>otherlv_4= 'finally' )
+                            // InternalPerspectiveDsl.g:7773:7: ( 'finally' )=>otherlv_4= 'finally'
                             {
-                            otherlv_4=(Token)match(input,118,FOLLOW_33); if (state.failed) return current;
+                            otherlv_4=(Token)match(input,120,FOLLOW_33); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
@@ -21083,11 +21381,11 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:7678:6: ( (lv_finallyExpression_5_0= ruleXExpression ) )
-                            // InternalPerspectiveDsl.g:7679:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            // InternalPerspectiveDsl.g:7779:6: ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            // InternalPerspectiveDsl.g:7780:7: (lv_finallyExpression_5_0= ruleXExpression )
                             {
-                            // InternalPerspectiveDsl.g:7679:7: (lv_finallyExpression_5_0= ruleXExpression )
-                            // InternalPerspectiveDsl.g:7680:8: lv_finallyExpression_5_0= ruleXExpression
+                            // InternalPerspectiveDsl.g:7780:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            // InternalPerspectiveDsl.g:7781:8: lv_finallyExpression_5_0= ruleXExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -21131,22 +21429,22 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:7700:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    // InternalPerspectiveDsl.g:7801:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
                     {
-                    // InternalPerspectiveDsl.g:7700:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
-                    // InternalPerspectiveDsl.g:7701:5: otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:7801:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    // InternalPerspectiveDsl.g:7802:5: otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) )
                     {
-                    otherlv_6=(Token)match(input,118,FOLLOW_33); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,120,FOLLOW_33); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
                       				
                     }
-                    // InternalPerspectiveDsl.g:7705:5: ( (lv_finallyExpression_7_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:7706:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:7806:5: ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:7807:6: (lv_finallyExpression_7_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:7706:6: (lv_finallyExpression_7_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:7707:7: lv_finallyExpression_7_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:7807:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:7808:7: lv_finallyExpression_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -21211,7 +21509,7 @@
 
 
     // $ANTLR start "entryRuleXSynchronizedExpression"
-    // InternalPerspectiveDsl.g:7730:1: entryRuleXSynchronizedExpression returns [EObject current=null] : iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF ;
+    // InternalPerspectiveDsl.g:7831:1: entryRuleXSynchronizedExpression returns [EObject current=null] : iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF ;
     public final EObject entryRuleXSynchronizedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -21219,8 +21517,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7730:64: (iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF )
-            // InternalPerspectiveDsl.g:7731:2: iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF
+            // InternalPerspectiveDsl.g:7831:64: (iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF )
+            // InternalPerspectiveDsl.g:7832:2: iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXSynchronizedExpressionRule()); 
@@ -21251,7 +21549,7 @@
 
 
     // $ANTLR start "ruleXSynchronizedExpression"
-    // InternalPerspectiveDsl.g:7737: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:7838: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;
 
@@ -21267,20 +21565,20 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7743:2: ( ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) )
-            // InternalPerspectiveDsl.g:7744:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:7844:2: ( ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:7845:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
             {
-            // InternalPerspectiveDsl.g:7744:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
-            // InternalPerspectiveDsl.g:7745:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7845:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:7846:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) )
             {
-            // InternalPerspectiveDsl.g:7745:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) )
-            // InternalPerspectiveDsl.g:7746:4: ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            // InternalPerspectiveDsl.g:7846:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) )
+            // InternalPerspectiveDsl.g:7847:4: ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' )
             {
-            // InternalPerspectiveDsl.g:7753:4: ( () otherlv_1= 'synchronized' otherlv_2= '(' )
-            // InternalPerspectiveDsl.g:7754:5: () otherlv_1= 'synchronized' otherlv_2= '('
+            // InternalPerspectiveDsl.g:7854:4: ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            // InternalPerspectiveDsl.g:7855:5: () otherlv_1= 'synchronized' otherlv_2= '('
             {
-            // InternalPerspectiveDsl.g:7754:5: ()
-            // InternalPerspectiveDsl.g:7755:6: 
+            // InternalPerspectiveDsl.g:7855:5: ()
+            // InternalPerspectiveDsl.g:7856:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -21292,13 +21590,13 @@
 
             }
 
-            otherlv_1=(Token)match(input,119,FOLLOW_72); if (state.failed) return current;
+            otherlv_1=(Token)match(input,121,FOLLOW_72); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
               				
             }
-            otherlv_2=(Token)match(input,56,FOLLOW_33); if (state.failed) return current;
+            otherlv_2=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
@@ -21310,11 +21608,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7771:3: ( (lv_param_3_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:7772:4: (lv_param_3_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7872:3: ( (lv_param_3_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7873:4: (lv_param_3_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:7772:4: (lv_param_3_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:7773:5: lv_param_3_0= ruleXExpression
+            // InternalPerspectiveDsl.g:7873:4: (lv_param_3_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7874:5: lv_param_3_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -21345,17 +21643,17 @@
 
             }
 
-            otherlv_4=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
+            otherlv_4=(Token)match(input,60,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:7794:3: ( (lv_expression_5_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:7795:4: (lv_expression_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7895:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7896:4: (lv_expression_5_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:7795:4: (lv_expression_5_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:7796:5: lv_expression_5_0= ruleXExpression
+            // InternalPerspectiveDsl.g:7896:4: (lv_expression_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7897:5: lv_expression_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -21411,7 +21709,7 @@
 
 
     // $ANTLR start "entryRuleXCatchClause"
-    // InternalPerspectiveDsl.g:7817:1: entryRuleXCatchClause returns [EObject current=null] : iv_ruleXCatchClause= ruleXCatchClause EOF ;
+    // InternalPerspectiveDsl.g:7918:1: entryRuleXCatchClause returns [EObject current=null] : iv_ruleXCatchClause= ruleXCatchClause EOF ;
     public final EObject entryRuleXCatchClause() throws RecognitionException {
         EObject current = null;
 
@@ -21419,8 +21717,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7817:53: (iv_ruleXCatchClause= ruleXCatchClause EOF )
-            // InternalPerspectiveDsl.g:7818:2: iv_ruleXCatchClause= ruleXCatchClause EOF
+            // InternalPerspectiveDsl.g:7918:53: (iv_ruleXCatchClause= ruleXCatchClause EOF )
+            // InternalPerspectiveDsl.g:7919:2: iv_ruleXCatchClause= ruleXCatchClause EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCatchClauseRule()); 
@@ -21451,7 +21749,7 @@
 
 
     // $ANTLR start "ruleXCatchClause"
-    // InternalPerspectiveDsl.g:7824: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:7925: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;
 
@@ -21467,16 +21765,16 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7830:2: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
-            // InternalPerspectiveDsl.g:7831:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:7931:2: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:7932:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
             {
-            // InternalPerspectiveDsl.g:7831:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
-            // InternalPerspectiveDsl.g:7832:3: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7932:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:7933:3: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
             {
-            // InternalPerspectiveDsl.g:7832:3: ( ( 'catch' )=>otherlv_0= 'catch' )
-            // InternalPerspectiveDsl.g:7833:4: ( 'catch' )=>otherlv_0= 'catch'
+            // InternalPerspectiveDsl.g:7933:3: ( ( 'catch' )=>otherlv_0= 'catch' )
+            // InternalPerspectiveDsl.g:7934:4: ( 'catch' )=>otherlv_0= 'catch'
             {
-            otherlv_0=(Token)match(input,120,FOLLOW_72); if (state.failed) return current;
+            otherlv_0=(Token)match(input,122,FOLLOW_72); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               				newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
@@ -21485,17 +21783,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,56,FOLLOW_46); if (state.failed) return current;
+            otherlv_1=(Token)match(input,58,FOLLOW_46); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:7843:3: ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:7844:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            // InternalPerspectiveDsl.g:7944:3: ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:7945:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:7844:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
-            // InternalPerspectiveDsl.g:7845:5: lv_declaredParam_2_0= ruleFullJvmFormalParameter
+            // InternalPerspectiveDsl.g:7945:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            // InternalPerspectiveDsl.g:7946:5: lv_declaredParam_2_0= ruleFullJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
 
@@ -21526,17 +21824,17 @@
 
             }
 
-            otherlv_3=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
+            otherlv_3=(Token)match(input,60,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
               		
             }
-            // InternalPerspectiveDsl.g:7866:3: ( (lv_expression_4_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:7867:4: (lv_expression_4_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7967:3: ( (lv_expression_4_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7968:4: (lv_expression_4_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:7867:4: (lv_expression_4_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:7868:5: lv_expression_4_0= ruleXExpression
+            // InternalPerspectiveDsl.g:7968:4: (lv_expression_4_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7969:5: lv_expression_4_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -21592,7 +21890,7 @@
 
 
     // $ANTLR start "entryRuleQualifiedName"
-    // InternalPerspectiveDsl.g:7889:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
+    // InternalPerspectiveDsl.g:7990:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
     public final String entryRuleQualifiedName() throws RecognitionException {
         String current = null;
 
@@ -21600,8 +21898,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7889:53: (iv_ruleQualifiedName= ruleQualifiedName EOF )
-            // InternalPerspectiveDsl.g:7890:2: iv_ruleQualifiedName= ruleQualifiedName EOF
+            // InternalPerspectiveDsl.g:7990:53: (iv_ruleQualifiedName= ruleQualifiedName EOF )
+            // InternalPerspectiveDsl.g:7991:2: iv_ruleQualifiedName= ruleQualifiedName EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getQualifiedNameRule()); 
@@ -21632,7 +21930,7 @@
 
 
     // $ANTLR start "ruleQualifiedName"
-    // InternalPerspectiveDsl.g:7896:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) ;
+    // InternalPerspectiveDsl.g:7997: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();
 
@@ -21646,11 +21944,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7902:2: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
-            // InternalPerspectiveDsl.g:7903:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            // InternalPerspectiveDsl.g:8003:2: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
+            // InternalPerspectiveDsl.g:8004:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
             {
-            // InternalPerspectiveDsl.g:7903:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
-            // InternalPerspectiveDsl.g:7904:3: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            // InternalPerspectiveDsl.g:8004:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            // InternalPerspectiveDsl.g:8005:3: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
             {
             if ( state.backtracking==0 ) {
 
@@ -21672,13 +21970,13 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:7914:3: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            // InternalPerspectiveDsl.g:8015:3: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
             loop119:
             do {
                 int alt119=2;
                 int LA119_0 = input.LA(1);
 
-                if ( (LA119_0==93) ) {
+                if ( (LA119_0==95) ) {
                     int LA119_2 = input.LA(2);
 
                     if ( (LA119_2==RULE_ID) ) {
@@ -21697,12 +21995,12 @@
 
                 switch (alt119) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:7915:4: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
+            	    // InternalPerspectiveDsl.g:8016:4: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
             	    {
-            	    // InternalPerspectiveDsl.g:7915:4: ( ( '.' )=>kw= '.' )
-            	    // InternalPerspectiveDsl.g:7916:5: ( '.' )=>kw= '.'
+            	    // InternalPerspectiveDsl.g:8016:4: ( ( '.' )=>kw= '.' )
+            	    // InternalPerspectiveDsl.g:8017:5: ( '.' )=>kw= '.'
             	    {
-            	    kw=(Token)match(input,93,FOLLOW_4); if (state.failed) return current;
+            	    kw=(Token)match(input,95,FOLLOW_4); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      					current.merge(kw);
@@ -21766,7 +22064,7 @@
 
 
     // $ANTLR start "entryRuleNumber"
-    // InternalPerspectiveDsl.g:7938:1: entryRuleNumber returns [String current=null] : iv_ruleNumber= ruleNumber EOF ;
+    // InternalPerspectiveDsl.g:8039:1: entryRuleNumber returns [String current=null] : iv_ruleNumber= ruleNumber EOF ;
     public final String entryRuleNumber() throws RecognitionException {
         String current = null;
 
@@ -21777,8 +22075,8 @@
         	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
 
         try {
-            // InternalPerspectiveDsl.g:7940:2: (iv_ruleNumber= ruleNumber EOF )
-            // InternalPerspectiveDsl.g:7941:2: iv_ruleNumber= ruleNumber EOF
+            // InternalPerspectiveDsl.g:8041:2: (iv_ruleNumber= ruleNumber EOF )
+            // InternalPerspectiveDsl.g:8042:2: iv_ruleNumber= ruleNumber EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNumberRule()); 
@@ -21812,7 +22110,7 @@
 
 
     // $ANTLR start "ruleNumber"
-    // InternalPerspectiveDsl.g:7950: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:8051: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();
 
@@ -21828,10 +22126,10 @@
         	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
 
         try {
-            // InternalPerspectiveDsl.g:7957: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:7958: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:8058: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:8059: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:7958: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:8059:2: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
             int alt123=2;
             int LA123_0 = input.LA(1);
 
@@ -21850,7 +22148,7 @@
             }
             switch (alt123) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7959:3: this_HEX_0= RULE_HEX
+                    // InternalPerspectiveDsl.g:8060: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 ) {
@@ -21867,12 +22165,12 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:7967:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    // InternalPerspectiveDsl.g:8068:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
                     {
-                    // InternalPerspectiveDsl.g:7967:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
-                    // InternalPerspectiveDsl.g:7968:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    // InternalPerspectiveDsl.g:8068:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    // InternalPerspectiveDsl.g:8069:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
                     {
-                    // InternalPerspectiveDsl.g:7968:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL )
+                    // InternalPerspectiveDsl.g:8069:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL )
                     int alt120=2;
                     int LA120_0 = input.LA(1);
 
@@ -21891,7 +22189,7 @@
                     }
                     switch (alt120) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:7969:5: this_INT_1= RULE_INT
+                            // InternalPerspectiveDsl.g:8070:5: this_INT_1= RULE_INT
                             {
                             this_INT_1=(Token)match(input,RULE_INT,FOLLOW_96); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
@@ -21908,7 +22206,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:7977:5: this_DECIMAL_2= RULE_DECIMAL
+                            // InternalPerspectiveDsl.g:8078:5: this_DECIMAL_2= RULE_DECIMAL
                             {
                             this_DECIMAL_2=(Token)match(input,RULE_DECIMAL,FOLLOW_96); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
@@ -21927,11 +22225,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:7985:4: (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    // InternalPerspectiveDsl.g:8086:4: (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
                     int alt122=2;
                     int LA122_0 = input.LA(1);
 
-                    if ( (LA122_0==93) ) {
+                    if ( (LA122_0==95) ) {
                         int LA122_1 = input.LA(2);
 
                         if ( (LA122_1==RULE_INT||LA122_1==RULE_DECIMAL) ) {
@@ -21940,16 +22238,16 @@
                     }
                     switch (alt122) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:7986:5: kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            // InternalPerspectiveDsl.g:8087:5: kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
                             {
-                            kw=(Token)match(input,93,FOLLOW_97); if (state.failed) return current;
+                            kw=(Token)match(input,95,FOLLOW_97); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(kw);
                               					newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0());
                               				
                             }
-                            // InternalPerspectiveDsl.g:7991:5: (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            // InternalPerspectiveDsl.g:8092:5: (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
                             int alt121=2;
                             int LA121_0 = input.LA(1);
 
@@ -21968,7 +22266,7 @@
                             }
                             switch (alt121) {
                                 case 1 :
-                                    // InternalPerspectiveDsl.g:7992:6: this_INT_4= RULE_INT
+                                    // InternalPerspectiveDsl.g:8093: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 ) {
@@ -21985,7 +22283,7 @@
                                     }
                                     break;
                                 case 2 :
-                                    // InternalPerspectiveDsl.g:8000:6: this_DECIMAL_5= RULE_DECIMAL
+                                    // InternalPerspectiveDsl.g:8101: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 ) {
@@ -22044,7 +22342,7 @@
 
 
     // $ANTLR start "entryRuleJvmTypeReference"
-    // InternalPerspectiveDsl.g:8017:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
+    // InternalPerspectiveDsl.g:8118:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
     public final EObject entryRuleJvmTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -22052,8 +22350,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8017:57: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
-            // InternalPerspectiveDsl.g:8018:2: iv_ruleJvmTypeReference= ruleJvmTypeReference EOF
+            // InternalPerspectiveDsl.g:8118:57: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
+            // InternalPerspectiveDsl.g:8119:2: iv_ruleJvmTypeReference= ruleJvmTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmTypeReferenceRule()); 
@@ -22084,7 +22382,7 @@
 
 
     // $ANTLR start "ruleJvmTypeReference"
-    // InternalPerspectiveDsl.g:8024:1: ruleJvmTypeReference returns [EObject current=null] : ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) ;
+    // InternalPerspectiveDsl.g:8125: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;
 
@@ -22097,17 +22395,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8030:2: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
-            // InternalPerspectiveDsl.g:8031:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            // InternalPerspectiveDsl.g:8131:2: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
+            // InternalPerspectiveDsl.g:8132:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
             {
-            // InternalPerspectiveDsl.g:8031:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            // InternalPerspectiveDsl.g:8132:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
             int alt125=2;
             int LA125_0 = input.LA(1);
 
             if ( (LA125_0==RULE_ID) ) {
                 alt125=1;
             }
-            else if ( (LA125_0==56||LA125_0==81) ) {
+            else if ( (LA125_0==58||LA125_0==83) ) {
                 alt125=2;
             }
             else {
@@ -22119,10 +22417,10 @@
             }
             switch (alt125) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8032:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    // InternalPerspectiveDsl.g:8133:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
                     {
-                    // InternalPerspectiveDsl.g:8032:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
-                    // InternalPerspectiveDsl.g:8033:4: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    // InternalPerspectiveDsl.g:8133:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    // InternalPerspectiveDsl.g:8134:4: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
                     {
                     if ( state.backtracking==0 ) {
 
@@ -22140,16 +22438,16 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalPerspectiveDsl.g:8041:4: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    // InternalPerspectiveDsl.g:8142:4: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
                     loop124:
                     do {
                         int alt124=2;
                         int LA124_0 = input.LA(1);
 
-                        if ( (LA124_0==61) ) {
+                        if ( (LA124_0==63) ) {
                             int LA124_2 = input.LA(2);
 
-                            if ( (LA124_2==62) ) {
+                            if ( (LA124_2==64) ) {
                                 int LA124_3 = input.LA(3);
 
                                 if ( (synpred49_InternalPerspectiveDsl()) ) {
@@ -22165,13 +22463,13 @@
 
                         switch (alt124) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:8042:5: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
+                    	    // InternalPerspectiveDsl.g:8143:5: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
                     	    {
-                    	    // InternalPerspectiveDsl.g:8048:5: ( () ruleArrayBrackets )
-                    	    // InternalPerspectiveDsl.g:8049:6: () ruleArrayBrackets
+                    	    // InternalPerspectiveDsl.g:8149:5: ( () ruleArrayBrackets )
+                    	    // InternalPerspectiveDsl.g:8150:6: () ruleArrayBrackets
                     	    {
-                    	    // InternalPerspectiveDsl.g:8049:6: ()
-                    	    // InternalPerspectiveDsl.g:8050:7: 
+                    	    // InternalPerspectiveDsl.g:8150:6: ()
+                    	    // InternalPerspectiveDsl.g:8151:7: 
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -22217,7 +22515,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:8067:3: this_XFunctionTypeRef_3= ruleXFunctionTypeRef
+                    // InternalPerspectiveDsl.g:8168:3: this_XFunctionTypeRef_3= ruleXFunctionTypeRef
                     {
                     if ( state.backtracking==0 ) {
 
@@ -22263,7 +22561,7 @@
 
 
     // $ANTLR start "entryRuleArrayBrackets"
-    // InternalPerspectiveDsl.g:8079:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
+    // InternalPerspectiveDsl.g:8180:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
     public final String entryRuleArrayBrackets() throws RecognitionException {
         String current = null;
 
@@ -22271,8 +22569,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8079:53: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
-            // InternalPerspectiveDsl.g:8080:2: iv_ruleArrayBrackets= ruleArrayBrackets EOF
+            // InternalPerspectiveDsl.g:8180:53: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
+            // InternalPerspectiveDsl.g:8181:2: iv_ruleArrayBrackets= ruleArrayBrackets EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getArrayBracketsRule()); 
@@ -22303,7 +22601,7 @@
 
 
     // $ANTLR start "ruleArrayBrackets"
-    // InternalPerspectiveDsl.g:8086:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
+    // InternalPerspectiveDsl.g:8187:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
     public final AntlrDatatypeRuleToken ruleArrayBrackets() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -22313,20 +22611,20 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8092:2: ( (kw= '[' kw= ']' ) )
-            // InternalPerspectiveDsl.g:8093:2: (kw= '[' kw= ']' )
+            // InternalPerspectiveDsl.g:8193:2: ( (kw= '[' kw= ']' ) )
+            // InternalPerspectiveDsl.g:8194:2: (kw= '[' kw= ']' )
             {
-            // InternalPerspectiveDsl.g:8093:2: (kw= '[' kw= ']' )
-            // InternalPerspectiveDsl.g:8094:3: kw= '[' kw= ']'
+            // InternalPerspectiveDsl.g:8194:2: (kw= '[' kw= ']' )
+            // InternalPerspectiveDsl.g:8195:3: kw= '[' kw= ']'
             {
-            kw=(Token)match(input,61,FOLLOW_69); if (state.failed) return current;
+            kw=(Token)match(input,63,FOLLOW_69); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			current.merge(kw);
               			newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0());
               		
             }
-            kw=(Token)match(input,62,FOLLOW_2); if (state.failed) return current;
+            kw=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			current.merge(kw);
@@ -22358,7 +22656,7 @@
 
 
     // $ANTLR start "entryRuleXFunctionTypeRef"
-    // InternalPerspectiveDsl.g:8108:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
+    // InternalPerspectiveDsl.g:8209:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
     public final EObject entryRuleXFunctionTypeRef() throws RecognitionException {
         EObject current = null;
 
@@ -22366,8 +22664,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8108:57: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
-            // InternalPerspectiveDsl.g:8109:2: iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF
+            // InternalPerspectiveDsl.g:8209:57: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
+            // InternalPerspectiveDsl.g:8210:2: iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXFunctionTypeRefRule()); 
@@ -22398,7 +22696,7 @@
 
 
     // $ANTLR start "ruleXFunctionTypeRef"
-    // InternalPerspectiveDsl.g:8115: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:8216: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;
 
@@ -22417,45 +22715,45 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8121: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:8122: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:8222: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:8223: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:8122: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:8123: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:8223: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:8224: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:8123:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
+            // InternalPerspectiveDsl.g:8224:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
             int alt128=2;
             int LA128_0 = input.LA(1);
 
-            if ( (LA128_0==56) ) {
+            if ( (LA128_0==58) ) {
                 alt128=1;
             }
             switch (alt128) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8124:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
+                    // InternalPerspectiveDsl.g:8225:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
                     {
-                    otherlv_0=(Token)match(input,56,FOLLOW_98); if (state.failed) return current;
+                    otherlv_0=(Token)match(input,58,FOLLOW_98); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
                       			
                     }
-                    // InternalPerspectiveDsl.g:8128:4: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
+                    // InternalPerspectiveDsl.g:8229:4: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
                     int alt127=2;
                     int LA127_0 = input.LA(1);
 
-                    if ( (LA127_0==RULE_ID||LA127_0==56||LA127_0==81) ) {
+                    if ( (LA127_0==RULE_ID||LA127_0==58||LA127_0==83) ) {
                         alt127=1;
                     }
                     switch (alt127) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:8129:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            // InternalPerspectiveDsl.g:8230:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
                             {
-                            // InternalPerspectiveDsl.g:8129:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
-                            // InternalPerspectiveDsl.g:8130:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            // InternalPerspectiveDsl.g:8230:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
+                            // InternalPerspectiveDsl.g:8231:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
                             {
-                            // InternalPerspectiveDsl.g:8130:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
-                            // InternalPerspectiveDsl.g:8131:7: lv_paramTypes_1_0= ruleJvmTypeReference
+                            // InternalPerspectiveDsl.g:8231:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            // InternalPerspectiveDsl.g:8232:7: lv_paramTypes_1_0= ruleJvmTypeReference
                             {
                             if ( state.backtracking==0 ) {
 
@@ -22486,32 +22784,32 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:8148:5: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            // InternalPerspectiveDsl.g:8249:5: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
                             loop126:
                             do {
                                 int alt126=2;
                                 int LA126_0 = input.LA(1);
 
-                                if ( (LA126_0==57) ) {
+                                if ( (LA126_0==59) ) {
                                     alt126=1;
                                 }
 
 
                                 switch (alt126) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:8149:6: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    // InternalPerspectiveDsl.g:8250:6: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
                             	    {
-                            	    otherlv_2=(Token)match(input,57,FOLLOW_46); if (state.failed) return current;
+                            	    otherlv_2=(Token)match(input,59,FOLLOW_46); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
                             	      					
                             	    }
-                            	    // InternalPerspectiveDsl.g:8153:6: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
-                            	    // InternalPerspectiveDsl.g:8154:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    // InternalPerspectiveDsl.g:8254:6: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    // InternalPerspectiveDsl.g:8255:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
                             	    {
-                            	    // InternalPerspectiveDsl.g:8154:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
-                            	    // InternalPerspectiveDsl.g:8155:8: lv_paramTypes_3_0= ruleJvmTypeReference
+                            	    // InternalPerspectiveDsl.g:8255:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    // InternalPerspectiveDsl.g:8256:8: lv_paramTypes_3_0= ruleJvmTypeReference
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -22557,7 +22855,7 @@
 
                     }
 
-                    otherlv_4=(Token)match(input,58,FOLLOW_99); if (state.failed) return current;
+                    otherlv_4=(Token)match(input,60,FOLLOW_99); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
@@ -22569,17 +22867,17 @@
 
             }
 
-            otherlv_5=(Token)match(input,81,FOLLOW_46); if (state.failed) return current;
+            otherlv_5=(Token)match(input,83,FOLLOW_46); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:8183:3: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:8184:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8284:3: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8285:4: (lv_returnType_6_0= ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:8184:4: (lv_returnType_6_0= ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:8185:5: lv_returnType_6_0= ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:8285:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8286:5: lv_returnType_6_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -22635,7 +22933,7 @@
 
 
     // $ANTLR start "entryRuleJvmParameterizedTypeReference"
-    // InternalPerspectiveDsl.g:8206:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
+    // InternalPerspectiveDsl.g:8307:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
     public final EObject entryRuleJvmParameterizedTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -22643,8 +22941,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8206:70: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
-            // InternalPerspectiveDsl.g:8207:2: iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF
+            // InternalPerspectiveDsl.g:8307:70: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
+            // InternalPerspectiveDsl.g:8308:2: iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
@@ -22675,7 +22973,7 @@
 
 
     // $ANTLR start "ruleJvmParameterizedTypeReference"
-    // InternalPerspectiveDsl.g:8213: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:8314: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;
 
@@ -22699,17 +22997,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8219: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:8220: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:8320: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:8321: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:8220: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:8221: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:8321: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:8322: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:8221:3: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:8222:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:8322:3: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:8323:4: ( ruleQualifiedName )
             {
-            // InternalPerspectiveDsl.g:8222:4: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:8223:5: ruleQualifiedName
+            // InternalPerspectiveDsl.g:8323:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:8324:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -22739,17 +23037,17 @@
 
             }
 
-            // InternalPerspectiveDsl.g:8237: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:8338:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
             int alt133=2;
             alt133 = dfa133.predict(input);
             switch (alt133) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8238: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:8339: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:8238:4: ( ( '<' )=>otherlv_1= '<' )
-                    // InternalPerspectiveDsl.g:8239:5: ( '<' )=>otherlv_1= '<'
+                    // InternalPerspectiveDsl.g:8339:4: ( ( '<' )=>otherlv_1= '<' )
+                    // InternalPerspectiveDsl.g:8340:5: ( '<' )=>otherlv_1= '<'
                     {
-                    otherlv_1=(Token)match(input,68,FOLLOW_58); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,70,FOLLOW_58); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
@@ -22758,11 +23056,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:8245:4: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
-                    // InternalPerspectiveDsl.g:8246:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalPerspectiveDsl.g:8346:4: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalPerspectiveDsl.g:8347:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:8246:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
-                    // InternalPerspectiveDsl.g:8247:6: lv_arguments_2_0= ruleJvmArgumentTypeReference
+                    // InternalPerspectiveDsl.g:8347:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalPerspectiveDsl.g:8348:6: lv_arguments_2_0= ruleJvmArgumentTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -22793,32 +23091,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:8264:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    // InternalPerspectiveDsl.g:8365:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
                     loop129:
                     do {
                         int alt129=2;
                         int LA129_0 = input.LA(1);
 
-                        if ( (LA129_0==57) ) {
+                        if ( (LA129_0==59) ) {
                             alt129=1;
                         }
 
 
                         switch (alt129) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:8265:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalPerspectiveDsl.g:8366:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
                     	    {
-                    	    otherlv_3=(Token)match(input,57,FOLLOW_58); if (state.failed) return current;
+                    	    otherlv_3=(Token)match(input,59,FOLLOW_58); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
                     	      				
                     	    }
-                    	    // InternalPerspectiveDsl.g:8269:5: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
-                    	    // InternalPerspectiveDsl.g:8270:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalPerspectiveDsl.g:8370:5: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalPerspectiveDsl.g:8371:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
                     	    {
-                    	    // InternalPerspectiveDsl.g:8270:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
-                    	    // InternalPerspectiveDsl.g:8271:7: lv_arguments_4_0= ruleJvmArgumentTypeReference
+                    	    // InternalPerspectiveDsl.g:8371:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalPerspectiveDsl.g:8372:7: lv_arguments_4_0= ruleJvmArgumentTypeReference
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -22858,19 +23156,19 @@
                         }
                     } while (true);
 
-                    otherlv_5=(Token)match(input,69,FOLLOW_96); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,71,FOLLOW_96); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
                       			
                     }
-                    // InternalPerspectiveDsl.g:8293:4: ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+                    // InternalPerspectiveDsl.g:8394:4: ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
                     loop132:
                     do {
                         int alt132=2;
                         int LA132_0 = input.LA(1);
 
-                        if ( (LA132_0==93) ) {
+                        if ( (LA132_0==95) ) {
                             int LA132_2 = input.LA(2);
 
                             if ( (LA132_2==RULE_ID) ) {
@@ -22889,16 +23187,16 @@
 
                         switch (alt132) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:8294:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    // InternalPerspectiveDsl.g:8395:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
                     	    {
-                    	    // InternalPerspectiveDsl.g:8294:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) )
-                    	    // InternalPerspectiveDsl.g:8295:6: ( ( () '.' ) )=> ( () otherlv_7= '.' )
+                    	    // InternalPerspectiveDsl.g:8395:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) )
+                    	    // InternalPerspectiveDsl.g:8396:6: ( ( () '.' ) )=> ( () otherlv_7= '.' )
                     	    {
-                    	    // InternalPerspectiveDsl.g:8301:6: ( () otherlv_7= '.' )
-                    	    // InternalPerspectiveDsl.g:8302:7: () otherlv_7= '.'
+                    	    // InternalPerspectiveDsl.g:8402:6: ( () otherlv_7= '.' )
+                    	    // InternalPerspectiveDsl.g:8403:7: () otherlv_7= '.'
                     	    {
-                    	    // InternalPerspectiveDsl.g:8302:7: ()
-                    	    // InternalPerspectiveDsl.g:8303:8: 
+                    	    // InternalPerspectiveDsl.g:8403:7: ()
+                    	    // InternalPerspectiveDsl.g:8404:8: 
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -22910,7 +23208,7 @@
 
                     	    }
 
-                    	    otherlv_7=(Token)match(input,93,FOLLOW_4); if (state.failed) return current;
+                    	    otherlv_7=(Token)match(input,95,FOLLOW_4); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      							newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
@@ -22922,11 +23220,11 @@
 
                     	    }
 
-                    	    // InternalPerspectiveDsl.g:8315:5: ( ( ruleValidID ) )
-                    	    // InternalPerspectiveDsl.g:8316:6: ( ruleValidID )
+                    	    // InternalPerspectiveDsl.g:8416:5: ( ( ruleValidID ) )
+                    	    // InternalPerspectiveDsl.g:8417:6: ( ruleValidID )
                     	    {
-                    	    // InternalPerspectiveDsl.g:8316:6: ( ruleValidID )
-                    	    // InternalPerspectiveDsl.g:8317:7: ruleValidID
+                    	    // InternalPerspectiveDsl.g:8417:6: ( ruleValidID )
+                    	    // InternalPerspectiveDsl.g:8418:7: ruleValidID
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -22956,17 +23254,17 @@
 
                     	    }
 
-                    	    // InternalPerspectiveDsl.g:8331:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    // InternalPerspectiveDsl.g:8432:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
                     	    int alt131=2;
                     	    alt131 = dfa131.predict(input);
                     	    switch (alt131) {
                     	        case 1 :
-                    	            // InternalPerspectiveDsl.g:8332:6: ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>'
+                    	            // InternalPerspectiveDsl.g:8433:6: ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>'
                     	            {
-                    	            // InternalPerspectiveDsl.g:8332:6: ( ( '<' )=>otherlv_9= '<' )
-                    	            // InternalPerspectiveDsl.g:8333:7: ( '<' )=>otherlv_9= '<'
+                    	            // InternalPerspectiveDsl.g:8433:6: ( ( '<' )=>otherlv_9= '<' )
+                    	            // InternalPerspectiveDsl.g:8434:7: ( '<' )=>otherlv_9= '<'
                     	            {
-                    	            otherlv_9=(Token)match(input,68,FOLLOW_58); if (state.failed) return current;
+                    	            otherlv_9=(Token)match(input,70,FOLLOW_58); if (state.failed) return current;
                     	            if ( state.backtracking==0 ) {
 
                     	              							newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
@@ -22975,11 +23273,11 @@
 
                     	            }
 
-                    	            // InternalPerspectiveDsl.g:8339:6: ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) )
-                    	            // InternalPerspectiveDsl.g:8340:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            // InternalPerspectiveDsl.g:8440:6: ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) )
+                    	            // InternalPerspectiveDsl.g:8441:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
                     	            {
-                    	            // InternalPerspectiveDsl.g:8340:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
-                    	            // InternalPerspectiveDsl.g:8341:8: lv_arguments_10_0= ruleJvmArgumentTypeReference
+                    	            // InternalPerspectiveDsl.g:8441:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            // InternalPerspectiveDsl.g:8442:8: lv_arguments_10_0= ruleJvmArgumentTypeReference
                     	            {
                     	            if ( state.backtracking==0 ) {
 
@@ -23010,32 +23308,32 @@
 
                     	            }
 
-                    	            // InternalPerspectiveDsl.g:8358:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )*
+                    	            // InternalPerspectiveDsl.g:8459:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )*
                     	            loop130:
                     	            do {
                     	                int alt130=2;
                     	                int LA130_0 = input.LA(1);
 
-                    	                if ( (LA130_0==57) ) {
+                    	                if ( (LA130_0==59) ) {
                     	                    alt130=1;
                     	                }
 
 
                     	                switch (alt130) {
                     	            	case 1 :
-                    	            	    // InternalPerspectiveDsl.g:8359:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    // InternalPerspectiveDsl.g:8460:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
                     	            	    {
-                    	            	    otherlv_11=(Token)match(input,57,FOLLOW_58); if (state.failed) return current;
+                    	            	    otherlv_11=(Token)match(input,59,FOLLOW_58); if (state.failed) return current;
                     	            	    if ( state.backtracking==0 ) {
 
                     	            	      							newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
                     	            	      						
                     	            	    }
-                    	            	    // InternalPerspectiveDsl.g:8363:7: ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
-                    	            	    // InternalPerspectiveDsl.g:8364:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    // InternalPerspectiveDsl.g:8464:7: ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    // InternalPerspectiveDsl.g:8465:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
                     	            	    {
-                    	            	    // InternalPerspectiveDsl.g:8364:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
-                    	            	    // InternalPerspectiveDsl.g:8365:9: lv_arguments_12_0= ruleJvmArgumentTypeReference
+                    	            	    // InternalPerspectiveDsl.g:8465:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    // InternalPerspectiveDsl.g:8466:9: lv_arguments_12_0= ruleJvmArgumentTypeReference
                     	            	    {
                     	            	    if ( state.backtracking==0 ) {
 
@@ -23075,7 +23373,7 @@
                     	                }
                     	            } while (true);
 
-                    	            otherlv_13=(Token)match(input,69,FOLLOW_96); if (state.failed) return current;
+                    	            otherlv_13=(Token)match(input,71,FOLLOW_96); if (state.failed) return current;
                     	            if ( state.backtracking==0 ) {
 
                     	              						newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
@@ -23127,7 +23425,7 @@
 
 
     // $ANTLR start "entryRuleJvmArgumentTypeReference"
-    // InternalPerspectiveDsl.g:8394:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
+    // InternalPerspectiveDsl.g:8495:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
     public final EObject entryRuleJvmArgumentTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -23135,8 +23433,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8394:65: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
-            // InternalPerspectiveDsl.g:8395:2: iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF
+            // InternalPerspectiveDsl.g:8495:65: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
+            // InternalPerspectiveDsl.g:8496:2: iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule()); 
@@ -23167,7 +23465,7 @@
 
 
     // $ANTLR start "ruleJvmArgumentTypeReference"
-    // InternalPerspectiveDsl.g:8401:1: ruleJvmArgumentTypeReference returns [EObject current=null] : (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) ;
+    // InternalPerspectiveDsl.g:8502:1: ruleJvmArgumentTypeReference returns [EObject current=null] : (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) ;
     public final EObject ruleJvmArgumentTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -23180,17 +23478,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8407:2: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
-            // InternalPerspectiveDsl.g:8408:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            // InternalPerspectiveDsl.g:8508:2: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
+            // InternalPerspectiveDsl.g:8509:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
             {
-            // InternalPerspectiveDsl.g:8408:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            // InternalPerspectiveDsl.g:8509:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
             int alt134=2;
             int LA134_0 = input.LA(1);
 
-            if ( (LA134_0==RULE_ID||LA134_0==56||LA134_0==81) ) {
+            if ( (LA134_0==RULE_ID||LA134_0==58||LA134_0==83) ) {
                 alt134=1;
             }
-            else if ( (LA134_0==121) ) {
+            else if ( (LA134_0==123) ) {
                 alt134=2;
             }
             else {
@@ -23202,7 +23500,7 @@
             }
             switch (alt134) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8409:3: this_JvmTypeReference_0= ruleJvmTypeReference
+                    // InternalPerspectiveDsl.g:8510:3: this_JvmTypeReference_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -23224,7 +23522,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:8418:3: this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference
+                    // InternalPerspectiveDsl.g:8519:3: this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -23270,7 +23568,7 @@
 
 
     // $ANTLR start "entryRuleJvmWildcardTypeReference"
-    // InternalPerspectiveDsl.g:8430:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
+    // InternalPerspectiveDsl.g:8531:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
     public final EObject entryRuleJvmWildcardTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -23278,8 +23576,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8430:65: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
-            // InternalPerspectiveDsl.g:8431:2: iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF
+            // InternalPerspectiveDsl.g:8531:65: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
+            // InternalPerspectiveDsl.g:8532:2: iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule()); 
@@ -23310,7 +23608,7 @@
 
 
     // $ANTLR start "ruleJvmWildcardTypeReference"
-    // InternalPerspectiveDsl.g:8437: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:8538: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;
 
@@ -23328,14 +23626,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8443: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:8444: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:8544: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:8545: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:8444: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:8445: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:8545: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:8546: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:8445:3: ()
-            // InternalPerspectiveDsl.g:8446:4: 
+            // InternalPerspectiveDsl.g:8546:3: ()
+            // InternalPerspectiveDsl.g:8547:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -23347,34 +23645,34 @@
 
             }
 
-            otherlv_1=(Token)match(input,121,FOLLOW_102); if (state.failed) return current;
+            otherlv_1=(Token)match(input,123,FOLLOW_102); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:8456:3: ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+            // InternalPerspectiveDsl.g:8557:3: ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
             int alt137=3;
             int LA137_0 = input.LA(1);
 
-            if ( (LA137_0==108) ) {
+            if ( (LA137_0==110) ) {
                 alt137=1;
             }
-            else if ( (LA137_0==109) ) {
+            else if ( (LA137_0==111) ) {
                 alt137=2;
             }
             switch (alt137) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8457:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    // InternalPerspectiveDsl.g:8558:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
                     {
-                    // InternalPerspectiveDsl.g:8457:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
-                    // InternalPerspectiveDsl.g:8458:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    // InternalPerspectiveDsl.g:8558:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    // InternalPerspectiveDsl.g:8559:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
                     {
-                    // InternalPerspectiveDsl.g:8458:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
-                    // InternalPerspectiveDsl.g:8459:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    // InternalPerspectiveDsl.g:8559:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
+                    // InternalPerspectiveDsl.g:8560:6: (lv_constraints_2_0= ruleJvmUpperBound )
                     {
-                    // InternalPerspectiveDsl.g:8459:6: (lv_constraints_2_0= ruleJvmUpperBound )
-                    // InternalPerspectiveDsl.g:8460:7: lv_constraints_2_0= ruleJvmUpperBound
+                    // InternalPerspectiveDsl.g:8560:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    // InternalPerspectiveDsl.g:8561:7: lv_constraints_2_0= ruleJvmUpperBound
                     {
                     if ( state.backtracking==0 ) {
 
@@ -23405,23 +23703,23 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:8477:5: ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    // InternalPerspectiveDsl.g:8578:5: ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
                     loop135:
                     do {
                         int alt135=2;
                         int LA135_0 = input.LA(1);
 
-                        if ( (LA135_0==122) ) {
+                        if ( (LA135_0==124) ) {
                             alt135=1;
                         }
 
 
                         switch (alt135) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:8478:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    // InternalPerspectiveDsl.g:8579:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
                     	    {
-                    	    // InternalPerspectiveDsl.g:8478:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
-                    	    // InternalPerspectiveDsl.g:8479:7: lv_constraints_3_0= ruleJvmUpperBoundAnded
+                    	    // InternalPerspectiveDsl.g:8579:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    // InternalPerspectiveDsl.g:8580:7: lv_constraints_3_0= ruleJvmUpperBoundAnded
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -23465,16 +23763,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:8498:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    // InternalPerspectiveDsl.g:8599:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
                     {
-                    // InternalPerspectiveDsl.g:8498:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
-                    // InternalPerspectiveDsl.g:8499:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    // InternalPerspectiveDsl.g:8599:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    // InternalPerspectiveDsl.g:8600:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
                     {
-                    // InternalPerspectiveDsl.g:8499:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) )
-                    // InternalPerspectiveDsl.g:8500:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    // InternalPerspectiveDsl.g:8600:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) )
+                    // InternalPerspectiveDsl.g:8601:6: (lv_constraints_4_0= ruleJvmLowerBound )
                     {
-                    // InternalPerspectiveDsl.g:8500:6: (lv_constraints_4_0= ruleJvmLowerBound )
-                    // InternalPerspectiveDsl.g:8501:7: lv_constraints_4_0= ruleJvmLowerBound
+                    // InternalPerspectiveDsl.g:8601:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    // InternalPerspectiveDsl.g:8602:7: lv_constraints_4_0= ruleJvmLowerBound
                     {
                     if ( state.backtracking==0 ) {
 
@@ -23505,23 +23803,23 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:8518:5: ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    // InternalPerspectiveDsl.g:8619:5: ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
                     loop136:
                     do {
                         int alt136=2;
                         int LA136_0 = input.LA(1);
 
-                        if ( (LA136_0==122) ) {
+                        if ( (LA136_0==124) ) {
                             alt136=1;
                         }
 
 
                         switch (alt136) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:8519:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    // InternalPerspectiveDsl.g:8620:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
                     	    {
-                    	    // InternalPerspectiveDsl.g:8519:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
-                    	    // InternalPerspectiveDsl.g:8520:7: lv_constraints_5_0= ruleJvmLowerBoundAnded
+                    	    // InternalPerspectiveDsl.g:8620:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    // InternalPerspectiveDsl.g:8621:7: lv_constraints_5_0= ruleJvmLowerBoundAnded
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -23592,7 +23890,7 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBound"
-    // InternalPerspectiveDsl.g:8543:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
+    // InternalPerspectiveDsl.g:8644:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
     public final EObject entryRuleJvmUpperBound() throws RecognitionException {
         EObject current = null;
 
@@ -23600,8 +23898,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8543:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
-            // InternalPerspectiveDsl.g:8544:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
+            // InternalPerspectiveDsl.g:8644:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
+            // InternalPerspectiveDsl.g:8645:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmUpperBoundRule()); 
@@ -23632,7 +23930,7 @@
 
 
     // $ANTLR start "ruleJvmUpperBound"
-    // InternalPerspectiveDsl.g:8550:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalPerspectiveDsl.g:8651:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmUpperBound() throws RecognitionException {
         EObject current = null;
 
@@ -23644,23 +23942,23 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8556:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalPerspectiveDsl.g:8557:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8657:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalPerspectiveDsl.g:8658:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalPerspectiveDsl.g:8557:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalPerspectiveDsl.g:8558:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8658:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8659:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,108,FOLLOW_46); if (state.failed) return current;
+            otherlv_0=(Token)match(input,110,FOLLOW_46); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
               		
             }
-            // InternalPerspectiveDsl.g:8562:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:8563:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8663:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8664:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:8563:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:8564:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:8664:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8665:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -23716,7 +24014,7 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBoundAnded"
-    // InternalPerspectiveDsl.g:8585:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
+    // InternalPerspectiveDsl.g:8686:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
     public final EObject entryRuleJvmUpperBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -23724,8 +24022,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8585:59: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
-            // InternalPerspectiveDsl.g:8586:2: iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF
+            // InternalPerspectiveDsl.g:8686:59: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
+            // InternalPerspectiveDsl.g:8687:2: iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmUpperBoundAndedRule()); 
@@ -23756,7 +24054,7 @@
 
 
     // $ANTLR start "ruleJvmUpperBoundAnded"
-    // InternalPerspectiveDsl.g:8592:1: ruleJvmUpperBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalPerspectiveDsl.g:8693:1: ruleJvmUpperBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmUpperBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -23768,23 +24066,23 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8598:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalPerspectiveDsl.g:8599:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8699:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalPerspectiveDsl.g:8700:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalPerspectiveDsl.g:8599:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalPerspectiveDsl.g:8600:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8700:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8701:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,122,FOLLOW_46); if (state.failed) return current;
+            otherlv_0=(Token)match(input,124,FOLLOW_46); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
               		
             }
-            // InternalPerspectiveDsl.g:8604:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:8605:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8705:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8706:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:8605:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:8606:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:8706:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8707:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -23840,7 +24138,7 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBound"
-    // InternalPerspectiveDsl.g:8627:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
+    // InternalPerspectiveDsl.g:8728:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
     public final EObject entryRuleJvmLowerBound() throws RecognitionException {
         EObject current = null;
 
@@ -23848,8 +24146,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8627:54: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
-            // InternalPerspectiveDsl.g:8628:2: iv_ruleJvmLowerBound= ruleJvmLowerBound EOF
+            // InternalPerspectiveDsl.g:8728:54: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
+            // InternalPerspectiveDsl.g:8729:2: iv_ruleJvmLowerBound= ruleJvmLowerBound EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmLowerBoundRule()); 
@@ -23880,7 +24178,7 @@
 
 
     // $ANTLR start "ruleJvmLowerBound"
-    // InternalPerspectiveDsl.g:8634:1: ruleJvmLowerBound returns [EObject current=null] : (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalPerspectiveDsl.g:8735:1: ruleJvmLowerBound returns [EObject current=null] : (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmLowerBound() throws RecognitionException {
         EObject current = null;
 
@@ -23892,23 +24190,23 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8640:2: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalPerspectiveDsl.g:8641:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8741:2: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalPerspectiveDsl.g:8742:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalPerspectiveDsl.g:8641:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalPerspectiveDsl.g:8642:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8742:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8743:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,109,FOLLOW_46); if (state.failed) return current;
+            otherlv_0=(Token)match(input,111,FOLLOW_46); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
               		
             }
-            // InternalPerspectiveDsl.g:8646:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:8647:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8747:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8748:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:8647:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:8648:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:8748:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8749:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -23964,7 +24262,7 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBoundAnded"
-    // InternalPerspectiveDsl.g:8669:1: entryRuleJvmLowerBoundAnded returns [EObject current=null] : iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF ;
+    // InternalPerspectiveDsl.g:8770:1: entryRuleJvmLowerBoundAnded returns [EObject current=null] : iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF ;
     public final EObject entryRuleJvmLowerBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -23972,8 +24270,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8669:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
-            // InternalPerspectiveDsl.g:8670:2: iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF
+            // InternalPerspectiveDsl.g:8770:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
+            // InternalPerspectiveDsl.g:8771:2: iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmLowerBoundAndedRule()); 
@@ -24004,7 +24302,7 @@
 
 
     // $ANTLR start "ruleJvmLowerBoundAnded"
-    // InternalPerspectiveDsl.g:8676:1: ruleJvmLowerBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalPerspectiveDsl.g:8777:1: ruleJvmLowerBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmLowerBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -24016,23 +24314,23 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8682:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalPerspectiveDsl.g:8683:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8783:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalPerspectiveDsl.g:8784:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalPerspectiveDsl.g:8683:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalPerspectiveDsl.g:8684:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8784:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8785:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,122,FOLLOW_46); if (state.failed) return current;
+            otherlv_0=(Token)match(input,124,FOLLOW_46); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
               		
             }
-            // InternalPerspectiveDsl.g:8688:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:8689:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8789:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8790:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:8689:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:8690:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:8790:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8791:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -24088,7 +24386,7 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameWithWildcard"
-    // InternalPerspectiveDsl.g:8711:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
+    // InternalPerspectiveDsl.g:8812:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
     public final String entryRuleQualifiedNameWithWildcard() throws RecognitionException {
         String current = null;
 
@@ -24096,8 +24394,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8711:65: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
-            // InternalPerspectiveDsl.g:8712:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
+            // InternalPerspectiveDsl.g:8812:65: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
+            // InternalPerspectiveDsl.g:8813:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule()); 
@@ -24128,7 +24426,7 @@
 
 
     // $ANTLR start "ruleQualifiedNameWithWildcard"
-    // InternalPerspectiveDsl.g:8718:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) ;
+    // InternalPerspectiveDsl.g:8819:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) ;
     public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -24140,11 +24438,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8724:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
-            // InternalPerspectiveDsl.g:8725:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            // InternalPerspectiveDsl.g:8825:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
+            // InternalPerspectiveDsl.g:8826:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
             {
-            // InternalPerspectiveDsl.g:8725:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
-            // InternalPerspectiveDsl.g:8726:3: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
+            // InternalPerspectiveDsl.g:8826:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            // InternalPerspectiveDsl.g:8827:3: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
             {
             if ( state.backtracking==0 ) {
 
@@ -24166,14 +24464,14 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            kw=(Token)match(input,93,FOLLOW_105); if (state.failed) return current;
+            kw=(Token)match(input,95,FOLLOW_105); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			current.merge(kw);
               			newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1());
               		
             }
-            kw=(Token)match(input,52,FOLLOW_2); if (state.failed) return current;
+            kw=(Token)match(input,54,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			current.merge(kw);
@@ -24205,7 +24503,7 @@
 
 
     // $ANTLR start "entryRuleValidID"
-    // InternalPerspectiveDsl.g:8750:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
+    // InternalPerspectiveDsl.g:8851:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
     public final String entryRuleValidID() throws RecognitionException {
         String current = null;
 
@@ -24213,8 +24511,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8750:47: (iv_ruleValidID= ruleValidID EOF )
-            // InternalPerspectiveDsl.g:8751:2: iv_ruleValidID= ruleValidID EOF
+            // InternalPerspectiveDsl.g:8851:47: (iv_ruleValidID= ruleValidID EOF )
+            // InternalPerspectiveDsl.g:8852:2: iv_ruleValidID= ruleValidID EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getValidIDRule()); 
@@ -24245,7 +24543,7 @@
 
 
     // $ANTLR start "ruleValidID"
-    // InternalPerspectiveDsl.g:8757:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    // InternalPerspectiveDsl.g:8858:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
     public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -24255,8 +24553,8 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8763:2: (this_ID_0= RULE_ID )
-            // InternalPerspectiveDsl.g:8764:2: this_ID_0= RULE_ID
+            // InternalPerspectiveDsl.g:8864:2: (this_ID_0= RULE_ID )
+            // InternalPerspectiveDsl.g:8865: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 ) {
@@ -24291,7 +24589,7 @@
 
 
     // $ANTLR start "entryRuleXImportSection"
-    // InternalPerspectiveDsl.g:8774:1: entryRuleXImportSection returns [EObject current=null] : iv_ruleXImportSection= ruleXImportSection EOF ;
+    // InternalPerspectiveDsl.g:8875:1: entryRuleXImportSection returns [EObject current=null] : iv_ruleXImportSection= ruleXImportSection EOF ;
     public final EObject entryRuleXImportSection() throws RecognitionException {
         EObject current = null;
 
@@ -24299,8 +24597,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8774:55: (iv_ruleXImportSection= ruleXImportSection EOF )
-            // InternalPerspectiveDsl.g:8775:2: iv_ruleXImportSection= ruleXImportSection EOF
+            // InternalPerspectiveDsl.g:8875:55: (iv_ruleXImportSection= ruleXImportSection EOF )
+            // InternalPerspectiveDsl.g:8876:2: iv_ruleXImportSection= ruleXImportSection EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXImportSectionRule()); 
@@ -24331,7 +24629,7 @@
 
 
     // $ANTLR start "ruleXImportSection"
-    // InternalPerspectiveDsl.g:8781:1: ruleXImportSection returns [EObject current=null] : ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ ;
+    // InternalPerspectiveDsl.g:8882:1: ruleXImportSection returns [EObject current=null] : ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ ;
     public final EObject ruleXImportSection() throws RecognitionException {
         EObject current = null;
 
@@ -24342,27 +24640,27 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8787:2: ( ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ )
-            // InternalPerspectiveDsl.g:8788:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            // InternalPerspectiveDsl.g:8888:2: ( ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ )
+            // InternalPerspectiveDsl.g:8889:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
             {
-            // InternalPerspectiveDsl.g:8788:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            // InternalPerspectiveDsl.g:8889:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
             int cnt138=0;
             loop138:
             do {
                 int alt138=2;
                 int LA138_0 = input.LA(1);
 
-                if ( (LA138_0==49) ) {
+                if ( (LA138_0==51) ) {
                     alt138=1;
                 }
 
 
                 switch (alt138) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:8789:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    // InternalPerspectiveDsl.g:8890:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
             	    {
-            	    // InternalPerspectiveDsl.g:8789:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
-            	    // InternalPerspectiveDsl.g:8790:4: lv_importDeclarations_0_0= ruleXImportDeclaration
+            	    // InternalPerspectiveDsl.g:8890:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    // InternalPerspectiveDsl.g:8891:4: lv_importDeclarations_0_0= ruleXImportDeclaration
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -24426,7 +24724,7 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameInStaticImport"
-    // InternalPerspectiveDsl.g:8810:1: entryRuleQualifiedNameInStaticImport returns [String current=null] : iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF ;
+    // InternalPerspectiveDsl.g:8911:1: entryRuleQualifiedNameInStaticImport returns [String current=null] : iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF ;
     public final String entryRuleQualifiedNameInStaticImport() throws RecognitionException {
         String current = null;
 
@@ -24434,8 +24732,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8810:67: (iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF )
-            // InternalPerspectiveDsl.g:8811:2: iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF
+            // InternalPerspectiveDsl.g:8911:67: (iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF )
+            // InternalPerspectiveDsl.g:8912:2: iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getQualifiedNameInStaticImportRule()); 
@@ -24466,7 +24764,7 @@
 
 
     // $ANTLR start "ruleQualifiedNameInStaticImport"
-    // InternalPerspectiveDsl.g:8817:1: ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '.' )+ ;
+    // InternalPerspectiveDsl.g:8918:1: ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '.' )+ ;
     public final AntlrDatatypeRuleToken ruleQualifiedNameInStaticImport() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -24478,10 +24776,10 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8823:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
-            // InternalPerspectiveDsl.g:8824:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            // InternalPerspectiveDsl.g:8924:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
+            // InternalPerspectiveDsl.g:8925:2: (this_ValidID_0= ruleValidID kw= '.' )+
             {
-            // InternalPerspectiveDsl.g:8824:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            // InternalPerspectiveDsl.g:8925:2: (this_ValidID_0= ruleValidID kw= '.' )+
             int cnt139=0;
             loop139:
             do {
@@ -24491,7 +24789,7 @@
                 if ( (LA139_0==RULE_ID) ) {
                     int LA139_2 = input.LA(2);
 
-                    if ( (LA139_2==93) ) {
+                    if ( (LA139_2==95) ) {
                         alt139=1;
                     }
 
@@ -24501,7 +24799,7 @@
 
                 switch (alt139) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:8825:3: this_ValidID_0= ruleValidID kw= '.'
+            	    // InternalPerspectiveDsl.g:8926:3: this_ValidID_0= ruleValidID kw= '.'
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -24523,7 +24821,7 @@
             	      			afterParserOrEnumRuleCall();
             	      		
             	    }
-            	    kw=(Token)match(input,93,FOLLOW_107); if (state.failed) return current;
+            	    kw=(Token)match(input,95,FOLLOW_107); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      			current.merge(kw);
@@ -24566,7 +24864,7 @@
 
 
     // $ANTLR start "ruleSashOrientation"
-    // InternalPerspectiveDsl.g:8844:1: ruleSashOrientation returns [Enumerator current=null] : ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) ) ;
+    // InternalPerspectiveDsl.g:8945:1: ruleSashOrientation returns [Enumerator current=null] : ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) ) ;
     public final Enumerator ruleSashOrientation() throws RecognitionException {
         Enumerator current = null;
 
@@ -24577,17 +24875,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8850:2: ( ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) ) )
-            // InternalPerspectiveDsl.g:8851:2: ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) )
+            // InternalPerspectiveDsl.g:8951:2: ( ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) ) )
+            // InternalPerspectiveDsl.g:8952:2: ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) )
             {
-            // InternalPerspectiveDsl.g:8851:2: ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) )
+            // InternalPerspectiveDsl.g:8952:2: ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) )
             int alt140=2;
             int LA140_0 = input.LA(1);
 
-            if ( (LA140_0==123) ) {
+            if ( (LA140_0==125) ) {
                 alt140=1;
             }
-            else if ( (LA140_0==124) ) {
+            else if ( (LA140_0==126) ) {
                 alt140=2;
             }
             else {
@@ -24599,12 +24897,12 @@
             }
             switch (alt140) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8852:3: (enumLiteral_0= 'horizontal' )
+                    // InternalPerspectiveDsl.g:8953:3: (enumLiteral_0= 'horizontal' )
                     {
-                    // InternalPerspectiveDsl.g:8852:3: (enumLiteral_0= 'horizontal' )
-                    // InternalPerspectiveDsl.g:8853:4: enumLiteral_0= 'horizontal'
+                    // InternalPerspectiveDsl.g:8953:3: (enumLiteral_0= 'horizontal' )
+                    // InternalPerspectiveDsl.g:8954:4: enumLiteral_0= 'horizontal'
                     {
-                    enumLiteral_0=(Token)match(input,123,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_0=(Token)match(input,125,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getSashOrientationAccess().getHORIZONTALEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
@@ -24618,12 +24916,12 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:8860:3: (enumLiteral_1= 'vertical' )
+                    // InternalPerspectiveDsl.g:8961:3: (enumLiteral_1= 'vertical' )
                     {
-                    // InternalPerspectiveDsl.g:8860:3: (enumLiteral_1= 'vertical' )
-                    // InternalPerspectiveDsl.g:8861:4: enumLiteral_1= 'vertical'
+                    // InternalPerspectiveDsl.g:8961:3: (enumLiteral_1= 'vertical' )
+                    // InternalPerspectiveDsl.g:8962:4: enumLiteral_1= 'vertical'
                     {
-                    enumLiteral_1=(Token)match(input,124,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_1=(Token)match(input,126,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getSashOrientationAccess().getVERTICALEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
@@ -24661,10 +24959,10 @@
 
     // $ANTLR start synpred1_InternalPerspectiveDsl
     public final void synpred1_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:2220:5: ( '(' )
-        // InternalPerspectiveDsl.g:2220:6: '('
+        // InternalPerspectiveDsl.g:2321:5: ( '(' )
+        // InternalPerspectiveDsl.g:2321:6: '('
         {
-        match(input,56,FOLLOW_2); if (state.failed) return ;
+        match(input,58,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -24672,17 +24970,17 @@
 
     // $ANTLR start synpred2_InternalPerspectiveDsl
     public final void synpred2_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:2229:7: ( ( ( ( ruleValidID ) ) '=' ) )
-        // InternalPerspectiveDsl.g:2229:8: ( ( ( ruleValidID ) ) '=' )
+        // InternalPerspectiveDsl.g:2330:7: ( ( ( ( ruleValidID ) ) '=' ) )
+        // InternalPerspectiveDsl.g:2330:8: ( ( ( ruleValidID ) ) '=' )
         {
-        // InternalPerspectiveDsl.g:2229:8: ( ( ( ruleValidID ) ) '=' )
-        // InternalPerspectiveDsl.g:2230:8: ( ( ruleValidID ) ) '='
+        // InternalPerspectiveDsl.g:2330:8: ( ( ( ruleValidID ) ) '=' )
+        // InternalPerspectiveDsl.g:2331:8: ( ( ruleValidID ) ) '='
         {
-        // InternalPerspectiveDsl.g:2230:8: ( ( ruleValidID ) )
-        // InternalPerspectiveDsl.g:2231:9: ( ruleValidID )
+        // InternalPerspectiveDsl.g:2331:8: ( ( ruleValidID ) )
+        // InternalPerspectiveDsl.g:2332:9: ( ruleValidID )
         {
-        // InternalPerspectiveDsl.g:2231:9: ( ruleValidID )
-        // InternalPerspectiveDsl.g:2232:10: ruleValidID
+        // InternalPerspectiveDsl.g:2332:9: ( ruleValidID )
+        // InternalPerspectiveDsl.g:2333:10: ruleValidID
         {
         pushFollow(FOLLOW_32);
         ruleValidID();
@@ -24695,7 +24993,7 @@
 
         }
 
-        match(input,59,FOLLOW_2); if (state.failed) return ;
+        match(input,61,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -24706,19 +25004,19 @@
 
     // $ANTLR start synpred5_InternalPerspectiveDsl
     public final void synpred5_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:2409:5: ( ( () '#' '[' ) )
-        // InternalPerspectiveDsl.g:2409:6: ( () '#' '[' )
+        // InternalPerspectiveDsl.g:2510:5: ( ( () '#' '[' ) )
+        // InternalPerspectiveDsl.g:2510:6: ( () '#' '[' )
         {
-        // InternalPerspectiveDsl.g:2409:6: ( () '#' '[' )
-        // InternalPerspectiveDsl.g:2410:6: () '#' '['
+        // InternalPerspectiveDsl.g:2510:6: ( () '#' '[' )
+        // InternalPerspectiveDsl.g:2511:6: () '#' '['
         {
-        // InternalPerspectiveDsl.g:2410:6: ()
-        // InternalPerspectiveDsl.g:2411:6: 
+        // InternalPerspectiveDsl.g:2511:6: ()
+        // InternalPerspectiveDsl.g:2512:6: 
         {
         }
 
-        match(input,60,FOLLOW_34); if (state.failed) return ;
-        match(input,61,FOLLOW_2); if (state.failed) return ;
+        match(input,62,FOLLOW_34); if (state.failed) return ;
+        match(input,63,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -24729,19 +25027,19 @@
 
     // $ANTLR start synpred6_InternalPerspectiveDsl
     public final void synpred6_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:2551:5: ( ( () '#' '[' ) )
-        // InternalPerspectiveDsl.g:2551:6: ( () '#' '[' )
+        // InternalPerspectiveDsl.g:2652:5: ( ( () '#' '[' ) )
+        // InternalPerspectiveDsl.g:2652:6: ( () '#' '[' )
         {
-        // InternalPerspectiveDsl.g:2551:6: ( () '#' '[' )
-        // InternalPerspectiveDsl.g:2552:6: () '#' '['
+        // InternalPerspectiveDsl.g:2652:6: ( () '#' '[' )
+        // InternalPerspectiveDsl.g:2653:6: () '#' '['
         {
-        // InternalPerspectiveDsl.g:2552:6: ()
-        // InternalPerspectiveDsl.g:2553:6: 
+        // InternalPerspectiveDsl.g:2653:6: ()
+        // InternalPerspectiveDsl.g:2654:6: 
         {
         }
 
-        match(input,60,FOLLOW_34); if (state.failed) return ;
-        match(input,61,FOLLOW_2); if (state.failed) return ;
+        match(input,62,FOLLOW_34); if (state.failed) return ;
+        match(input,63,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -24752,22 +25050,22 @@
 
     // $ANTLR start synpred7_InternalPerspectiveDsl
     public final void synpred7_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:2779:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )
-        // InternalPerspectiveDsl.g:2779:7: ( () ( ( ruleOpMultiAssign ) ) )
+        // InternalPerspectiveDsl.g:2880:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )
+        // InternalPerspectiveDsl.g:2880:7: ( () ( ( ruleOpMultiAssign ) ) )
         {
-        // InternalPerspectiveDsl.g:2779:7: ( () ( ( ruleOpMultiAssign ) ) )
-        // InternalPerspectiveDsl.g:2780:7: () ( ( ruleOpMultiAssign ) )
+        // InternalPerspectiveDsl.g:2880:7: ( () ( ( ruleOpMultiAssign ) ) )
+        // InternalPerspectiveDsl.g:2881:7: () ( ( ruleOpMultiAssign ) )
         {
-        // InternalPerspectiveDsl.g:2780:7: ()
-        // InternalPerspectiveDsl.g:2781:7: 
+        // InternalPerspectiveDsl.g:2881:7: ()
+        // InternalPerspectiveDsl.g:2882:7: 
         {
         }
 
-        // InternalPerspectiveDsl.g:2782:7: ( ( ruleOpMultiAssign ) )
-        // InternalPerspectiveDsl.g:2783:8: ( ruleOpMultiAssign )
+        // InternalPerspectiveDsl.g:2883:7: ( ( ruleOpMultiAssign ) )
+        // InternalPerspectiveDsl.g:2884:8: ( ruleOpMultiAssign )
         {
-        // InternalPerspectiveDsl.g:2783:8: ( ruleOpMultiAssign )
-        // InternalPerspectiveDsl.g:2784:9: ruleOpMultiAssign
+        // InternalPerspectiveDsl.g:2884:8: ( ruleOpMultiAssign )
+        // InternalPerspectiveDsl.g:2885:9: ruleOpMultiAssign
         {
         pushFollow(FOLLOW_2);
         ruleOpMultiAssign();
@@ -24790,22 +25088,22 @@
 
     // $ANTLR start synpred8_InternalPerspectiveDsl
     public final void synpred8_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:2973:5: ( ( () ( ( ruleOpOr ) ) ) )
-        // InternalPerspectiveDsl.g:2973:6: ( () ( ( ruleOpOr ) ) )
+        // InternalPerspectiveDsl.g:3074:5: ( ( () ( ( ruleOpOr ) ) ) )
+        // InternalPerspectiveDsl.g:3074:6: ( () ( ( ruleOpOr ) ) )
         {
-        // InternalPerspectiveDsl.g:2973:6: ( () ( ( ruleOpOr ) ) )
-        // InternalPerspectiveDsl.g:2974:6: () ( ( ruleOpOr ) )
+        // InternalPerspectiveDsl.g:3074:6: ( () ( ( ruleOpOr ) ) )
+        // InternalPerspectiveDsl.g:3075:6: () ( ( ruleOpOr ) )
         {
-        // InternalPerspectiveDsl.g:2974:6: ()
-        // InternalPerspectiveDsl.g:2975:6: 
+        // InternalPerspectiveDsl.g:3075:6: ()
+        // InternalPerspectiveDsl.g:3076:6: 
         {
         }
 
-        // InternalPerspectiveDsl.g:2976:6: ( ( ruleOpOr ) )
-        // InternalPerspectiveDsl.g:2977:7: ( ruleOpOr )
+        // InternalPerspectiveDsl.g:3077:6: ( ( ruleOpOr ) )
+        // InternalPerspectiveDsl.g:3078:7: ( ruleOpOr )
         {
-        // InternalPerspectiveDsl.g:2977:7: ( ruleOpOr )
-        // InternalPerspectiveDsl.g:2978:8: ruleOpOr
+        // InternalPerspectiveDsl.g:3078:7: ( ruleOpOr )
+        // InternalPerspectiveDsl.g:3079:8: ruleOpOr
         {
         pushFollow(FOLLOW_2);
         ruleOpOr();
@@ -24828,22 +25126,22 @@
 
     // $ANTLR start synpred9_InternalPerspectiveDsl
     public final void synpred9_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3080:5: ( ( () ( ( ruleOpAnd ) ) ) )
-        // InternalPerspectiveDsl.g:3080:6: ( () ( ( ruleOpAnd ) ) )
+        // InternalPerspectiveDsl.g:3181:5: ( ( () ( ( ruleOpAnd ) ) ) )
+        // InternalPerspectiveDsl.g:3181:6: ( () ( ( ruleOpAnd ) ) )
         {
-        // InternalPerspectiveDsl.g:3080:6: ( () ( ( ruleOpAnd ) ) )
-        // InternalPerspectiveDsl.g:3081:6: () ( ( ruleOpAnd ) )
+        // InternalPerspectiveDsl.g:3181:6: ( () ( ( ruleOpAnd ) ) )
+        // InternalPerspectiveDsl.g:3182:6: () ( ( ruleOpAnd ) )
         {
-        // InternalPerspectiveDsl.g:3081:6: ()
-        // InternalPerspectiveDsl.g:3082:6: 
+        // InternalPerspectiveDsl.g:3182:6: ()
+        // InternalPerspectiveDsl.g:3183:6: 
         {
         }
 
-        // InternalPerspectiveDsl.g:3083:6: ( ( ruleOpAnd ) )
-        // InternalPerspectiveDsl.g:3084:7: ( ruleOpAnd )
+        // InternalPerspectiveDsl.g:3184:6: ( ( ruleOpAnd ) )
+        // InternalPerspectiveDsl.g:3185:7: ( ruleOpAnd )
         {
-        // InternalPerspectiveDsl.g:3084:7: ( ruleOpAnd )
-        // InternalPerspectiveDsl.g:3085:8: ruleOpAnd
+        // InternalPerspectiveDsl.g:3185:7: ( ruleOpAnd )
+        // InternalPerspectiveDsl.g:3186:8: ruleOpAnd
         {
         pushFollow(FOLLOW_2);
         ruleOpAnd();
@@ -24866,22 +25164,22 @@
 
     // $ANTLR start synpred10_InternalPerspectiveDsl
     public final void synpred10_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3187:5: ( ( () ( ( ruleOpEquality ) ) ) )
-        // InternalPerspectiveDsl.g:3187:6: ( () ( ( ruleOpEquality ) ) )
+        // InternalPerspectiveDsl.g:3288:5: ( ( () ( ( ruleOpEquality ) ) ) )
+        // InternalPerspectiveDsl.g:3288:6: ( () ( ( ruleOpEquality ) ) )
         {
-        // InternalPerspectiveDsl.g:3187:6: ( () ( ( ruleOpEquality ) ) )
-        // InternalPerspectiveDsl.g:3188:6: () ( ( ruleOpEquality ) )
+        // InternalPerspectiveDsl.g:3288:6: ( () ( ( ruleOpEquality ) ) )
+        // InternalPerspectiveDsl.g:3289:6: () ( ( ruleOpEquality ) )
         {
-        // InternalPerspectiveDsl.g:3188:6: ()
-        // InternalPerspectiveDsl.g:3189:6: 
+        // InternalPerspectiveDsl.g:3289:6: ()
+        // InternalPerspectiveDsl.g:3290:6: 
         {
         }
 
-        // InternalPerspectiveDsl.g:3190:6: ( ( ruleOpEquality ) )
-        // InternalPerspectiveDsl.g:3191:7: ( ruleOpEquality )
+        // InternalPerspectiveDsl.g:3291:6: ( ( ruleOpEquality ) )
+        // InternalPerspectiveDsl.g:3292:7: ( ruleOpEquality )
         {
-        // InternalPerspectiveDsl.g:3191:7: ( ruleOpEquality )
-        // InternalPerspectiveDsl.g:3192:8: ruleOpEquality
+        // InternalPerspectiveDsl.g:3292:7: ( ruleOpEquality )
+        // InternalPerspectiveDsl.g:3293:8: ruleOpEquality
         {
         pushFollow(FOLLOW_2);
         ruleOpEquality();
@@ -24904,18 +25202,18 @@
 
     // $ANTLR start synpred11_InternalPerspectiveDsl
     public final void synpred11_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3315:6: ( ( () 'instanceof' ) )
-        // InternalPerspectiveDsl.g:3315:7: ( () 'instanceof' )
+        // InternalPerspectiveDsl.g:3416:6: ( ( () 'instanceof' ) )
+        // InternalPerspectiveDsl.g:3416:7: ( () 'instanceof' )
         {
-        // InternalPerspectiveDsl.g:3315:7: ( () 'instanceof' )
-        // InternalPerspectiveDsl.g:3316:7: () 'instanceof'
+        // InternalPerspectiveDsl.g:3416:7: ( () 'instanceof' )
+        // InternalPerspectiveDsl.g:3417:7: () 'instanceof'
         {
-        // InternalPerspectiveDsl.g:3316:7: ()
-        // InternalPerspectiveDsl.g:3317:7: 
+        // InternalPerspectiveDsl.g:3417:7: ()
+        // InternalPerspectiveDsl.g:3418:7: 
         {
         }
 
-        match(input,77,FOLLOW_2); if (state.failed) return ;
+        match(input,79,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -24926,22 +25224,22 @@
 
     // $ANTLR start synpred12_InternalPerspectiveDsl
     public final void synpred12_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3358:6: ( ( () ( ( ruleOpCompare ) ) ) )
-        // InternalPerspectiveDsl.g:3358:7: ( () ( ( ruleOpCompare ) ) )
+        // InternalPerspectiveDsl.g:3459:6: ( ( () ( ( ruleOpCompare ) ) ) )
+        // InternalPerspectiveDsl.g:3459:7: ( () ( ( ruleOpCompare ) ) )
         {
-        // InternalPerspectiveDsl.g:3358:7: ( () ( ( ruleOpCompare ) ) )
-        // InternalPerspectiveDsl.g:3359:7: () ( ( ruleOpCompare ) )
+        // InternalPerspectiveDsl.g:3459:7: ( () ( ( ruleOpCompare ) ) )
+        // InternalPerspectiveDsl.g:3460:7: () ( ( ruleOpCompare ) )
         {
-        // InternalPerspectiveDsl.g:3359:7: ()
-        // InternalPerspectiveDsl.g:3360:7: 
+        // InternalPerspectiveDsl.g:3460:7: ()
+        // InternalPerspectiveDsl.g:3461:7: 
         {
         }
 
-        // InternalPerspectiveDsl.g:3361:7: ( ( ruleOpCompare ) )
-        // InternalPerspectiveDsl.g:3362:8: ( ruleOpCompare )
+        // InternalPerspectiveDsl.g:3462:7: ( ( ruleOpCompare ) )
+        // InternalPerspectiveDsl.g:3463:8: ( ruleOpCompare )
         {
-        // InternalPerspectiveDsl.g:3362:8: ( ruleOpCompare )
-        // InternalPerspectiveDsl.g:3363:9: ruleOpCompare
+        // InternalPerspectiveDsl.g:3463:8: ( ruleOpCompare )
+        // InternalPerspectiveDsl.g:3464:9: ruleOpCompare
         {
         pushFollow(FOLLOW_2);
         ruleOpCompare();
@@ -24964,22 +25262,22 @@
 
     // $ANTLR start synpred13_InternalPerspectiveDsl
     public final void synpred13_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3493:5: ( ( () ( ( ruleOpOther ) ) ) )
-        // InternalPerspectiveDsl.g:3493:6: ( () ( ( ruleOpOther ) ) )
+        // InternalPerspectiveDsl.g:3594:5: ( ( () ( ( ruleOpOther ) ) ) )
+        // InternalPerspectiveDsl.g:3594:6: ( () ( ( ruleOpOther ) ) )
         {
-        // InternalPerspectiveDsl.g:3493:6: ( () ( ( ruleOpOther ) ) )
-        // InternalPerspectiveDsl.g:3494:6: () ( ( ruleOpOther ) )
+        // InternalPerspectiveDsl.g:3594:6: ( () ( ( ruleOpOther ) ) )
+        // InternalPerspectiveDsl.g:3595:6: () ( ( ruleOpOther ) )
         {
-        // InternalPerspectiveDsl.g:3494:6: ()
-        // InternalPerspectiveDsl.g:3495:6: 
+        // InternalPerspectiveDsl.g:3595:6: ()
+        // InternalPerspectiveDsl.g:3596:6: 
         {
         }
 
-        // InternalPerspectiveDsl.g:3496:6: ( ( ruleOpOther ) )
-        // InternalPerspectiveDsl.g:3497:7: ( ruleOpOther )
+        // InternalPerspectiveDsl.g:3597:6: ( ( ruleOpOther ) )
+        // InternalPerspectiveDsl.g:3598:7: ( ruleOpOther )
         {
-        // InternalPerspectiveDsl.g:3497:7: ( ruleOpOther )
-        // InternalPerspectiveDsl.g:3498:8: ruleOpOther
+        // InternalPerspectiveDsl.g:3598:7: ( ruleOpOther )
+        // InternalPerspectiveDsl.g:3599:8: ruleOpOther
         {
         pushFollow(FOLLOW_2);
         ruleOpOther();
@@ -25002,14 +25300,14 @@
 
     // $ANTLR start synpred14_InternalPerspectiveDsl
     public final void synpred14_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3613:6: ( ( '>' '>' ) )
-        // InternalPerspectiveDsl.g:3613:7: ( '>' '>' )
+        // InternalPerspectiveDsl.g:3714:6: ( ( '>' '>' ) )
+        // InternalPerspectiveDsl.g:3714:7: ( '>' '>' )
         {
-        // InternalPerspectiveDsl.g:3613:7: ( '>' '>' )
-        // InternalPerspectiveDsl.g:3614:7: '>' '>'
+        // InternalPerspectiveDsl.g:3714:7: ( '>' '>' )
+        // InternalPerspectiveDsl.g:3715:7: '>' '>'
         {
-        match(input,69,FOLLOW_49); if (state.failed) return ;
-        match(input,69,FOLLOW_2); if (state.failed) return ;
+        match(input,71,FOLLOW_49); if (state.failed) return ;
+        match(input,71,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25020,14 +25318,14 @@
 
     // $ANTLR start synpred15_InternalPerspectiveDsl
     public final void synpred15_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3648:6: ( ( '<' '<' ) )
-        // InternalPerspectiveDsl.g:3648:7: ( '<' '<' )
+        // InternalPerspectiveDsl.g:3749:6: ( ( '<' '<' ) )
+        // InternalPerspectiveDsl.g:3749:7: ( '<' '<' )
         {
-        // InternalPerspectiveDsl.g:3648:7: ( '<' '<' )
-        // InternalPerspectiveDsl.g:3649:7: '<' '<'
+        // InternalPerspectiveDsl.g:3749:7: ( '<' '<' )
+        // InternalPerspectiveDsl.g:3750:7: '<' '<'
         {
-        match(input,68,FOLLOW_39); if (state.failed) return ;
-        match(input,68,FOLLOW_2); if (state.failed) return ;
+        match(input,70,FOLLOW_39); if (state.failed) return ;
+        match(input,70,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25038,22 +25336,22 @@
 
     // $ANTLR start synpred16_InternalPerspectiveDsl
     public final void synpred16_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3721:5: ( ( () ( ( ruleOpAdd ) ) ) )
-        // InternalPerspectiveDsl.g:3721:6: ( () ( ( ruleOpAdd ) ) )
+        // InternalPerspectiveDsl.g:3822:5: ( ( () ( ( ruleOpAdd ) ) ) )
+        // InternalPerspectiveDsl.g:3822:6: ( () ( ( ruleOpAdd ) ) )
         {
-        // InternalPerspectiveDsl.g:3721:6: ( () ( ( ruleOpAdd ) ) )
-        // InternalPerspectiveDsl.g:3722:6: () ( ( ruleOpAdd ) )
+        // InternalPerspectiveDsl.g:3822:6: ( () ( ( ruleOpAdd ) ) )
+        // InternalPerspectiveDsl.g:3823:6: () ( ( ruleOpAdd ) )
         {
-        // InternalPerspectiveDsl.g:3722:6: ()
-        // InternalPerspectiveDsl.g:3723:6: 
+        // InternalPerspectiveDsl.g:3823:6: ()
+        // InternalPerspectiveDsl.g:3824:6: 
         {
         }
 
-        // InternalPerspectiveDsl.g:3724:6: ( ( ruleOpAdd ) )
-        // InternalPerspectiveDsl.g:3725:7: ( ruleOpAdd )
+        // InternalPerspectiveDsl.g:3825:6: ( ( ruleOpAdd ) )
+        // InternalPerspectiveDsl.g:3826:7: ( ruleOpAdd )
         {
-        // InternalPerspectiveDsl.g:3725:7: ( ruleOpAdd )
-        // InternalPerspectiveDsl.g:3726:8: ruleOpAdd
+        // InternalPerspectiveDsl.g:3826:7: ( ruleOpAdd )
+        // InternalPerspectiveDsl.g:3827:8: ruleOpAdd
         {
         pushFollow(FOLLOW_2);
         ruleOpAdd();
@@ -25076,22 +25374,22 @@
 
     // $ANTLR start synpred17_InternalPerspectiveDsl
     public final void synpred17_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3836:5: ( ( () ( ( ruleOpMulti ) ) ) )
-        // InternalPerspectiveDsl.g:3836:6: ( () ( ( ruleOpMulti ) ) )
+        // InternalPerspectiveDsl.g:3937:5: ( ( () ( ( ruleOpMulti ) ) ) )
+        // InternalPerspectiveDsl.g:3937:6: ( () ( ( ruleOpMulti ) ) )
         {
-        // InternalPerspectiveDsl.g:3836:6: ( () ( ( ruleOpMulti ) ) )
-        // InternalPerspectiveDsl.g:3837:6: () ( ( ruleOpMulti ) )
+        // InternalPerspectiveDsl.g:3937:6: ( () ( ( ruleOpMulti ) ) )
+        // InternalPerspectiveDsl.g:3938:6: () ( ( ruleOpMulti ) )
         {
-        // InternalPerspectiveDsl.g:3837:6: ()
-        // InternalPerspectiveDsl.g:3838:6: 
+        // InternalPerspectiveDsl.g:3938:6: ()
+        // InternalPerspectiveDsl.g:3939:6: 
         {
         }
 
-        // InternalPerspectiveDsl.g:3839:6: ( ( ruleOpMulti ) )
-        // InternalPerspectiveDsl.g:3840:7: ( ruleOpMulti )
+        // InternalPerspectiveDsl.g:3940:6: ( ( ruleOpMulti ) )
+        // InternalPerspectiveDsl.g:3941:7: ( ruleOpMulti )
         {
-        // InternalPerspectiveDsl.g:3840:7: ( ruleOpMulti )
-        // InternalPerspectiveDsl.g:3841:8: ruleOpMulti
+        // InternalPerspectiveDsl.g:3941:7: ( ruleOpMulti )
+        // InternalPerspectiveDsl.g:3942:8: ruleOpMulti
         {
         pushFollow(FOLLOW_2);
         ruleOpMulti();
@@ -25114,18 +25412,18 @@
 
     // $ANTLR start synpred18_InternalPerspectiveDsl
     public final void synpred18_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4071:5: ( ( () 'as' ) )
-        // InternalPerspectiveDsl.g:4071:6: ( () 'as' )
+        // InternalPerspectiveDsl.g:4172:5: ( ( () 'as' ) )
+        // InternalPerspectiveDsl.g:4172:6: ( () 'as' )
         {
-        // InternalPerspectiveDsl.g:4071:6: ( () 'as' )
-        // InternalPerspectiveDsl.g:4072:6: () 'as'
+        // InternalPerspectiveDsl.g:4172:6: ( () 'as' )
+        // InternalPerspectiveDsl.g:4173:6: () 'as'
         {
-        // InternalPerspectiveDsl.g:4072:6: ()
-        // InternalPerspectiveDsl.g:4073:6: 
+        // InternalPerspectiveDsl.g:4173:6: ()
+        // InternalPerspectiveDsl.g:4174:6: 
         {
         }
 
-        match(input,90,FOLLOW_2); if (state.failed) return ;
+        match(input,92,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25136,22 +25434,22 @@
 
     // $ANTLR start synpred19_InternalPerspectiveDsl
     public final void synpred19_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4139:4: ( ( () ( ( ruleOpPostfix ) ) ) )
-        // InternalPerspectiveDsl.g:4139:5: ( () ( ( ruleOpPostfix ) ) )
+        // InternalPerspectiveDsl.g:4240:4: ( ( () ( ( ruleOpPostfix ) ) ) )
+        // InternalPerspectiveDsl.g:4240:5: ( () ( ( ruleOpPostfix ) ) )
         {
-        // InternalPerspectiveDsl.g:4139:5: ( () ( ( ruleOpPostfix ) ) )
-        // InternalPerspectiveDsl.g:4140:5: () ( ( ruleOpPostfix ) )
+        // InternalPerspectiveDsl.g:4240:5: ( () ( ( ruleOpPostfix ) ) )
+        // InternalPerspectiveDsl.g:4241:5: () ( ( ruleOpPostfix ) )
         {
-        // InternalPerspectiveDsl.g:4140:5: ()
-        // InternalPerspectiveDsl.g:4141:5: 
+        // InternalPerspectiveDsl.g:4241:5: ()
+        // InternalPerspectiveDsl.g:4242:5: 
         {
         }
 
-        // InternalPerspectiveDsl.g:4142:5: ( ( ruleOpPostfix ) )
-        // InternalPerspectiveDsl.g:4143:6: ( ruleOpPostfix )
+        // InternalPerspectiveDsl.g:4243:5: ( ( ruleOpPostfix ) )
+        // InternalPerspectiveDsl.g:4244:6: ( ruleOpPostfix )
         {
-        // InternalPerspectiveDsl.g:4143:6: ( ruleOpPostfix )
-        // InternalPerspectiveDsl.g:4144:7: ruleOpPostfix
+        // InternalPerspectiveDsl.g:4244:6: ( ruleOpPostfix )
+        // InternalPerspectiveDsl.g:4245:7: ruleOpPostfix
         {
         pushFollow(FOLLOW_2);
         ruleOpPostfix();
@@ -25174,25 +25472,25 @@
 
     // $ANTLR start synpred20_InternalPerspectiveDsl
     public final void synpred20_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4235:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
-        // InternalPerspectiveDsl.g:4235:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        // InternalPerspectiveDsl.g:4336:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+        // InternalPerspectiveDsl.g:4336:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
         {
-        // InternalPerspectiveDsl.g:4235:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
-        // InternalPerspectiveDsl.g:4236:7: () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+        // InternalPerspectiveDsl.g:4336:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        // InternalPerspectiveDsl.g:4337:7: () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
         {
-        // InternalPerspectiveDsl.g:4236:7: ()
-        // InternalPerspectiveDsl.g:4237:7: 
+        // InternalPerspectiveDsl.g:4337:7: ()
+        // InternalPerspectiveDsl.g:4338:7: 
         {
         }
 
-        // InternalPerspectiveDsl.g:4238:7: ( '.' | ( ( '::' ) ) )
+        // InternalPerspectiveDsl.g:4339:7: ( '.' | ( ( '::' ) ) )
         int alt141=2;
         int LA141_0 = input.LA(1);
 
-        if ( (LA141_0==93) ) {
+        if ( (LA141_0==95) ) {
             alt141=1;
         }
-        else if ( (LA141_0==94) ) {
+        else if ( (LA141_0==96) ) {
             alt141=2;
         }
         else {
@@ -25204,22 +25502,22 @@
         }
         switch (alt141) {
             case 1 :
-                // InternalPerspectiveDsl.g:4239:8: '.'
+                // InternalPerspectiveDsl.g:4340:8: '.'
                 {
-                match(input,93,FOLLOW_56); if (state.failed) return ;
+                match(input,95,FOLLOW_56); if (state.failed) return ;
 
                 }
                 break;
             case 2 :
-                // InternalPerspectiveDsl.g:4241:8: ( ( '::' ) )
+                // InternalPerspectiveDsl.g:4342:8: ( ( '::' ) )
                 {
-                // InternalPerspectiveDsl.g:4241:8: ( ( '::' ) )
-                // InternalPerspectiveDsl.g:4242:9: ( '::' )
+                // InternalPerspectiveDsl.g:4342:8: ( ( '::' ) )
+                // InternalPerspectiveDsl.g:4343:9: ( '::' )
                 {
-                // InternalPerspectiveDsl.g:4242:9: ( '::' )
-                // InternalPerspectiveDsl.g:4243:10: '::'
+                // InternalPerspectiveDsl.g:4343:9: ( '::' )
+                // InternalPerspectiveDsl.g:4344:10: '::'
                 {
-                match(input,94,FOLLOW_56); if (state.failed) return ;
+                match(input,96,FOLLOW_56); if (state.failed) return ;
 
                 }
 
@@ -25232,11 +25530,11 @@
 
         }
 
-        // InternalPerspectiveDsl.g:4247:7: ( ( ruleFeatureCallID ) )
-        // InternalPerspectiveDsl.g:4248:8: ( ruleFeatureCallID )
+        // InternalPerspectiveDsl.g:4348:7: ( ( ruleFeatureCallID ) )
+        // InternalPerspectiveDsl.g:4349:8: ( ruleFeatureCallID )
         {
-        // InternalPerspectiveDsl.g:4248:8: ( ruleFeatureCallID )
-        // InternalPerspectiveDsl.g:4249:9: ruleFeatureCallID
+        // InternalPerspectiveDsl.g:4349:8: ( ruleFeatureCallID )
+        // InternalPerspectiveDsl.g:4350:9: ruleFeatureCallID
         {
         pushFollow(FOLLOW_32);
         ruleFeatureCallID();
@@ -25264,31 +25562,31 @@
 
     // $ANTLR start synpred21_InternalPerspectiveDsl
     public final void synpred21_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4332:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )
-        // InternalPerspectiveDsl.g:4332:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        // InternalPerspectiveDsl.g:4433:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )
+        // InternalPerspectiveDsl.g:4433:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
         {
-        // InternalPerspectiveDsl.g:4332:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
-        // InternalPerspectiveDsl.g:4333:7: () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        // InternalPerspectiveDsl.g:4433:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        // InternalPerspectiveDsl.g:4434:7: () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
         {
-        // InternalPerspectiveDsl.g:4333:7: ()
-        // InternalPerspectiveDsl.g:4334:7: 
+        // InternalPerspectiveDsl.g:4434:7: ()
+        // InternalPerspectiveDsl.g:4435:7: 
         {
         }
 
-        // InternalPerspectiveDsl.g:4335:7: ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        // InternalPerspectiveDsl.g:4436:7: ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
         int alt142=3;
         switch ( input.LA(1) ) {
-        case 93:
+        case 95:
             {
             alt142=1;
             }
             break;
-        case 95:
+        case 97:
             {
             alt142=2;
             }
             break;
-        case 94:
+        case 96:
             {
             alt142=3;
             }
@@ -25303,22 +25601,22 @@
 
         switch (alt142) {
             case 1 :
-                // InternalPerspectiveDsl.g:4336:8: '.'
+                // InternalPerspectiveDsl.g:4437:8: '.'
                 {
-                match(input,93,FOLLOW_2); if (state.failed) return ;
+                match(input,95,FOLLOW_2); if (state.failed) return ;
 
                 }
                 break;
             case 2 :
-                // InternalPerspectiveDsl.g:4338:8: ( ( '?.' ) )
+                // InternalPerspectiveDsl.g:4439:8: ( ( '?.' ) )
                 {
-                // InternalPerspectiveDsl.g:4338:8: ( ( '?.' ) )
-                // InternalPerspectiveDsl.g:4339:9: ( '?.' )
+                // InternalPerspectiveDsl.g:4439:8: ( ( '?.' ) )
+                // InternalPerspectiveDsl.g:4440:9: ( '?.' )
                 {
-                // InternalPerspectiveDsl.g:4339:9: ( '?.' )
-                // InternalPerspectiveDsl.g:4340:10: '?.'
+                // InternalPerspectiveDsl.g:4440:9: ( '?.' )
+                // InternalPerspectiveDsl.g:4441:10: '?.'
                 {
-                match(input,95,FOLLOW_2); if (state.failed) return ;
+                match(input,97,FOLLOW_2); if (state.failed) return ;
 
                 }
 
@@ -25329,15 +25627,15 @@
                 }
                 break;
             case 3 :
-                // InternalPerspectiveDsl.g:4344:8: ( ( '::' ) )
+                // InternalPerspectiveDsl.g:4445:8: ( ( '::' ) )
                 {
-                // InternalPerspectiveDsl.g:4344:8: ( ( '::' ) )
-                // InternalPerspectiveDsl.g:4345:9: ( '::' )
+                // InternalPerspectiveDsl.g:4445:8: ( ( '::' ) )
+                // InternalPerspectiveDsl.g:4446:9: ( '::' )
                 {
-                // InternalPerspectiveDsl.g:4345:9: ( '::' )
-                // InternalPerspectiveDsl.g:4346:10: '::'
+                // InternalPerspectiveDsl.g:4446:9: ( '::' )
+                // InternalPerspectiveDsl.g:4447:10: '::'
                 {
-                match(input,94,FOLLOW_2); if (state.failed) return ;
+                match(input,96,FOLLOW_2); if (state.failed) return ;
 
                 }
 
@@ -25360,13 +25658,13 @@
 
     // $ANTLR start synpred22_InternalPerspectiveDsl
     public final void synpred22_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4470:7: ( ( '(' ) )
-        // InternalPerspectiveDsl.g:4470:8: ( '(' )
+        // InternalPerspectiveDsl.g:4571:7: ( ( '(' ) )
+        // InternalPerspectiveDsl.g:4571:8: ( '(' )
         {
-        // InternalPerspectiveDsl.g:4470:8: ( '(' )
-        // InternalPerspectiveDsl.g:4471:8: '('
+        // InternalPerspectiveDsl.g:4571:8: ( '(' )
+        // InternalPerspectiveDsl.g:4572:8: '('
         {
-        match(input,56,FOLLOW_2); if (state.failed) return ;
+        match(input,58,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25377,33 +25675,33 @@
 
     // $ANTLR start synpred23_InternalPerspectiveDsl
     public final void synpred23_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4489:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalPerspectiveDsl.g:4489:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:4590:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalPerspectiveDsl.g:4590:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
         {
-        // InternalPerspectiveDsl.g:4489:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalPerspectiveDsl.g:4490:9: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        // InternalPerspectiveDsl.g:4590:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:4591:9: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
         {
-        // InternalPerspectiveDsl.g:4490:9: ()
-        // InternalPerspectiveDsl.g:4491:9: 
+        // InternalPerspectiveDsl.g:4591:9: ()
+        // InternalPerspectiveDsl.g:4592:9: 
         {
         }
 
-        // InternalPerspectiveDsl.g:4492:9: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        // InternalPerspectiveDsl.g:4593:9: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
         int alt144=2;
         int LA144_0 = input.LA(1);
 
-        if ( (LA144_0==RULE_ID||LA144_0==56||LA144_0==81) ) {
+        if ( (LA144_0==RULE_ID||LA144_0==58||LA144_0==83) ) {
             alt144=1;
         }
         switch (alt144) {
             case 1 :
-                // InternalPerspectiveDsl.g:4493:10: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:4594:10: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 {
-                // InternalPerspectiveDsl.g:4493:10: ( ( ruleJvmFormalParameter ) )
-                // InternalPerspectiveDsl.g:4494:11: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:4594:10: ( ( ruleJvmFormalParameter ) )
+                // InternalPerspectiveDsl.g:4595:11: ( ruleJvmFormalParameter )
                 {
-                // InternalPerspectiveDsl.g:4494:11: ( ruleJvmFormalParameter )
-                // InternalPerspectiveDsl.g:4495:12: ruleJvmFormalParameter
+                // InternalPerspectiveDsl.g:4595:11: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:4596:12: ruleJvmFormalParameter
                 {
                 pushFollow(FOLLOW_67);
                 ruleJvmFormalParameter();
@@ -25416,27 +25714,27 @@
 
                 }
 
-                // InternalPerspectiveDsl.g:4498:10: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:4599:10: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 loop143:
                 do {
                     int alt143=2;
                     int LA143_0 = input.LA(1);
 
-                    if ( (LA143_0==57) ) {
+                    if ( (LA143_0==59) ) {
                         alt143=1;
                     }
 
 
                     switch (alt143) {
                 	case 1 :
-                	    // InternalPerspectiveDsl.g:4499:11: ',' ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:4600:11: ',' ( ( ruleJvmFormalParameter ) )
                 	    {
-                	    match(input,57,FOLLOW_46); if (state.failed) return ;
-                	    // InternalPerspectiveDsl.g:4500:11: ( ( ruleJvmFormalParameter ) )
-                	    // InternalPerspectiveDsl.g:4501:12: ( ruleJvmFormalParameter )
+                	    match(input,59,FOLLOW_46); if (state.failed) return ;
+                	    // InternalPerspectiveDsl.g:4601:11: ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:4602:12: ( ruleJvmFormalParameter )
                 	    {
-                	    // InternalPerspectiveDsl.g:4501:12: ( ruleJvmFormalParameter )
-                	    // InternalPerspectiveDsl.g:4502:13: ruleJvmFormalParameter
+                	    // InternalPerspectiveDsl.g:4602:12: ( ruleJvmFormalParameter )
+                	    // InternalPerspectiveDsl.g:4603:13: ruleJvmFormalParameter
                 	    {
                 	    pushFollow(FOLLOW_67);
                 	    ruleJvmFormalParameter();
@@ -25464,13 +25762,13 @@
 
         }
 
-        // InternalPerspectiveDsl.g:4507:9: ( ( '|' ) )
-        // InternalPerspectiveDsl.g:4508:10: ( '|' )
+        // InternalPerspectiveDsl.g:4608:9: ( ( '|' ) )
+        // InternalPerspectiveDsl.g:4609:10: ( '|' )
         {
-        // InternalPerspectiveDsl.g:4508:10: ( '|' )
-        // InternalPerspectiveDsl.g:4509:11: '|'
+        // InternalPerspectiveDsl.g:4609:10: ( '|' )
+        // InternalPerspectiveDsl.g:4610:11: '|'
         {
-        match(input,96,FOLLOW_2); if (state.failed) return ;
+        match(input,98,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25487,18 +25785,18 @@
 
     // $ANTLR start synpred24_InternalPerspectiveDsl
     public final void synpred24_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4586:6: ( ( () '[' ) )
-        // InternalPerspectiveDsl.g:4586:7: ( () '[' )
+        // InternalPerspectiveDsl.g:4687:6: ( ( () '[' ) )
+        // InternalPerspectiveDsl.g:4687:7: ( () '[' )
         {
-        // InternalPerspectiveDsl.g:4586:7: ( () '[' )
-        // InternalPerspectiveDsl.g:4587:7: () '['
+        // InternalPerspectiveDsl.g:4687:7: ( () '[' )
+        // InternalPerspectiveDsl.g:4688:7: () '['
         {
-        // InternalPerspectiveDsl.g:4587:7: ()
-        // InternalPerspectiveDsl.g:4588:7: 
+        // InternalPerspectiveDsl.g:4688:7: ()
+        // InternalPerspectiveDsl.g:4689:7: 
         {
         }
 
-        match(input,61,FOLLOW_2); if (state.failed) return ;
+        match(input,63,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25509,19 +25807,19 @@
 
     // $ANTLR start synpred25_InternalPerspectiveDsl
     public final void synpred25_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4659:4: ( ( () 'synchronized' '(' ) )
-        // InternalPerspectiveDsl.g:4659:5: ( () 'synchronized' '(' )
+        // InternalPerspectiveDsl.g:4760:4: ( ( () 'synchronized' '(' ) )
+        // InternalPerspectiveDsl.g:4760:5: ( () 'synchronized' '(' )
         {
-        // InternalPerspectiveDsl.g:4659:5: ( () 'synchronized' '(' )
-        // InternalPerspectiveDsl.g:4660:5: () 'synchronized' '('
+        // InternalPerspectiveDsl.g:4760:5: ( () 'synchronized' '(' )
+        // InternalPerspectiveDsl.g:4761:5: () 'synchronized' '('
         {
-        // InternalPerspectiveDsl.g:4660:5: ()
-        // InternalPerspectiveDsl.g:4661:5: 
+        // InternalPerspectiveDsl.g:4761:5: ()
+        // InternalPerspectiveDsl.g:4762:5: 
         {
         }
 
-        match(input,119,FOLLOW_72); if (state.failed) return ;
-        match(input,56,FOLLOW_2); if (state.failed) return ;
+        match(input,121,FOLLOW_72); if (state.failed) return ;
+        match(input,58,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25532,24 +25830,24 @@
 
     // $ANTLR start synpred26_InternalPerspectiveDsl
     public final void synpred26_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4704:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
-        // InternalPerspectiveDsl.g:4704:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalPerspectiveDsl.g:4805:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalPerspectiveDsl.g:4805:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
         {
-        // InternalPerspectiveDsl.g:4704:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
-        // InternalPerspectiveDsl.g:4705:5: () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':'
+        // InternalPerspectiveDsl.g:4805:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalPerspectiveDsl.g:4806:5: () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':'
         {
-        // InternalPerspectiveDsl.g:4705:5: ()
-        // InternalPerspectiveDsl.g:4706:5: 
+        // InternalPerspectiveDsl.g:4806:5: ()
+        // InternalPerspectiveDsl.g:4807:5: 
         {
         }
 
-        match(input,103,FOLLOW_72); if (state.failed) return ;
-        match(input,56,FOLLOW_46); if (state.failed) return ;
-        // InternalPerspectiveDsl.g:4709:5: ( ( ruleJvmFormalParameter ) )
-        // InternalPerspectiveDsl.g:4710:6: ( ruleJvmFormalParameter )
+        match(input,105,FOLLOW_72); if (state.failed) return ;
+        match(input,58,FOLLOW_46); if (state.failed) return ;
+        // InternalPerspectiveDsl.g:4810:5: ( ( ruleJvmFormalParameter ) )
+        // InternalPerspectiveDsl.g:4811:6: ( ruleJvmFormalParameter )
         {
-        // InternalPerspectiveDsl.g:4710:6: ( ruleJvmFormalParameter )
-        // InternalPerspectiveDsl.g:4711:7: ruleJvmFormalParameter
+        // InternalPerspectiveDsl.g:4811:6: ( ruleJvmFormalParameter )
+        // InternalPerspectiveDsl.g:4812:7: ruleJvmFormalParameter
         {
         pushFollow(FOLLOW_75);
         ruleJvmFormalParameter();
@@ -25562,7 +25860,7 @@
 
         }
 
-        match(input,100,FOLLOW_2); if (state.failed) return ;
+        match(input,102,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25573,18 +25871,18 @@
 
     // $ANTLR start synpred27_InternalPerspectiveDsl
     public final void synpred27_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4818:4: ( ( () '[' ) )
-        // InternalPerspectiveDsl.g:4818:5: ( () '[' )
+        // InternalPerspectiveDsl.g:4919:4: ( ( () '[' ) )
+        // InternalPerspectiveDsl.g:4919:5: ( () '[' )
         {
-        // InternalPerspectiveDsl.g:4818:5: ( () '[' )
-        // InternalPerspectiveDsl.g:4819:5: () '['
+        // InternalPerspectiveDsl.g:4919:5: ( () '[' )
+        // InternalPerspectiveDsl.g:4920:5: () '['
         {
-        // InternalPerspectiveDsl.g:4819:5: ()
-        // InternalPerspectiveDsl.g:4820:5: 
+        // InternalPerspectiveDsl.g:4920:5: ()
+        // InternalPerspectiveDsl.g:4921:5: 
         {
         }
 
-        match(input,61,FOLLOW_2); if (state.failed) return ;
+        match(input,63,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25595,28 +25893,28 @@
 
     // $ANTLR start synpred29_InternalPerspectiveDsl
     public final void synpred29_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:5123:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalPerspectiveDsl.g:5123:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:5224:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalPerspectiveDsl.g:5224:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
         {
-        // InternalPerspectiveDsl.g:5123:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalPerspectiveDsl.g:5124:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        // InternalPerspectiveDsl.g:5224:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:5225:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
         {
-        // InternalPerspectiveDsl.g:5124:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        // InternalPerspectiveDsl.g:5225:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
         int alt146=2;
         int LA146_0 = input.LA(1);
 
-        if ( (LA146_0==RULE_ID||LA146_0==56||LA146_0==81) ) {
+        if ( (LA146_0==RULE_ID||LA146_0==58||LA146_0==83) ) {
             alt146=1;
         }
         switch (alt146) {
             case 1 :
-                // InternalPerspectiveDsl.g:5125:6: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:5226:6: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 {
-                // InternalPerspectiveDsl.g:5125:6: ( ( ruleJvmFormalParameter ) )
-                // InternalPerspectiveDsl.g:5126:7: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:5226:6: ( ( ruleJvmFormalParameter ) )
+                // InternalPerspectiveDsl.g:5227:7: ( ruleJvmFormalParameter )
                 {
-                // InternalPerspectiveDsl.g:5126:7: ( ruleJvmFormalParameter )
-                // InternalPerspectiveDsl.g:5127:8: ruleJvmFormalParameter
+                // InternalPerspectiveDsl.g:5227:7: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:5228:8: ruleJvmFormalParameter
                 {
                 pushFollow(FOLLOW_67);
                 ruleJvmFormalParameter();
@@ -25629,27 +25927,27 @@
 
                 }
 
-                // InternalPerspectiveDsl.g:5130:6: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:5231:6: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 loop145:
                 do {
                     int alt145=2;
                     int LA145_0 = input.LA(1);
 
-                    if ( (LA145_0==57) ) {
+                    if ( (LA145_0==59) ) {
                         alt145=1;
                     }
 
 
                     switch (alt145) {
                 	case 1 :
-                	    // InternalPerspectiveDsl.g:5131:7: ',' ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:5232:7: ',' ( ( ruleJvmFormalParameter ) )
                 	    {
-                	    match(input,57,FOLLOW_46); if (state.failed) return ;
-                	    // InternalPerspectiveDsl.g:5132:7: ( ( ruleJvmFormalParameter ) )
-                	    // InternalPerspectiveDsl.g:5133:8: ( ruleJvmFormalParameter )
+                	    match(input,59,FOLLOW_46); if (state.failed) return ;
+                	    // InternalPerspectiveDsl.g:5233:7: ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:5234:8: ( ruleJvmFormalParameter )
                 	    {
-                	    // InternalPerspectiveDsl.g:5133:8: ( ruleJvmFormalParameter )
-                	    // InternalPerspectiveDsl.g:5134:9: ruleJvmFormalParameter
+                	    // InternalPerspectiveDsl.g:5234:8: ( ruleJvmFormalParameter )
+                	    // InternalPerspectiveDsl.g:5235:9: ruleJvmFormalParameter
                 	    {
                 	    pushFollow(FOLLOW_67);
                 	    ruleJvmFormalParameter();
@@ -25677,13 +25975,13 @@
 
         }
 
-        // InternalPerspectiveDsl.g:5139:5: ( ( '|' ) )
-        // InternalPerspectiveDsl.g:5140:6: ( '|' )
+        // InternalPerspectiveDsl.g:5240:5: ( ( '|' ) )
+        // InternalPerspectiveDsl.g:5241:6: ( '|' )
         {
-        // InternalPerspectiveDsl.g:5140:6: ( '|' )
-        // InternalPerspectiveDsl.g:5141:7: '|'
+        // InternalPerspectiveDsl.g:5241:6: ( '|' )
+        // InternalPerspectiveDsl.g:5242:7: '|'
         {
-        match(input,96,FOLLOW_2); if (state.failed) return ;
+        match(input,98,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25700,10 +25998,10 @@
 
     // $ANTLR start synpred31_InternalPerspectiveDsl
     public final void synpred31_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:5532:5: ( 'else' )
-        // InternalPerspectiveDsl.g:5532:6: 'else'
+        // InternalPerspectiveDsl.g:5633:5: ( 'else' )
+        // InternalPerspectiveDsl.g:5633:6: 'else'
         {
-        match(input,98,FOLLOW_2); if (state.failed) return ;
+        match(input,100,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -25711,18 +26009,18 @@
 
     // $ANTLR start synpred32_InternalPerspectiveDsl
     public final void synpred32_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:5591:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
-        // InternalPerspectiveDsl.g:5591:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalPerspectiveDsl.g:5692:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalPerspectiveDsl.g:5692:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
         {
-        // InternalPerspectiveDsl.g:5591:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
-        // InternalPerspectiveDsl.g:5592:7: '(' ( ( ruleJvmFormalParameter ) ) ':'
+        // InternalPerspectiveDsl.g:5692:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalPerspectiveDsl.g:5693:7: '(' ( ( ruleJvmFormalParameter ) ) ':'
         {
-        match(input,56,FOLLOW_46); if (state.failed) return ;
-        // InternalPerspectiveDsl.g:5593:7: ( ( ruleJvmFormalParameter ) )
-        // InternalPerspectiveDsl.g:5594:8: ( ruleJvmFormalParameter )
+        match(input,58,FOLLOW_46); if (state.failed) return ;
+        // InternalPerspectiveDsl.g:5694:7: ( ( ruleJvmFormalParameter ) )
+        // InternalPerspectiveDsl.g:5695:8: ( ruleJvmFormalParameter )
         {
-        // InternalPerspectiveDsl.g:5594:8: ( ruleJvmFormalParameter )
-        // InternalPerspectiveDsl.g:5595:9: ruleJvmFormalParameter
+        // InternalPerspectiveDsl.g:5695:8: ( ruleJvmFormalParameter )
+        // InternalPerspectiveDsl.g:5696:9: ruleJvmFormalParameter
         {
         pushFollow(FOLLOW_75);
         ruleJvmFormalParameter();
@@ -25735,7 +26033,7 @@
 
         }
 
-        match(input,100,FOLLOW_2); if (state.failed) return ;
+        match(input,102,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25746,17 +26044,17 @@
 
     // $ANTLR start synpred33_InternalPerspectiveDsl
     public final void synpred33_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:5658:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )
-        // InternalPerspectiveDsl.g:5658:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalPerspectiveDsl.g:5759:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalPerspectiveDsl.g:5759:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
         {
-        // InternalPerspectiveDsl.g:5658:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
-        // InternalPerspectiveDsl.g:5659:7: ( ( ruleJvmFormalParameter ) ) ':'
+        // InternalPerspectiveDsl.g:5759:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalPerspectiveDsl.g:5760:7: ( ( ruleJvmFormalParameter ) ) ':'
         {
-        // InternalPerspectiveDsl.g:5659:7: ( ( ruleJvmFormalParameter ) )
-        // InternalPerspectiveDsl.g:5660:8: ( ruleJvmFormalParameter )
+        // InternalPerspectiveDsl.g:5760:7: ( ( ruleJvmFormalParameter ) )
+        // InternalPerspectiveDsl.g:5761:8: ( ruleJvmFormalParameter )
         {
-        // InternalPerspectiveDsl.g:5660:8: ( ruleJvmFormalParameter )
-        // InternalPerspectiveDsl.g:5661:9: ruleJvmFormalParameter
+        // InternalPerspectiveDsl.g:5761:8: ( ruleJvmFormalParameter )
+        // InternalPerspectiveDsl.g:5762:9: ruleJvmFormalParameter
         {
         pushFollow(FOLLOW_75);
         ruleJvmFormalParameter();
@@ -25769,7 +26067,7 @@
 
         }
 
-        match(input,100,FOLLOW_2); if (state.failed) return ;
+        match(input,102,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25780,17 +26078,17 @@
 
     // $ANTLR start synpred35_InternalPerspectiveDsl
     public final void synpred35_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:6476:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
-        // InternalPerspectiveDsl.g:6476:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        // InternalPerspectiveDsl.g:6577:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
+        // InternalPerspectiveDsl.g:6577:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
         {
-        // InternalPerspectiveDsl.g:6476:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
-        // InternalPerspectiveDsl.g:6477:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
+        // InternalPerspectiveDsl.g:6577:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        // InternalPerspectiveDsl.g:6578:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
         {
-        // InternalPerspectiveDsl.g:6477:6: ( ( ruleJvmTypeReference ) )
-        // InternalPerspectiveDsl.g:6478:7: ( ruleJvmTypeReference )
+        // InternalPerspectiveDsl.g:6578:6: ( ( ruleJvmTypeReference ) )
+        // InternalPerspectiveDsl.g:6579:7: ( ruleJvmTypeReference )
         {
-        // InternalPerspectiveDsl.g:6478:7: ( ruleJvmTypeReference )
-        // InternalPerspectiveDsl.g:6479:8: ruleJvmTypeReference
+        // InternalPerspectiveDsl.g:6579:7: ( ruleJvmTypeReference )
+        // InternalPerspectiveDsl.g:6580:8: ruleJvmTypeReference
         {
         pushFollow(FOLLOW_4);
         ruleJvmTypeReference();
@@ -25803,11 +26101,11 @@
 
         }
 
-        // InternalPerspectiveDsl.g:6482:6: ( ( ruleValidID ) )
-        // InternalPerspectiveDsl.g:6483:7: ( ruleValidID )
+        // InternalPerspectiveDsl.g:6583:6: ( ( ruleValidID ) )
+        // InternalPerspectiveDsl.g:6584:7: ( ruleValidID )
         {
-        // InternalPerspectiveDsl.g:6483:7: ( ruleValidID )
-        // InternalPerspectiveDsl.g:6484:8: ruleValidID
+        // InternalPerspectiveDsl.g:6584:7: ( ruleValidID )
+        // InternalPerspectiveDsl.g:6585:8: ruleValidID
         {
         pushFollow(FOLLOW_2);
         ruleValidID();
@@ -25830,13 +26128,13 @@
 
     // $ANTLR start synpred36_InternalPerspectiveDsl
     public final void synpred36_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:6788:5: ( ( '(' ) )
-        // InternalPerspectiveDsl.g:6788:6: ( '(' )
+        // InternalPerspectiveDsl.g:6889:5: ( ( '(' ) )
+        // InternalPerspectiveDsl.g:6889:6: ( '(' )
         {
-        // InternalPerspectiveDsl.g:6788:6: ( '(' )
-        // InternalPerspectiveDsl.g:6789:6: '('
+        // InternalPerspectiveDsl.g:6889:6: ( '(' )
+        // InternalPerspectiveDsl.g:6890:6: '('
         {
-        match(input,56,FOLLOW_2); if (state.failed) return ;
+        match(input,58,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25847,33 +26145,33 @@
 
     // $ANTLR start synpred37_InternalPerspectiveDsl
     public final void synpred37_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:6807:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalPerspectiveDsl.g:6807:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:6908:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalPerspectiveDsl.g:6908:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
         {
-        // InternalPerspectiveDsl.g:6807:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalPerspectiveDsl.g:6808:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        // InternalPerspectiveDsl.g:6908:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:6909:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
         {
-        // InternalPerspectiveDsl.g:6808:7: ()
-        // InternalPerspectiveDsl.g:6809:7: 
+        // InternalPerspectiveDsl.g:6909:7: ()
+        // InternalPerspectiveDsl.g:6910:7: 
         {
         }
 
-        // InternalPerspectiveDsl.g:6810:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        // InternalPerspectiveDsl.g:6911:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
         int alt150=2;
         int LA150_0 = input.LA(1);
 
-        if ( (LA150_0==RULE_ID||LA150_0==56||LA150_0==81) ) {
+        if ( (LA150_0==RULE_ID||LA150_0==58||LA150_0==83) ) {
             alt150=1;
         }
         switch (alt150) {
             case 1 :
-                // InternalPerspectiveDsl.g:6811:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:6912:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 {
-                // InternalPerspectiveDsl.g:6811:8: ( ( ruleJvmFormalParameter ) )
-                // InternalPerspectiveDsl.g:6812:9: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:6912:8: ( ( ruleJvmFormalParameter ) )
+                // InternalPerspectiveDsl.g:6913:9: ( ruleJvmFormalParameter )
                 {
-                // InternalPerspectiveDsl.g:6812:9: ( ruleJvmFormalParameter )
-                // InternalPerspectiveDsl.g:6813:10: ruleJvmFormalParameter
+                // InternalPerspectiveDsl.g:6913:9: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:6914:10: ruleJvmFormalParameter
                 {
                 pushFollow(FOLLOW_67);
                 ruleJvmFormalParameter();
@@ -25886,27 +26184,27 @@
 
                 }
 
-                // InternalPerspectiveDsl.g:6816:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:6917:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 loop149:
                 do {
                     int alt149=2;
                     int LA149_0 = input.LA(1);
 
-                    if ( (LA149_0==57) ) {
+                    if ( (LA149_0==59) ) {
                         alt149=1;
                     }
 
 
                     switch (alt149) {
                 	case 1 :
-                	    // InternalPerspectiveDsl.g:6817:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:6918:9: ',' ( ( ruleJvmFormalParameter ) )
                 	    {
-                	    match(input,57,FOLLOW_46); if (state.failed) return ;
-                	    // InternalPerspectiveDsl.g:6818:9: ( ( ruleJvmFormalParameter ) )
-                	    // InternalPerspectiveDsl.g:6819:10: ( ruleJvmFormalParameter )
+                	    match(input,59,FOLLOW_46); if (state.failed) return ;
+                	    // InternalPerspectiveDsl.g:6919:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:6920:10: ( ruleJvmFormalParameter )
                 	    {
-                	    // InternalPerspectiveDsl.g:6819:10: ( ruleJvmFormalParameter )
-                	    // InternalPerspectiveDsl.g:6820:11: ruleJvmFormalParameter
+                	    // InternalPerspectiveDsl.g:6920:10: ( ruleJvmFormalParameter )
+                	    // InternalPerspectiveDsl.g:6921:11: ruleJvmFormalParameter
                 	    {
                 	    pushFollow(FOLLOW_67);
                 	    ruleJvmFormalParameter();
@@ -25934,13 +26232,13 @@
 
         }
 
-        // InternalPerspectiveDsl.g:6825:7: ( ( '|' ) )
-        // InternalPerspectiveDsl.g:6826:8: ( '|' )
+        // InternalPerspectiveDsl.g:6926:7: ( ( '|' ) )
+        // InternalPerspectiveDsl.g:6927:8: ( '|' )
         {
-        // InternalPerspectiveDsl.g:6826:8: ( '|' )
-        // InternalPerspectiveDsl.g:6827:9: '|'
+        // InternalPerspectiveDsl.g:6927:8: ( '|' )
+        // InternalPerspectiveDsl.g:6928:9: '|'
         {
-        match(input,96,FOLLOW_2); if (state.failed) return ;
+        match(input,98,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25957,18 +26255,18 @@
 
     // $ANTLR start synpred38_InternalPerspectiveDsl
     public final void synpred38_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:6904:4: ( ( () '[' ) )
-        // InternalPerspectiveDsl.g:6904:5: ( () '[' )
+        // InternalPerspectiveDsl.g:7005:4: ( ( () '[' ) )
+        // InternalPerspectiveDsl.g:7005:5: ( () '[' )
         {
-        // InternalPerspectiveDsl.g:6904:5: ( () '[' )
-        // InternalPerspectiveDsl.g:6905:5: () '['
+        // InternalPerspectiveDsl.g:7005:5: ( () '[' )
+        // InternalPerspectiveDsl.g:7006:5: () '['
         {
-        // InternalPerspectiveDsl.g:6905:5: ()
-        // InternalPerspectiveDsl.g:6906:5: 
+        // InternalPerspectiveDsl.g:7006:5: ()
+        // InternalPerspectiveDsl.g:7007:5: 
         {
         }
 
-        match(input,61,FOLLOW_2); if (state.failed) return ;
+        match(input,63,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25979,10 +26277,10 @@
 
     // $ANTLR start synpred39_InternalPerspectiveDsl
     public final void synpred39_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7064:5: ( '<' )
-        // InternalPerspectiveDsl.g:7064:6: '<'
+        // InternalPerspectiveDsl.g:7165:5: ( '<' )
+        // InternalPerspectiveDsl.g:7165:6: '<'
         {
-        match(input,68,FOLLOW_2); if (state.failed) return ;
+        match(input,70,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -25990,13 +26288,13 @@
 
     // $ANTLR start synpred40_InternalPerspectiveDsl
     public final void synpred40_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7121:5: ( ( '(' ) )
-        // InternalPerspectiveDsl.g:7121:6: ( '(' )
+        // InternalPerspectiveDsl.g:7222:5: ( ( '(' ) )
+        // InternalPerspectiveDsl.g:7222:6: ( '(' )
         {
-        // InternalPerspectiveDsl.g:7121:6: ( '(' )
-        // InternalPerspectiveDsl.g:7122:6: '('
+        // InternalPerspectiveDsl.g:7222:6: ( '(' )
+        // InternalPerspectiveDsl.g:7223:6: '('
         {
-        match(input,56,FOLLOW_2); if (state.failed) return ;
+        match(input,58,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26007,33 +26305,33 @@
 
     // $ANTLR start synpred41_InternalPerspectiveDsl
     public final void synpred41_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7140:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalPerspectiveDsl.g:7140:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:7241:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalPerspectiveDsl.g:7241:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
         {
-        // InternalPerspectiveDsl.g:7140:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalPerspectiveDsl.g:7141:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        // InternalPerspectiveDsl.g:7241:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:7242:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
         {
-        // InternalPerspectiveDsl.g:7141:7: ()
-        // InternalPerspectiveDsl.g:7142:7: 
+        // InternalPerspectiveDsl.g:7242:7: ()
+        // InternalPerspectiveDsl.g:7243:7: 
         {
         }
 
-        // InternalPerspectiveDsl.g:7143:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        // InternalPerspectiveDsl.g:7244:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
         int alt152=2;
         int LA152_0 = input.LA(1);
 
-        if ( (LA152_0==RULE_ID||LA152_0==56||LA152_0==81) ) {
+        if ( (LA152_0==RULE_ID||LA152_0==58||LA152_0==83) ) {
             alt152=1;
         }
         switch (alt152) {
             case 1 :
-                // InternalPerspectiveDsl.g:7144:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:7245:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 {
-                // InternalPerspectiveDsl.g:7144:8: ( ( ruleJvmFormalParameter ) )
-                // InternalPerspectiveDsl.g:7145:9: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:7245:8: ( ( ruleJvmFormalParameter ) )
+                // InternalPerspectiveDsl.g:7246:9: ( ruleJvmFormalParameter )
                 {
-                // InternalPerspectiveDsl.g:7145:9: ( ruleJvmFormalParameter )
-                // InternalPerspectiveDsl.g:7146:10: ruleJvmFormalParameter
+                // InternalPerspectiveDsl.g:7246:9: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:7247:10: ruleJvmFormalParameter
                 {
                 pushFollow(FOLLOW_67);
                 ruleJvmFormalParameter();
@@ -26046,27 +26344,27 @@
 
                 }
 
-                // InternalPerspectiveDsl.g:7149:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:7250:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 loop151:
                 do {
                     int alt151=2;
                     int LA151_0 = input.LA(1);
 
-                    if ( (LA151_0==57) ) {
+                    if ( (LA151_0==59) ) {
                         alt151=1;
                     }
 
 
                     switch (alt151) {
                 	case 1 :
-                	    // InternalPerspectiveDsl.g:7150:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:7251:9: ',' ( ( ruleJvmFormalParameter ) )
                 	    {
-                	    match(input,57,FOLLOW_46); if (state.failed) return ;
-                	    // InternalPerspectiveDsl.g:7151:9: ( ( ruleJvmFormalParameter ) )
-                	    // InternalPerspectiveDsl.g:7152:10: ( ruleJvmFormalParameter )
+                	    match(input,59,FOLLOW_46); if (state.failed) return ;
+                	    // InternalPerspectiveDsl.g:7252:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:7253:10: ( ruleJvmFormalParameter )
                 	    {
-                	    // InternalPerspectiveDsl.g:7152:10: ( ruleJvmFormalParameter )
-                	    // InternalPerspectiveDsl.g:7153:11: ruleJvmFormalParameter
+                	    // InternalPerspectiveDsl.g:7253:10: ( ruleJvmFormalParameter )
+                	    // InternalPerspectiveDsl.g:7254:11: ruleJvmFormalParameter
                 	    {
                 	    pushFollow(FOLLOW_67);
                 	    ruleJvmFormalParameter();
@@ -26094,13 +26392,13 @@
 
         }
 
-        // InternalPerspectiveDsl.g:7158:7: ( ( '|' ) )
-        // InternalPerspectiveDsl.g:7159:8: ( '|' )
+        // InternalPerspectiveDsl.g:7259:7: ( ( '|' ) )
+        // InternalPerspectiveDsl.g:7260:8: ( '|' )
         {
-        // InternalPerspectiveDsl.g:7159:8: ( '|' )
-        // InternalPerspectiveDsl.g:7160:9: '|'
+        // InternalPerspectiveDsl.g:7260:8: ( '|' )
+        // InternalPerspectiveDsl.g:7261:9: '|'
         {
-        match(input,96,FOLLOW_2); if (state.failed) return ;
+        match(input,98,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26117,18 +26415,18 @@
 
     // $ANTLR start synpred42_InternalPerspectiveDsl
     public final void synpred42_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7237:4: ( ( () '[' ) )
-        // InternalPerspectiveDsl.g:7237:5: ( () '[' )
+        // InternalPerspectiveDsl.g:7338:4: ( ( () '[' ) )
+        // InternalPerspectiveDsl.g:7338:5: ( () '[' )
         {
-        // InternalPerspectiveDsl.g:7237:5: ( () '[' )
-        // InternalPerspectiveDsl.g:7238:5: () '['
+        // InternalPerspectiveDsl.g:7338:5: ( () '[' )
+        // InternalPerspectiveDsl.g:7339:5: () '['
         {
-        // InternalPerspectiveDsl.g:7238:5: ()
-        // InternalPerspectiveDsl.g:7239:5: 
+        // InternalPerspectiveDsl.g:7339:5: ()
+        // InternalPerspectiveDsl.g:7340:5: 
         {
         }
 
-        match(input,61,FOLLOW_2); if (state.failed) return ;
+        match(input,63,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26139,10 +26437,10 @@
 
     // $ANTLR start synpred43_InternalPerspectiveDsl
     public final void synpred43_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7580: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:7681: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)>=49 && input.LA(1)<=51)||input.LA(1)==56||(input.LA(1)>=60 && input.LA(1)<=61)||input.LA(1)==68||(input.LA(1)>=84 && input.LA(1)<=85)||input.LA(1)==89||input.LA(1)==97||input.LA(1)==99||(input.LA(1)>=103 && input.LA(1)<=105)||(input.LA(1)>=108 && input.LA(1)<=117)||input.LA(1)==119 ) {
+        if ( (input.LA(1)>=RULE_ID && input.LA(1)<=RULE_DECIMAL)||input.LA(1)==14||(input.LA(1)>=51 && input.LA(1)<=53)||input.LA(1)==58||(input.LA(1)>=62 && input.LA(1)<=63)||input.LA(1)==70||(input.LA(1)>=86 && input.LA(1)<=87)||input.LA(1)==91||input.LA(1)==99||input.LA(1)==101||(input.LA(1)>=105 && input.LA(1)<=107)||(input.LA(1)>=110 && input.LA(1)<=119)||input.LA(1)==121 ) {
             input.consume();
             state.errorRecovery=false;state.failed=false;
         }
@@ -26159,10 +26457,10 @@
 
     // $ANTLR start synpred44_InternalPerspectiveDsl
     public final void synpred44_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7651:6: ( 'catch' )
-        // InternalPerspectiveDsl.g:7651:7: 'catch'
+        // InternalPerspectiveDsl.g:7752:6: ( 'catch' )
+        // InternalPerspectiveDsl.g:7752:7: 'catch'
         {
-        match(input,120,FOLLOW_2); if (state.failed) return ;
+        match(input,122,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -26170,10 +26468,10 @@
 
     // $ANTLR start synpred45_InternalPerspectiveDsl
     public final void synpred45_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7672:7: ( 'finally' )
-        // InternalPerspectiveDsl.g:7672:8: 'finally'
+        // InternalPerspectiveDsl.g:7773:7: ( 'finally' )
+        // InternalPerspectiveDsl.g:7773:8: 'finally'
         {
-        match(input,118,FOLLOW_2); if (state.failed) return ;
+        match(input,120,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -26181,10 +26479,10 @@
 
     // $ANTLR start synpred48_InternalPerspectiveDsl
     public final void synpred48_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7916:5: ( '.' )
-        // InternalPerspectiveDsl.g:7916:6: '.'
+        // InternalPerspectiveDsl.g:8017:5: ( '.' )
+        // InternalPerspectiveDsl.g:8017:6: '.'
         {
-        match(input,93,FOLLOW_2); if (state.failed) return ;
+        match(input,95,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -26192,14 +26490,14 @@
 
     // $ANTLR start synpred49_InternalPerspectiveDsl
     public final void synpred49_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:8042:5: ( ( () ruleArrayBrackets ) )
-        // InternalPerspectiveDsl.g:8042:6: ( () ruleArrayBrackets )
+        // InternalPerspectiveDsl.g:8143:5: ( ( () ruleArrayBrackets ) )
+        // InternalPerspectiveDsl.g:8143:6: ( () ruleArrayBrackets )
         {
-        // InternalPerspectiveDsl.g:8042:6: ( () ruleArrayBrackets )
-        // InternalPerspectiveDsl.g:8043:6: () ruleArrayBrackets
+        // InternalPerspectiveDsl.g:8143:6: ( () ruleArrayBrackets )
+        // InternalPerspectiveDsl.g:8144:6: () ruleArrayBrackets
         {
-        // InternalPerspectiveDsl.g:8043:6: ()
-        // InternalPerspectiveDsl.g:8044:6: 
+        // InternalPerspectiveDsl.g:8144:6: ()
+        // InternalPerspectiveDsl.g:8145:6: 
         {
         }
 
@@ -26218,10 +26516,10 @@
 
     // $ANTLR start synpred50_InternalPerspectiveDsl
     public final void synpred50_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:8239:5: ( '<' )
-        // InternalPerspectiveDsl.g:8239:6: '<'
+        // InternalPerspectiveDsl.g:8340:5: ( '<' )
+        // InternalPerspectiveDsl.g:8340:6: '<'
         {
-        match(input,68,FOLLOW_2); if (state.failed) return ;
+        match(input,70,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -26229,18 +26527,18 @@
 
     // $ANTLR start synpred51_InternalPerspectiveDsl
     public final void synpred51_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:8295:6: ( ( () '.' ) )
-        // InternalPerspectiveDsl.g:8295:7: ( () '.' )
+        // InternalPerspectiveDsl.g:8396:6: ( ( () '.' ) )
+        // InternalPerspectiveDsl.g:8396:7: ( () '.' )
         {
-        // InternalPerspectiveDsl.g:8295:7: ( () '.' )
-        // InternalPerspectiveDsl.g:8296:7: () '.'
+        // InternalPerspectiveDsl.g:8396:7: ( () '.' )
+        // InternalPerspectiveDsl.g:8397:7: () '.'
         {
-        // InternalPerspectiveDsl.g:8296:7: ()
-        // InternalPerspectiveDsl.g:8297:7: 
+        // InternalPerspectiveDsl.g:8397:7: ()
+        // InternalPerspectiveDsl.g:8398:7: 
         {
         }
 
-        match(input,93,FOLLOW_2); if (state.failed) return ;
+        match(input,95,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26251,10 +26549,10 @@
 
     // $ANTLR start synpred52_InternalPerspectiveDsl
     public final void synpred52_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:8333:7: ( '<' )
-        // InternalPerspectiveDsl.g:8333:8: '<'
+        // InternalPerspectiveDsl.g:8434:7: ( '<' )
+        // InternalPerspectiveDsl.g:8434:8: '<'
         {
-        match(input,68,FOLLOW_2); if (state.failed) return ;
+        match(input,70,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -26921,18 +27219,18 @@
     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\65\1\uffff\1\135\1\uffff\1\64\2\uffff\1\135";
+    static final String dfa_4s = "\1\67\1\uffff\1\137\1\uffff\1\66\2\uffff\1\137";
     static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\4\1\uffff\1\2\1\3\1\uffff";
     static final String dfa_6s = "\10\uffff}>";
     static final String[] dfa_7s = {
-            "\1\2\55\uffff\1\1\2\uffff\1\3",
+            "\1\2\57\uffff\1\1\2\uffff\1\3",
             "",
-            "\1\5\43\uffff\1\5\4\uffff\1\5\46\uffff\1\4",
+            "\1\5\45\uffff\1\5\4\uffff\1\5\46\uffff\1\4",
             "",
-            "\1\7\57\uffff\1\6",
+            "\1\7\61\uffff\1\6",
             "",
             "",
-            "\1\5\43\uffff\1\5\4\uffff\1\5\46\uffff\1\4"
+            "\1\5\45\uffff\1\5\4\uffff\1\5\46\uffff\1\4"
     };
 
     static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
@@ -26957,16 +27255,16 @@
             this.transition = dfa_7;
         }
         public String getDescription() {
-            return "2009: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 "2110: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\167\1\0\42\uffff";
+    static final String dfa_10s = "\1\171\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\42\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\44\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",
             "",
             "",
@@ -27025,7 +27323,7 @@
             this.transition = dfa_13;
         }
         public String getDescription() {
-            return "2226:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?";
+            return "2327: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;
@@ -27056,11 +27354,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\167\1\0\41\uffff";
+    static final String dfa_16s = "\1\171\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\42\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\44\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",
             "",
             "",
@@ -27118,7 +27416,7 @@
             this.transition = dfa_19;
         }
         public String getDescription() {
-            return "2406: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 "2507: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;
@@ -27162,7 +27460,7 @@
             this.transition = dfa_19;
         }
         public String getDescription() {
-            return "2548:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )";
+            return "2649: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;
@@ -27194,11 +27492,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\170\7\0\2\uffff";
+    static final String dfa_23s = "\1\172\7\0\2\uffff";
     static final String dfa_24s = "\10\uffff\1\2\1\1";
-    static final String dfa_25s = "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\0\2\uffff}>";
+    static final String dfa_25s = "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\0\1\6\2\uffff}>";
     static final String[] dfa_26s = {
-            "\5\10\5\uffff\2\10\41\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\43\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",
@@ -27232,17 +27530,17 @@
             this.transition = dfa_26;
         }
         public String getDescription() {
-            return "2777:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?";
+            return "2878:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA33_7 = input.LA(1);
+                        int LA33_6 = input.LA(1);
 
                          
-                        int index33_7 = input.index();
+                        int index33_6 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalPerspectiveDsl()) ) {s = 9;}
@@ -27250,7 +27548,7 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index33_7);
+                        input.seek(index33_6);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
@@ -27329,10 +27627,10 @@
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA33_6 = input.LA(1);
+                        int LA33_7 = input.LA(1);
 
                          
-                        int index33_6 = input.index();
+                        int index33_7 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalPerspectiveDsl()) ) {s = 9;}
@@ -27340,7 +27638,7 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index33_6);
+                        input.seek(index33_7);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -27354,11 +27652,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\170\1\uffff\10\0\1\uffff";
+    static final String dfa_30s = "\1\172\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\4\1\5\1\2\1\3\1\1\1\0\1\6\1\7\1\uffff}>";
+    static final String dfa_32s = "\2\uffff\1\5\1\1\1\3\1\4\1\0\1\2\1\6\1\7\1\uffff}>";
     static final String[] dfa_33s = {
-            "\5\1\5\uffff\2\1\41\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\43\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",
@@ -27393,28 +27691,13 @@
             this.transition = dfa_33;
         }
         public String getDescription() {
-            return "()* loopback of 3491:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*";
+            return "()* loopback of 3592:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA43_7 = input.LA(1);
-
-                         
-                        int index43_7 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred13_InternalPerspectiveDsl()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index43_7);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
                         int LA43_6 = input.LA(1);
 
                          
@@ -27429,7 +27712,37 @@
                         input.seek(index43_6);
                         if ( s>=0 ) return s;
                         break;
+                    case 1 : 
+                        int LA43_3 = input.LA(1);
+
+                         
+                        int index43_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index43_3);
+                        if ( s>=0 ) return s;
+                        break;
                     case 2 : 
+                        int LA43_7 = input.LA(1);
+
+                         
+                        int index43_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index43_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
                         int LA43_4 = input.LA(1);
 
                          
@@ -27444,7 +27757,7 @@
                         input.seek(index43_4);
                         if ( s>=0 ) return s;
                         break;
-                    case 3 : 
+                    case 4 : 
                         int LA43_5 = input.LA(1);
 
                          
@@ -27459,7 +27772,7 @@
                         input.seek(index43_5);
                         if ( s>=0 ) return s;
                         break;
-                    case 4 : 
+                    case 5 : 
                         int LA43_2 = input.LA(1);
 
                          
@@ -27474,21 +27787,6 @@
                         input.seek(index43_2);
                         if ( s>=0 ) return s;
                         break;
-                    case 5 : 
-                        int LA43_3 = input.LA(1);
-
-                         
-                        int index43_3 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred13_InternalPerspectiveDsl()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index43_3);
-                        if ( s>=0 ) return s;
-                        break;
                     case 6 : 
                         int LA43_8 = input.LA(1);
 
@@ -27527,15 +27825,15 @@
             throw nvae;
         }
     }
-    static final String dfa_34s = "\1\104\2\uffff\1\105\7\uffff";
-    static final String dfa_35s = "\1\123\2\uffff\1\120\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\106\2\uffff\1\107\7\uffff";
+    static final String dfa_35s = "\1\125\2\uffff\1\122\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",
             "",
             "",
             "",
@@ -27564,17 +27862,17 @@
             this.transition = dfa_38;
         }
         public String getDescription() {
-            return "3567:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )";
+            return "3668: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\170\1\0\114\uffff";
+    static final String dfa_42s = "\1\172\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\41\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\43\uffff\4\2\1\uffff\1\2\1\uffff\1\1\2\2\1\uffff\44\2\1\uffff\30\2",
             "\1\uffff",
             "",
             "",
@@ -27676,7 +27974,7 @@
             this.transition = dfa_45;
         }
         public String getDescription() {
-            return "4468: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 "4569: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;
@@ -27706,11 +28004,11 @@
         }
     }
     static final String dfa_46s = "\1\4\2\0\41\uffff";
-    static final String dfa_47s = "\1\167\2\0\41\uffff";
+    static final String dfa_47s = "\1\171\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\42\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\44\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",
             "",
@@ -27767,7 +28065,7 @@
             this.transition = dfa_50;
         }
         public String getDescription() {
-            return "4487:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?";
+            return "4588: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;
@@ -27782,15 +28080,15 @@
                         s = -1;
                         if ( (LA61_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA61_0==56) ) {s = 2;}
+                        else if ( (LA61_0==58) ) {s = 2;}
 
-                        else if ( (LA61_0==81) && (synpred23_InternalPerspectiveDsl())) {s = 3;}
+                        else if ( (LA61_0==83) && (synpred23_InternalPerspectiveDsl())) {s = 3;}
 
-                        else if ( (LA61_0==96) && (synpred23_InternalPerspectiveDsl())) {s = 4;}
+                        else if ( (LA61_0==98) && (synpred23_InternalPerspectiveDsl())) {s = 4;}
 
-                        else if ( ((LA61_0>=RULE_STRING && LA61_0<=RULE_DECIMAL)||LA61_0==14||(LA61_0>=49 && LA61_0<=51)||(LA61_0>=60 && LA61_0<=61)||LA61_0==68||(LA61_0>=84 && LA61_0<=85)||LA61_0==89||LA61_0==97||LA61_0==99||(LA61_0>=103 && LA61_0<=105)||(LA61_0>=108 && LA61_0<=117)||LA61_0==119) ) {s = 5;}
+                        else if ( ((LA61_0>=RULE_STRING && LA61_0<=RULE_DECIMAL)||LA61_0==14||(LA61_0>=51 && LA61_0<=53)||(LA61_0>=62 && LA61_0<=63)||LA61_0==70||(LA61_0>=86 && LA61_0<=87)||LA61_0==91||LA61_0==99||LA61_0==101||(LA61_0>=105 && LA61_0<=107)||(LA61_0>=110 && LA61_0<=119)||LA61_0==121) ) {s = 5;}
 
-                        else if ( (LA61_0==58) ) {s = 35;}
+                        else if ( (LA61_0==60) ) {s = 35;}
 
                          
                         input.seek(index61_0);
@@ -27835,7 +28133,7 @@
         }
     }
     static final String[] dfa_51s = {
-            "\5\2\5\uffff\2\2\41\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\43\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",
             "",
             "",
@@ -27930,7 +28228,7 @@
             this.transition = dfa_51;
         }
         public String getDescription() {
-            return "4585:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?";
+            return "4686:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -27961,11 +28259,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\167\26\uffff\1\0\10\uffff";
+    static final String dfa_54s = "\1\171\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\42\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\44\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",
             "",
             "",
             "",
@@ -28020,7 +28318,7 @@
             this.transition = dfa_57;
         }
         public String getDescription() {
-            return "4630: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 "4731: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;
@@ -28033,33 +28331,33 @@
                         int index65_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA65_0==110) ) {s = 1;}
+                        if ( (LA65_0==112) ) {s = 1;}
 
                         else if ( (LA65_0==14) ) {s = 2;}
 
-                        else if ( (LA65_0==99) ) {s = 3;}
+                        else if ( (LA65_0==101) ) {s = 3;}
 
-                        else if ( (LA65_0==119) && (synpred25_InternalPerspectiveDsl())) {s = 4;}
+                        else if ( (LA65_0==121) && (synpred25_InternalPerspectiveDsl())) {s = 4;}
 
-                        else if ( (LA65_0==RULE_ID||(LA65_0>=49 && LA65_0<=51)||LA65_0==68||(LA65_0>=108 && LA65_0<=109)) ) {s = 5;}
+                        else if ( (LA65_0==RULE_ID||(LA65_0>=51 && LA65_0<=53)||LA65_0==70||(LA65_0>=110 && LA65_0<=111)) ) {s = 5;}
 
-                        else if ( ((LA65_0>=RULE_STRING && LA65_0<=RULE_DECIMAL)||(LA65_0>=60 && LA65_0<=61)||(LA65_0>=111 && LA65_0<=114)) ) {s = 12;}
+                        else if ( ((LA65_0>=RULE_STRING && LA65_0<=RULE_DECIMAL)||(LA65_0>=62 && LA65_0<=63)||(LA65_0>=113 && LA65_0<=116)) ) {s = 12;}
 
-                        else if ( (LA65_0==97) ) {s = 22;}
+                        else if ( (LA65_0==99) ) {s = 22;}
 
-                        else if ( (LA65_0==103) ) {s = 23;}
+                        else if ( (LA65_0==105) ) {s = 23;}
 
-                        else if ( (LA65_0==104) ) {s = 24;}
+                        else if ( (LA65_0==106) ) {s = 24;}
 
-                        else if ( (LA65_0==105) ) {s = 25;}
+                        else if ( (LA65_0==107) ) {s = 25;}
 
-                        else if ( (LA65_0==115) ) {s = 26;}
+                        else if ( (LA65_0==117) ) {s = 26;}
 
-                        else if ( (LA65_0==116) ) {s = 27;}
+                        else if ( (LA65_0==118) ) {s = 27;}
 
-                        else if ( (LA65_0==117) ) {s = 28;}
+                        else if ( (LA65_0==119) ) {s = 28;}
 
-                        else if ( (LA65_0==56) ) {s = 29;}
+                        else if ( (LA65_0==58) ) {s = 29;}
 
                          
                         input.seek(index65_0);
@@ -28090,11 +28388,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\167\2\0\43\uffff";
+    static final String dfa_60s = "\1\171\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\42\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\44\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",
             "",
@@ -28155,7 +28453,7 @@
             this.transition = dfa_63;
         }
         public String getDescription() {
-            return "5122:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?";
+            return "5223: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;
@@ -28170,13 +28468,13 @@
                         s = -1;
                         if ( (LA74_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA74_0==56) ) {s = 2;}
+                        else if ( (LA74_0==58) ) {s = 2;}
 
-                        else if ( (LA74_0==81) && (synpred29_InternalPerspectiveDsl())) {s = 3;}
+                        else if ( (LA74_0==83) && (synpred29_InternalPerspectiveDsl())) {s = 3;}
 
-                        else if ( (LA74_0==96) && (synpred29_InternalPerspectiveDsl())) {s = 4;}
+                        else if ( (LA74_0==98) && (synpred29_InternalPerspectiveDsl())) {s = 4;}
 
-                        else if ( ((LA74_0>=RULE_STRING && LA74_0<=RULE_DECIMAL)||LA74_0==14||(LA74_0>=49 && LA74_0<=51)||(LA74_0>=60 && LA74_0<=62)||LA74_0==68||(LA74_0>=84 && LA74_0<=85)||LA74_0==89||LA74_0==97||LA74_0==99||(LA74_0>=103 && LA74_0<=117)||LA74_0==119) ) {s = 5;}
+                        else if ( ((LA74_0>=RULE_STRING && LA74_0<=RULE_DECIMAL)||LA74_0==14||(LA74_0>=51 && LA74_0<=53)||(LA74_0>=62 && LA74_0<=64)||LA74_0==70||(LA74_0>=86 && LA74_0<=87)||LA74_0==91||LA74_0==99||LA74_0==101||(LA74_0>=105 && LA74_0<=119)||LA74_0==121) ) {s = 5;}
 
                          
                         input.seek(index74_0);
@@ -28221,7 +28519,7 @@
         }
     }
     static final String[] dfa_64s = {
-            "\5\2\5\uffff\1\2\42\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\44\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",
             "",
             "",
@@ -28273,7 +28571,7 @@
             this.transition = dfa_64;
         }
         public String getDescription() {
-            return "5588: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 "5689: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;
@@ -28304,11 +28602,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\167\2\0\37\uffff";
+    static final String dfa_67s = "\1\171\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\42\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\44\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",
             "",
@@ -28365,7 +28663,7 @@
             this.transition = dfa_70;
         }
         public String getDescription() {
-            return "5657:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?";
+            return "5758:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -28380,11 +28678,11 @@
                         s = -1;
                         if ( (LA80_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA80_0==56) ) {s = 2;}
+                        else if ( (LA80_0==58) ) {s = 2;}
 
-                        else if ( (LA80_0==81) && (synpred33_InternalPerspectiveDsl())) {s = 3;}
+                        else if ( (LA80_0==83) && (synpred33_InternalPerspectiveDsl())) {s = 3;}
 
-                        else if ( ((LA80_0>=RULE_STRING && LA80_0<=RULE_DECIMAL)||LA80_0==14||(LA80_0>=49 && LA80_0<=51)||(LA80_0>=60 && LA80_0<=61)||LA80_0==68||(LA80_0>=84 && LA80_0<=85)||LA80_0==89||LA80_0==97||LA80_0==99||(LA80_0>=103 && LA80_0<=105)||(LA80_0>=108 && LA80_0<=117)||LA80_0==119) ) {s = 4;}
+                        else if ( ((LA80_0>=RULE_STRING && LA80_0<=RULE_DECIMAL)||LA80_0==14||(LA80_0>=51 && LA80_0<=53)||(LA80_0>=62 && LA80_0<=63)||LA80_0==70||(LA80_0>=86 && LA80_0<=87)||LA80_0==91||LA80_0==99||LA80_0==101||(LA80_0>=105 && LA80_0<=107)||(LA80_0>=110 && LA80_0<=119)||LA80_0==121) ) {s = 4;}
 
                          
                         input.seek(index80_0);
@@ -28443,7 +28741,7 @@
             this.transition = dfa_45;
         }
         public String getDescription() {
-            return "6786: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 "6887: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;
@@ -28487,7 +28785,7 @@
             this.transition = dfa_50;
         }
         public String getDescription() {
-            return "6805:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?";
+            return "6906: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;
@@ -28502,15 +28800,15 @@
                         s = -1;
                         if ( (LA102_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA102_0==56) ) {s = 2;}
+                        else if ( (LA102_0==58) ) {s = 2;}
 
-                        else if ( (LA102_0==81) && (synpred37_InternalPerspectiveDsl())) {s = 3;}
+                        else if ( (LA102_0==83) && (synpred37_InternalPerspectiveDsl())) {s = 3;}
 
-                        else if ( (LA102_0==96) && (synpred37_InternalPerspectiveDsl())) {s = 4;}
+                        else if ( (LA102_0==98) && (synpred37_InternalPerspectiveDsl())) {s = 4;}
 
-                        else if ( ((LA102_0>=RULE_STRING && LA102_0<=RULE_DECIMAL)||LA102_0==14||(LA102_0>=49 && LA102_0<=51)||(LA102_0>=60 && LA102_0<=61)||LA102_0==68||(LA102_0>=84 && LA102_0<=85)||LA102_0==89||LA102_0==97||LA102_0==99||(LA102_0>=103 && LA102_0<=105)||(LA102_0>=108 && LA102_0<=117)||LA102_0==119) ) {s = 5;}
+                        else if ( ((LA102_0>=RULE_STRING && LA102_0<=RULE_DECIMAL)||LA102_0==14||(LA102_0>=51 && LA102_0<=53)||(LA102_0>=62 && LA102_0<=63)||LA102_0==70||(LA102_0>=86 && LA102_0<=87)||LA102_0==91||LA102_0==99||LA102_0==101||(LA102_0>=105 && LA102_0<=107)||(LA102_0>=110 && LA102_0<=119)||LA102_0==121) ) {s = 5;}
 
-                        else if ( (LA102_0==58) ) {s = 35;}
+                        else if ( (LA102_0==60) ) {s = 35;}
 
                          
                         input.seek(index102_0);
@@ -28569,7 +28867,7 @@
             this.transition = dfa_51;
         }
         public String getDescription() {
-            return "6903:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?";
+            return "7004:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -28599,7 +28897,7 @@
         }
     }
     static final String[] dfa_71s = {
-            "\5\2\5\uffff\2\2\41\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\43\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",
             "",
             "",
@@ -28694,7 +28992,7 @@
             this.transition = dfa_71;
         }
         public String getDescription() {
-            return "7062:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?";
+            return "7163: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;
@@ -28738,7 +29036,7 @@
             this.transition = dfa_45;
         }
         public String getDescription() {
-            return "7119: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 "7220: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;
@@ -28782,7 +29080,7 @@
             this.transition = dfa_50;
         }
         public String getDescription() {
-            return "7138:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?";
+            return "7239: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;
@@ -28797,15 +29095,15 @@
                         s = -1;
                         if ( (LA110_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA110_0==56) ) {s = 2;}
+                        else if ( (LA110_0==58) ) {s = 2;}
 
-                        else if ( (LA110_0==81) && (synpred41_InternalPerspectiveDsl())) {s = 3;}
+                        else if ( (LA110_0==83) && (synpred41_InternalPerspectiveDsl())) {s = 3;}
 
-                        else if ( (LA110_0==96) && (synpred41_InternalPerspectiveDsl())) {s = 4;}
+                        else if ( (LA110_0==98) && (synpred41_InternalPerspectiveDsl())) {s = 4;}
 
-                        else if ( ((LA110_0>=RULE_STRING && LA110_0<=RULE_DECIMAL)||LA110_0==14||(LA110_0>=49 && LA110_0<=51)||(LA110_0>=60 && LA110_0<=61)||LA110_0==68||(LA110_0>=84 && LA110_0<=85)||LA110_0==89||LA110_0==97||LA110_0==99||(LA110_0>=103 && LA110_0<=105)||(LA110_0>=108 && LA110_0<=117)||LA110_0==119) ) {s = 5;}
+                        else if ( ((LA110_0>=RULE_STRING && LA110_0<=RULE_DECIMAL)||LA110_0==14||(LA110_0>=51 && LA110_0<=53)||(LA110_0>=62 && LA110_0<=63)||LA110_0==70||(LA110_0>=86 && LA110_0<=87)||LA110_0==91||LA110_0==99||LA110_0==101||(LA110_0>=105 && LA110_0<=107)||(LA110_0>=110 && LA110_0<=119)||LA110_0==121) ) {s = 5;}
 
-                        else if ( (LA110_0==58) ) {s = 35;}
+                        else if ( (LA110_0==60) ) {s = 35;}
 
                          
                         input.seek(index110_0);
@@ -28864,7 +29162,7 @@
             this.transition = dfa_51;
         }
         public String getDescription() {
-            return "7236:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?";
+            return "7337:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -28895,11 +29193,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\170\40\0\55\uffff";
+    static final String dfa_74s = "\1\172\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\41\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\43\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",
@@ -28999,7 +29297,7 @@
             this.transition = dfa_77;
         }
         public String getDescription() {
-            return "7579: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 "7680: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;
@@ -29496,11 +29794,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\172\1\0\115\uffff";
+    static final String dfa_81s = "\1\174\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\41\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\43\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",
             "",
             "",
@@ -29603,7 +29901,7 @@
             this.transition = dfa_84;
         }
         public String getDescription() {
-            return "8237: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 "8338: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;
@@ -29647,7 +29945,7 @@
             this.transition = dfa_84;
         }
         public String getDescription() {
-            return "8331:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?";
+            return "8432: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;
@@ -29691,99 +29989,99 @@
     public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000704000L});
     public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000018808000L});
     public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000007204000L});
-    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000000L,0x1800000000000000L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000000L,0x6000000000000000L});
     public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000006204000L});
     public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000064300002L});
-    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x000119FF80000000L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x000719FF80000000L});
     public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000020000000000L});
     public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000040000000000L});
-    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000008000000000L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000004000000000L});
     public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000200000000000L});
     public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000C00000000002L});
     public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0024000000000010L});
-    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0008000000000010L});
-    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0010000000000010L});
-    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0040000000000002L});
-    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0100000000000002L});
-    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x358E0000000041F0L,0x00BFF38A02300010L});
-    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0600000000000000L});
-    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0400000000000000L});
-    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0800000000000000L});
-    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x318E0000000041F0L,0x00BFF38A02300010L});
-    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x2000000000000000L});
-    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x718E0000000041F0L,0x00BFF38A02300010L});
-    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x4200000000000000L});
-    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0200000000000002L});
-    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x8000000000000002L,0x000000000000003FL});
-    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000060L});
-    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
-    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001E00L});
-    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000002L,0x0000000000002070L});
-    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0100000000000010L,0x0000000000020000L});
-    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000002L,0x00000000000FC030L});
-    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020010L});
-    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000000002L,0x0000000000300000L});
-    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0010000000000002L,0x0000000001C00000L});
-    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
-    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000000000000002L,0x0000000018000000L});
-    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000000000002L,0x00000000E0000000L});
-    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x000E000000000010L,0x0000100000000000L});
-    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x000E000000000010L,0x0000300000000010L});
-    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0100000000000010L,0x0200000000020000L});
-    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0200000000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x2100000000000002L,0x00000000E0000000L});
-    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x358E0000000041F0L,0x00BFF38B02320010L});
-    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x2000000000000002L,0x00000000E0000000L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0090000000000010L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0020000000000010L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0040000000000010L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0100000000000002L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0400000000000002L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0xD6380000000041F0L,0x02FFCE2808C00040L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x1800000000000000L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x1000000000000000L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x2000000000000000L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0xC6380000000041F0L,0x02FFCE2808C00040L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x8000000000000000L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0xC6380000000041F0L,0x02FFCE2808C00041L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0800000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0800000000000002L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000000002L,0x00000000000000FEL});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000180L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000400L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000002L,0x0000000000007800L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000002L,0x00000000000081C0L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0400000000000010L,0x0000000000080000L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000002L,0x00000000003F00C0L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080040L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000000002L,0x0000000000C00000L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0040000000000002L,0x0000000007000000L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000000000000002L,0x0000000060000000L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000000000002L,0x0000000380000000L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0038000000000010L,0x0000400000000000L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0038000000000010L,0x0000C00000000040L});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0400000000000010L,0x0800000000080000L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0800000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x8400000000000002L,0x0000000380000000L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0xD6380000000041F0L,0x02FFCE2C08C80040L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x8000000000000002L,0x0000000380000000L});
     public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000000004000L});
-    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x318E00000000C1F0L,0x00BFF38A02300010L});
-    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0200000000008000L});
-    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x718E0000000041F0L,0x00BFFF8B02320010L});
-    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0200000000000000L,0x0000000100000000L});
-    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x718E0000000041F0L,0x00BFFF8A02300010L});
-    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x4000000000000000L});
-    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x31CE0000000041F2L,0x00BFFF8A02300010L});
-    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x318E0000000041F2L,0x00BFFF8A02300010L});
-    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0100000000000000L});
-    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x318E0000000041F0L,0x00BFF38A02320010L});
-    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
-    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0300000000008010L,0x0000007000020000L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0xC63800000000C1F0L,0x02FFCE2808C00040L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0800000000008000L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0xC6380000000041F0L,0x02FFFE2C08C80041L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0800000000000000L,0x0000000400000000L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0xC6380000000041F0L,0x02FFFE2808C00041L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0xC7380000000041F2L,0x02FFFE2808C00040L});
+    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0xC6380000000041F2L,0x02FFFE2808C00040L});
+    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0400000000000000L});
+    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
+    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0xC6380000000041F0L,0x02FFCE2808C80040L});
+    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0C00000000008010L,0x000001C000080000L});
     public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0200000000000000L,0x0000005000000000L});
-    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0200000000000000L,0x0000001000000000L});
-    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x31CE0000000041F0L,0x00BFFF8A02300010L});
-    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0240000000000000L});
-    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x318E0000000041F0L,0x00BFFF8A02300010L});
-    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x31CE0000000041F0L,0x00BFF38A02300010L});
-    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0040000000000000L});
-    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x318E00000000C1F0L,0x00BFFF8A02300010L});
-    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x31CE00000000C1F0L,0x00BFFF8A02300010L});
-    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0800000000000002L});
-    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x2100000000000002L});
-    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x2000000000000002L});
-    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x2100000000000002L,0x0000000000000010L});
-    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x2400000000000000L});
-    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x318E0000000041F2L,0x00BFF38A02300010L});
-    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0000000000000000L,0x0140000000000000L});
-    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000000000000002L,0x0140000000000000L});
-    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0800000000000000L,0x0000014000000000L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0800000000000000L,0x0000004000000000L});
+    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0xC7380000000041F0L,0x02FFFE2808C00040L});
+    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0900000000000000L});
+    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0xC6380000000041F0L,0x02FFFE2808C00040L});
+    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0xC7380000000041F0L,0x02FFCE2808C00040L});
+    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0100000000000000L});
+    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
+    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0xC63800000000C1F0L,0x02FFFE2808C00040L});
+    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0xC73800000000C1F0L,0x02FFFE2808C00040L});
+    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x8400000000000002L});
+    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x8000000000000002L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x8400000000000002L,0x0000000000000040L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x9000000000000000L});
+    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0xC6380000000041F2L,0x02FFCE2808C00040L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0000000000000000L,0x0500000000000000L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000000000000002L,0x0500000000000000L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
     public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000000000140L});
-    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0500000000000010L,0x0000000000020000L});
-    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
-    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
-    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000010L});
-    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000000000002L,0x0000300000000000L});
-    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
-    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
-    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0010000000000000L});
-    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0002000000000002L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x1400000000000010L,0x0000000000080000L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000040L});
+    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000040L});
+    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000000000002L,0x0000C00000000000L});
+    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0000000000000002L,0x1000000000000000L});
+    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
+    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0040000000000000L});
+    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0008000000000002L});
     public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000012L});
 
 }
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/scoping/AbstractPerspectiveDslScopeProvider.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/scoping/AbstractPerspectiveDslScopeProvider.java
index f741505..c376840 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/scoping/AbstractPerspectiveDslScopeProvider.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/scoping/AbstractPerspectiveDslScopeProvider.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
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 de2bf93..1e30803 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
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -24,8 +26,9 @@
 import org.eclipse.osbp.xtext.oxtype.oxtype.OXtypePackage;
 import org.eclipse.osbp.xtext.oxtype.serializer.OXtypeSemanticSequencer;
 import org.eclipse.osbp.xtext.perspective.Perspective;
-import org.eclipse.osbp.xtext.perspective.PerspectiveBean;
+import org.eclipse.osbp.xtext.perspective.PerspectiveBPMN;
 import org.eclipse.osbp.xtext.perspective.PerspectiveChart;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDashboard;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDialog;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
@@ -41,6 +44,7 @@
 import org.eclipse.osbp.xtext.perspective.PerspectiveSearch;
 import org.eclipse.osbp.xtext.perspective.PerspectiveSelection;
 import org.eclipse.osbp.xtext.perspective.PerspectiveTable;
+import org.eclipse.osbp.xtext.perspective.PerspectiveTitle;
 import org.eclipse.osbp.xtext.perspective.PerspectiveTopology;
 import org.eclipse.osbp.xtext.perspective.PerspectiveWelcome;
 import org.eclipse.osbp.xtext.perspective.services.PerspectiveDslGrammarAccess;
@@ -121,12 +125,15 @@
 			case PerspectiveDslPackage.PERSPECTIVE:
 				sequence_Perspective(context, (Perspective) semanticObject); 
 				return; 
-			case PerspectiveDslPackage.PERSPECTIVE_BEAN:
-				sequence_PerspectiveBean(context, (PerspectiveBean) semanticObject); 
+			case PerspectiveDslPackage.PERSPECTIVE_BPMN:
+				sequence_PerspectiveBPMN(context, (PerspectiveBPMN) semanticObject); 
 				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_CHART:
 				sequence_PerspectiveChart(context, (PerspectiveChart) semanticObject); 
 				return; 
+			case PerspectiveDslPackage.PERSPECTIVE_DASHBOARD:
+				sequence_PerspectiveDashboard(context, (PerspectiveDashboard) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE:
 				sequence_PerspectiveDataInterchange(context, (PerspectiveDataInterchange) semanticObject); 
 				return; 
@@ -169,6 +176,9 @@
 			case PerspectiveDslPackage.PERSPECTIVE_TABLE:
 				sequence_PerspectiveTable(context, (PerspectiveTable) semanticObject); 
 				return; 
+			case PerspectiveDslPackage.PERSPECTIVE_TITLE:
+				sequence_PerspectiveTitle(context, (PerspectiveTitle) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_TOPOLOGY:
 				sequence_PerspectiveTopology(context, (PerspectiveTopology) semanticObject); 
 				return; 
@@ -479,20 +489,14 @@
 	
 	/**
 	 * Contexts:
-	 *     PerspectiveView returns PerspectiveBean
-	 *     PerspectiveBean returns PerspectiveBean
+	 *     PerspectiveView returns PerspectiveBPMN
+	 *     PerspectiveBPMN returns PerspectiveBPMN
 	 *
 	 * Constraint:
-	 *     ref=[Table|ID]
+	 *     {PerspectiveBPMN}
 	 */
-	protected void sequence_PerspectiveBean(ISerializationContext context, PerspectiveBean semanticObject) {
-		if (errorAcceptor != null) {
-			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_BEAN__REF) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_BEAN__REF));
-		}
-		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
-		feeder.accept(grammarAccess.getPerspectiveBeanAccess().getRefTableIDTerminalRuleCall_2_0_1(), semanticObject.eGet(PerspectiveDslPackage.Literals.PERSPECTIVE_BEAN__REF, false));
-		feeder.finish();
+	protected void sequence_PerspectiveBPMN(ISerializationContext context, PerspectiveBPMN semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
@@ -517,6 +521,25 @@
 	
 	/**
 	 * Contexts:
+	 *     PerspectiveView returns PerspectiveDashboard
+	 *     PerspectiveDashboard returns PerspectiveDashboard
+	 *
+	 * Constraint:
+	 *     name=STRING
+	 */
+	protected void sequence_PerspectiveDashboard(ISerializationContext context, PerspectiveDashboard semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_DASHBOARD__NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_DASHBOARD__NAME));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getPerspectiveDashboardAccess().getNameSTRINGTerminalRuleCall_2_0(), semanticObject.getName());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
 	 *     PerspectiveView returns PerspectiveDataInterchange
 	 *     PerspectiveDataInterchange returns PerspectiveDataInterchange
 	 *
@@ -758,6 +781,25 @@
 	
 	/**
 	 * Contexts:
+	 *     PerspectiveView returns PerspectiveTitle
+	 *     PerspectiveTitle returns PerspectiveTitle
+	 *
+	 * Constraint:
+	 *     htmlName=STRING
+	 */
+	protected void sequence_PerspectiveTitle(ISerializationContext context, PerspectiveTitle semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_TITLE__HTML_NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_TITLE__HTML_NAME));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getPerspectiveTitleAccess().getHtmlNameSTRINGTerminalRuleCall_2_0(), semanticObject.getHtmlName());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
 	 *     PerspectiveView returns PerspectiveTopology
 	 *     PerspectiveTopology returns PerspectiveTopology
 	 *
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSyntacticSequencer.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSyntacticSequencer.java
index eeaa638..9eb5264 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSyntacticSequencer.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSyntacticSequencer.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
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 e729005..1eeda34 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
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -642,26 +644,28 @@
 		private final RuleCall cPerspectiveSelectionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cPerspectiveTableParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		private final RuleCall cPerspectiveChartParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
-		private final RuleCall cPerspectiveBeanParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
-		private final RuleCall cPerspectiveReportParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
-		private final RuleCall cPerspectiveOrganizationParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
-		private final RuleCall cPerspectiveTopologyParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
-		private final RuleCall cPerspectiveDialogParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
-		private final RuleCall cPerspectiveGridParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
-		private final RuleCall cPerspectiveWelcomeParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
-		private final RuleCall cPerspectiveSearchParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
-		private final RuleCall cPerspectiveDataInterchangeParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
+		private final RuleCall cPerspectiveReportParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cPerspectiveOrganizationParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cPerspectiveTopologyParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cPerspectiveDialogParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cPerspectiveGridParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		private final RuleCall cPerspectiveWelcomeParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
+		private final RuleCall cPerspectiveSearchParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
+		private final RuleCall cPerspectiveDataInterchangeParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
+		private final RuleCall cPerspectiveBPMNParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
 		private final RuleCall cPerspectiveKanbanParserRuleCall_12 = (RuleCall)cAlternatives.eContents().get(12);
+		private final RuleCall cPerspectiveTitleParserRuleCall_13 = (RuleCall)cAlternatives.eContents().get(13);
+		private final RuleCall cPerspectiveDashboardParserRuleCall_14 = (RuleCall)cAlternatives.eContents().get(14);
 		
 		//PerspectiveView:
-		//	PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveBean | PerspectiveReport |
-		//	PerspectiveOrganization | PerspectiveTopology | PerspectiveDialog | PerspectiveGrid | PerspectiveWelcome |
-		//	PerspectiveSearch | PerspectiveDataInterchange | PerspectiveKanban;
+		//	PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveReport | PerspectiveOrganization |
+		//	PerspectiveTopology | PerspectiveDialog | PerspectiveGrid | PerspectiveWelcome | PerspectiveSearch |
+		//	PerspectiveDataInterchange | PerspectiveBPMN | PerspectiveKanban | PerspectiveTitle | PerspectiveDashboard;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveBean | PerspectiveReport |
-		//PerspectiveOrganization | PerspectiveTopology | PerspectiveDialog | PerspectiveGrid | PerspectiveWelcome |
-		//PerspectiveSearch | PerspectiveDataInterchange | PerspectiveKanban
+		//PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveReport | PerspectiveOrganization |
+		//PerspectiveTopology | PerspectiveDialog | PerspectiveGrid | PerspectiveWelcome | PerspectiveSearch |
+		//PerspectiveDataInterchange | PerspectiveBPMN | PerspectiveKanban | PerspectiveTitle | PerspectiveDashboard
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//PerspectiveSelection
@@ -673,35 +677,41 @@
 		//PerspectiveChart
 		public RuleCall getPerspectiveChartParserRuleCall_2() { return cPerspectiveChartParserRuleCall_2; }
 		
-		//PerspectiveBean
-		public RuleCall getPerspectiveBeanParserRuleCall_3() { return cPerspectiveBeanParserRuleCall_3; }
-		
 		//PerspectiveReport
-		public RuleCall getPerspectiveReportParserRuleCall_4() { return cPerspectiveReportParserRuleCall_4; }
+		public RuleCall getPerspectiveReportParserRuleCall_3() { return cPerspectiveReportParserRuleCall_3; }
 		
 		//PerspectiveOrganization
-		public RuleCall getPerspectiveOrganizationParserRuleCall_5() { return cPerspectiveOrganizationParserRuleCall_5; }
+		public RuleCall getPerspectiveOrganizationParserRuleCall_4() { return cPerspectiveOrganizationParserRuleCall_4; }
 		
 		//PerspectiveTopology
-		public RuleCall getPerspectiveTopologyParserRuleCall_6() { return cPerspectiveTopologyParserRuleCall_6; }
+		public RuleCall getPerspectiveTopologyParserRuleCall_5() { return cPerspectiveTopologyParserRuleCall_5; }
 		
 		//PerspectiveDialog
-		public RuleCall getPerspectiveDialogParserRuleCall_7() { return cPerspectiveDialogParserRuleCall_7; }
+		public RuleCall getPerspectiveDialogParserRuleCall_6() { return cPerspectiveDialogParserRuleCall_6; }
 		
 		//PerspectiveGrid
-		public RuleCall getPerspectiveGridParserRuleCall_8() { return cPerspectiveGridParserRuleCall_8; }
+		public RuleCall getPerspectiveGridParserRuleCall_7() { return cPerspectiveGridParserRuleCall_7; }
 		
 		//PerspectiveWelcome
-		public RuleCall getPerspectiveWelcomeParserRuleCall_9() { return cPerspectiveWelcomeParserRuleCall_9; }
+		public RuleCall getPerspectiveWelcomeParserRuleCall_8() { return cPerspectiveWelcomeParserRuleCall_8; }
 		
 		//PerspectiveSearch
-		public RuleCall getPerspectiveSearchParserRuleCall_10() { return cPerspectiveSearchParserRuleCall_10; }
+		public RuleCall getPerspectiveSearchParserRuleCall_9() { return cPerspectiveSearchParserRuleCall_9; }
 		
 		//PerspectiveDataInterchange
-		public RuleCall getPerspectiveDataInterchangeParserRuleCall_11() { return cPerspectiveDataInterchangeParserRuleCall_11; }
+		public RuleCall getPerspectiveDataInterchangeParserRuleCall_10() { return cPerspectiveDataInterchangeParserRuleCall_10; }
+		
+		//PerspectiveBPMN
+		public RuleCall getPerspectiveBPMNParserRuleCall_11() { return cPerspectiveBPMNParserRuleCall_11; }
 		
 		//PerspectiveKanban
 		public RuleCall getPerspectiveKanbanParserRuleCall_12() { return cPerspectiveKanbanParserRuleCall_12; }
+		
+		//PerspectiveTitle
+		public RuleCall getPerspectiveTitleParserRuleCall_13() { return cPerspectiveTitleParserRuleCall_13; }
+		
+		//PerspectiveDashboard
+		public RuleCall getPerspectiveDashboardParserRuleCall_14() { return cPerspectiveDashboardParserRuleCall_14; }
 	}
 	public class PerspectiveSelectionElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveSelection");
@@ -738,23 +748,23 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveTable");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectiveTableAction_0 = (Action)cGroup.eContents().get(0);
-		private final Keyword cTableKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cReadOnlyTableKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		private final Assignment cRefAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final CrossReference cRefTableCrossReference_2_0 = (CrossReference)cRefAssignment_2.eContents().get(0);
 		private final RuleCall cRefTableIDTerminalRuleCall_2_0_1 = (RuleCall)cRefTableCrossReference_2_0.eContents().get(1);
 		
 		//PerspectiveTable:
-		//	{PerspectiveTable} 'table' ref=[table::Table];
+		//	{PerspectiveTable} 'readOnlyTable' ref=[table::Table];
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{PerspectiveTable} 'table' ref=[table::Table]
+		//{PerspectiveTable} 'readOnlyTable' ref=[table::Table]
 		public Group getGroup() { return cGroup; }
 		
 		//{PerspectiveTable}
 		public Action getPerspectiveTableAction_0() { return cPerspectiveTableAction_0; }
 		
-		//'table'
-		public Keyword getTableKeyword_1() { return cTableKeyword_1; }
+		//'readOnlyTable'
+		public Keyword getReadOnlyTableKeyword_1() { return cReadOnlyTableKeyword_1; }
 		
 		//ref=[table::Table]
 		public Assignment getRefAssignment_2() { return cRefAssignment_2; }
@@ -769,54 +779,23 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveGrid");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectiveGridAction_0 = (Action)cGroup.eContents().get(0);
-		private final Keyword cGridKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cEditableTableKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		private final Assignment cRefAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final CrossReference cRefTableCrossReference_2_0 = (CrossReference)cRefAssignment_2.eContents().get(0);
 		private final RuleCall cRefTableIDTerminalRuleCall_2_0_1 = (RuleCall)cRefTableCrossReference_2_0.eContents().get(1);
 		
 		//PerspectiveGrid:
-		//	{PerspectiveGrid} 'grid' ref=[table::Table];
+		//	{PerspectiveGrid} 'editableTable' ref=[table::Table];
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{PerspectiveGrid} 'grid' ref=[table::Table]
+		//{PerspectiveGrid} 'editableTable' ref=[table::Table]
 		public Group getGroup() { return cGroup; }
 		
 		//{PerspectiveGrid}
 		public Action getPerspectiveGridAction_0() { return cPerspectiveGridAction_0; }
 		
-		//'grid'
-		public Keyword getGridKeyword_1() { return cGridKeyword_1; }
-		
-		//ref=[table::Table]
-		public Assignment getRefAssignment_2() { return cRefAssignment_2; }
-		
-		//[table::Table]
-		public CrossReference getRefTableCrossReference_2_0() { return cRefTableCrossReference_2_0; }
-		
-		//ID
-		public RuleCall getRefTableIDTerminalRuleCall_2_0_1() { return cRefTableIDTerminalRuleCall_2_0_1; }
-	}
-	public class PerspectiveBeanElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveBean");
-		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final Action cPerspectiveBeanAction_0 = (Action)cGroup.eContents().get(0);
-		private final Keyword cBeanKeyword_1 = (Keyword)cGroup.eContents().get(1);
-		private final Assignment cRefAssignment_2 = (Assignment)cGroup.eContents().get(2);
-		private final CrossReference cRefTableCrossReference_2_0 = (CrossReference)cRefAssignment_2.eContents().get(0);
-		private final RuleCall cRefTableIDTerminalRuleCall_2_0_1 = (RuleCall)cRefTableCrossReference_2_0.eContents().get(1);
-		
-		//PerspectiveBean:
-		//	{PerspectiveBean} 'bean' ref=[table::Table];
-		@Override public ParserRule getRule() { return rule; }
-		
-		//{PerspectiveBean} 'bean' ref=[table::Table]
-		public Group getGroup() { return cGroup; }
-		
-		//{PerspectiveBean}
-		public Action getPerspectiveBeanAction_0() { return cPerspectiveBeanAction_0; }
-		
-		//'bean'
-		public Keyword getBeanKeyword_1() { return cBeanKeyword_1; }
+		//'editableTable'
+		public Keyword getEditableTableKeyword_1() { return cEditableTableKeyword_1; }
 		
 		//ref=[table::Table]
 		public Assignment getRefAssignment_2() { return cRefAssignment_2; }
@@ -982,6 +961,25 @@
 		//ID
 		public RuleCall getRefDialogIDTerminalRuleCall_2_0_1() { return cRefDialogIDTerminalRuleCall_2_0_1; }
 	}
+	public class PerspectiveBPMNElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveBPMN");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cPerspectiveBPMNAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cBpmnKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		
+		//PerspectiveBPMN:
+		//	{PerspectiveBPMN} 'bpmn';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveBPMN} 'bpmn'
+		public Group getGroup() { return cGroup; }
+		
+		//{PerspectiveBPMN}
+		public Action getPerspectiveBPMNAction_0() { return cPerspectiveBPMNAction_0; }
+		
+		//'bpmn'
+		public Keyword getBpmnKeyword_1() { return cBpmnKeyword_1; }
+	}
 	public class PerspectiveKanbanElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveKanban");
 		private final Group cGroup = (Group)rule.eContents().get(1);
@@ -1171,6 +1169,60 @@
 		//ID
 		public RuleCall getRefDataInterchangePackageIDTerminalRuleCall_2_0_1() { return cRefDataInterchangePackageIDTerminalRuleCall_2_0_1; }
 	}
+	public class PerspectiveTitleElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveTitle");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cPerspectiveTitleAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cTitleKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cHtmlNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cHtmlNameSTRINGTerminalRuleCall_2_0 = (RuleCall)cHtmlNameAssignment_2.eContents().get(0);
+		
+		//PerspectiveTitle:
+		//	{PerspectiveTitle} 'title' htmlName=STRING;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveTitle} 'title' htmlName=STRING
+		public Group getGroup() { return cGroup; }
+		
+		//{PerspectiveTitle}
+		public Action getPerspectiveTitleAction_0() { return cPerspectiveTitleAction_0; }
+		
+		//'title'
+		public Keyword getTitleKeyword_1() { return cTitleKeyword_1; }
+		
+		//htmlName=STRING
+		public Assignment getHtmlNameAssignment_2() { return cHtmlNameAssignment_2; }
+		
+		//STRING
+		public RuleCall getHtmlNameSTRINGTerminalRuleCall_2_0() { return cHtmlNameSTRINGTerminalRuleCall_2_0; }
+	}
+	public class PerspectiveDashboardElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveDashboard");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cPerspectiveDashboardAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cNameKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cNameSTRINGTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+		
+		//PerspectiveDashboard:
+		//	{PerspectiveDashboard} 'name' name=STRING;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveDashboard} 'name' name=STRING
+		public Group getGroup() { return cGroup; }
+		
+		//{PerspectiveDashboard}
+		public Action getPerspectiveDashboardAction_0() { return cPerspectiveDashboardAction_0; }
+		
+		//'name'
+		public Keyword getNameKeyword_1() { return cNameKeyword_1; }
+		
+		//name=STRING
+		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
+		
+		//STRING
+		public RuleCall getNameSTRINGTerminalRuleCall_2_0() { return cNameSTRINGTerminalRuleCall_2_0; }
+	}
 	public class TRANSLATABLEIDElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.TRANSLATABLEID");
 		private final RuleCall cIDTerminalRuleCall = (RuleCall)rule.eContents().get(1);
@@ -1233,16 +1285,18 @@
 	private final PerspectiveSelectionElements pPerspectiveSelection;
 	private final PerspectiveTableElements pPerspectiveTable;
 	private final PerspectiveGridElements pPerspectiveGrid;
-	private final PerspectiveBeanElements pPerspectiveBean;
 	private final PerspectiveChartElements pPerspectiveChart;
 	private final PerspectiveReportElements pPerspectiveReport;
 	private final PerspectiveOrganizationElements pPerspectiveOrganization;
 	private final PerspectiveTopologyElements pPerspectiveTopology;
 	private final PerspectiveDialogElements pPerspectiveDialog;
+	private final PerspectiveBPMNElements pPerspectiveBPMN;
 	private final PerspectiveKanbanElements pPerspectiveKanban;
 	private final PerspectiveWelcomeElements pPerspectiveWelcome;
 	private final PerspectiveSearchElements pPerspectiveSearch;
 	private final PerspectiveDataInterchangeElements pPerspectiveDataInterchange;
+	private final PerspectiveTitleElements pPerspectiveTitle;
+	private final PerspectiveDashboardElements pPerspectiveDashboard;
 	private final TRANSLATABLEIDElements pTRANSLATABLEID;
 	private final TRANSLATABLESTRINGElements pTRANSLATABLESTRING;
 	private final SashOrientationElements eSashOrientation;
@@ -1279,16 +1333,18 @@
 		this.pPerspectiveSelection = new PerspectiveSelectionElements();
 		this.pPerspectiveTable = new PerspectiveTableElements();
 		this.pPerspectiveGrid = new PerspectiveGridElements();
-		this.pPerspectiveBean = new PerspectiveBeanElements();
 		this.pPerspectiveChart = new PerspectiveChartElements();
 		this.pPerspectiveReport = new PerspectiveReportElements();
 		this.pPerspectiveOrganization = new PerspectiveOrganizationElements();
 		this.pPerspectiveTopology = new PerspectiveTopologyElements();
 		this.pPerspectiveDialog = new PerspectiveDialogElements();
+		this.pPerspectiveBPMN = new PerspectiveBPMNElements();
 		this.pPerspectiveKanban = new PerspectiveKanbanElements();
 		this.pPerspectiveWelcome = new PerspectiveWelcomeElements();
 		this.pPerspectiveSearch = new PerspectiveSearchElements();
 		this.pPerspectiveDataInterchange = new PerspectiveDataInterchangeElements();
+		this.pPerspectiveTitle = new PerspectiveTitleElements();
+		this.pPerspectiveDashboard = new PerspectiveDashboardElements();
 		this.pTRANSLATABLEID = new TRANSLATABLEIDElements();
 		this.pTRANSLATABLESTRING = new TRANSLATABLESTRINGElements();
 		this.eSashOrientation = new SashOrientationElements();
@@ -1415,9 +1471,9 @@
 	}
 	
 	//PerspectiveView:
-	//	PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveBean | PerspectiveReport |
-	//	PerspectiveOrganization | PerspectiveTopology | PerspectiveDialog | PerspectiveGrid | PerspectiveWelcome |
-	//	PerspectiveSearch | PerspectiveDataInterchange | PerspectiveKanban;
+	//	PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveReport | PerspectiveOrganization |
+	//	PerspectiveTopology | PerspectiveDialog | PerspectiveGrid | PerspectiveWelcome | PerspectiveSearch |
+	//	PerspectiveDataInterchange | PerspectiveBPMN | PerspectiveKanban | PerspectiveTitle | PerspectiveDashboard;
 	public PerspectiveViewElements getPerspectiveViewAccess() {
 		return pPerspectiveView;
 	}
@@ -1437,7 +1493,7 @@
 	}
 	
 	//PerspectiveTable:
-	//	{PerspectiveTable} 'table' ref=[table::Table];
+	//	{PerspectiveTable} 'readOnlyTable' ref=[table::Table];
 	public PerspectiveTableElements getPerspectiveTableAccess() {
 		return pPerspectiveTable;
 	}
@@ -1447,7 +1503,7 @@
 	}
 	
 	//PerspectiveGrid:
-	//	{PerspectiveGrid} 'grid' ref=[table::Table];
+	//	{PerspectiveGrid} 'editableTable' ref=[table::Table];
 	public PerspectiveGridElements getPerspectiveGridAccess() {
 		return pPerspectiveGrid;
 	}
@@ -1456,16 +1512,6 @@
 		return getPerspectiveGridAccess().getRule();
 	}
 	
-	//PerspectiveBean:
-	//	{PerspectiveBean} 'bean' ref=[table::Table];
-	public PerspectiveBeanElements getPerspectiveBeanAccess() {
-		return pPerspectiveBean;
-	}
-	
-	public ParserRule getPerspectiveBeanRule() {
-		return getPerspectiveBeanAccess().getRule();
-	}
-	
 	//PerspectiveChart:
 	//	{PerspectiveChart} 'chart' ref=[chart::Chart];
 	public PerspectiveChartElements getPerspectiveChartAccess() {
@@ -1516,6 +1562,16 @@
 		return getPerspectiveDialogAccess().getRule();
 	}
 	
+	//PerspectiveBPMN:
+	//	{PerspectiveBPMN} 'bpmn';
+	public PerspectiveBPMNElements getPerspectiveBPMNAccess() {
+		return pPerspectiveBPMN;
+	}
+	
+	public ParserRule getPerspectiveBPMNRule() {
+		return getPerspectiveBPMNAccess().getRule();
+	}
+	
 	//PerspectiveKanban:
 	//	{PerspectiveKanban} 'kanban' 'of' dtoRef=[dto::LDto] 'card' cardRef=[dialog::Dialog] 'dialog'
 	//	dialogRef=[dialog::Dialog];
@@ -1557,6 +1613,26 @@
 		return getPerspectiveDataInterchangeAccess().getRule();
 	}
 	
+	//PerspectiveTitle:
+	//	{PerspectiveTitle} 'title' htmlName=STRING;
+	public PerspectiveTitleElements getPerspectiveTitleAccess() {
+		return pPerspectiveTitle;
+	}
+	
+	public ParserRule getPerspectiveTitleRule() {
+		return getPerspectiveTitleAccess().getRule();
+	}
+	
+	//PerspectiveDashboard:
+	//	{PerspectiveDashboard} 'name' name=STRING;
+	public PerspectiveDashboardElements getPerspectiveDashboardAccess() {
+		return pPerspectiveDashboard;
+	}
+	
+	public ParserRule getPerspectiveDashboardRule() {
+		return getPerspectiveDashboardAccess().getRule();
+	}
+	
 	//TRANSLATABLEID:
 	//	ID;
 	public TRANSLATABLEIDElements getTRANSLATABLEIDAccess() {
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/validation/AbstractPerspectiveDslValidator.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/validation/AbstractPerspectiveDslValidator.java
index a0517eb..5cb5f42 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/validation/AbstractPerspectiveDslValidator.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/validation/AbstractPerspectiveDslValidator.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/Activator.java b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/Activator.java
index 07197ad..0ed2177 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/Activator.java
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/Activator.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/GeneratePerspectiveDsl.mwe2 b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/GeneratePerspectiveDsl.mwe2
index 2f88fe0..4e26110 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/GeneratePerspectiveDsl.mwe2
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/GeneratePerspectiveDsl.mwe2
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -24,9 +26,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDSLBundleSpaceRuntimeModule.java b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDSLBundleSpaceRuntimeModule.java
index 946be56..8406a27 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDSLBundleSpaceRuntimeModule.java
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDSLBundleSpaceRuntimeModule.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDSLBundleSpaceStandaloneSetup.java b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDSLBundleSpaceStandaloneSetup.java
index 14289fb..45ac557 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDSLBundleSpaceStandaloneSetup.java
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDSLBundleSpaceStandaloneSetup.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
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 97e41c4..c6751fb 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
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -72,20 +74,18 @@
 	(isClosable?='isClosable')?);
 
 PerspectiveView:
-	PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveBean | PerspectiveReport | PerspectiveOrganization | PerspectiveTopology |
-	PerspectiveDialog | PerspectiveGrid | PerspectiveWelcome | PerspectiveSearch | PerspectiveDataInterchange | PerspectiveKanban;
+	PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveReport | PerspectiveOrganization | PerspectiveTopology |
+	PerspectiveDialog | PerspectiveGrid | PerspectiveWelcome | PerspectiveSearch | PerspectiveDataInterchange | PerspectiveBPMN | PerspectiveKanban | 
+	PerspectiveTitle | PerspectiveDashboard;
 
 PerspectiveSelection:
 	{PerspectiveSelection} 'select' ref=[table::Table];
 
 PerspectiveTable:
-	{PerspectiveTable} 'table' ref=[table::Table];
+	{PerspectiveTable} 'readOnlyTable' ref=[table::Table];
 
 PerspectiveGrid:
-	{PerspectiveGrid} 'grid' ref=[table::Table];
-
-PerspectiveBean:
-	{PerspectiveBean} 'bean' ref=[table::Table];
+	{PerspectiveGrid} 'editableTable' ref=[table::Table];
 
 PerspectiveChart:
 	{PerspectiveChart} 'chart' ref=[chart::Chart];
@@ -102,6 +102,9 @@
 PerspectiveDialog:
 	{PerspectiveDialog} 'dialog' ref=[dialog::Dialog];
 
+PerspectiveBPMN:
+	{PerspectiveBPMN} 'bpmn';
+
 PerspectiveKanban:
 	{PerspectiveKanban} 'kanban' 'of' dtoRef=[dto::LDto] 'card' cardRef=[dialog::Dialog] 'dialog' dialogRef=[dialog::Dialog];
 
@@ -114,6 +117,12 @@
 PerspectiveDataInterchange:
 	{PerspectiveDataInterchange} 'dataInterchange' ref=[data::DataInterchangePackage];
 
+PerspectiveTitle:
+	{PerspectiveTitle} 'title' htmlName=STRING;
+
+PerspectiveDashboard:
+	{PerspectiveDashboard} 'name' name=STRING;
+
 TRANSLATABLEID:
 	ID;
 
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDslRuntimeModule.java b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDslRuntimeModule.java
index 9424f95..6cafed6 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDslRuntimeModule.java
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDslRuntimeModule.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDslStandaloneSetup.java b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDslStandaloneSetup.java
index 3d0cc60..e14feff 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDslStandaloneSetup.java
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDslStandaloneSetup.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/XcoreResourceFactory.java b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/XcoreResourceFactory.java
index a4b7f91..e2ad3cf 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/XcoreResourceFactory.java
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/XcoreResourceFactory.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/derivedstate/PerspectiveModelDerivedStateComputerx.xtend b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/derivedstate/PerspectiveModelDerivedStateComputerx.xtend
index 00607d4..faf9d70 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/derivedstate/PerspectiveModelDerivedStateComputerx.xtend
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/derivedstate/PerspectiveModelDerivedStateComputerx.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.xtend b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.xtend
index 50106e4..7439ebe 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.xtend
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveDslJvmModelInferrer.xtend b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveDslJvmModelInferrer.xtend
index f4f919d..56367ee 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveDslJvmModelInferrer.xtend
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveDslJvmModelInferrer.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveModelGenerator.xtend b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveModelGenerator.xtend
index 4b8f5b2..c287339 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveModelGenerator.xtend
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveModelGenerator.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/linking/PerspectiveJvmLinkingHelper.java b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/linking/PerspectiveJvmLinkingHelper.java
index 1fb4063..6ce32b9 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/linking/PerspectiveJvmLinkingHelper.java
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/linking/PerspectiveJvmLinkingHelper.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -50,15 +52,6 @@
 						return crossRefString + "Grid";
 					}
 				}, null);
-		register(PerspectiveDslPackage.Literals.PERSPECTIVE_BEAN__REF,
-				PerspectiveDslPackage.Literals.PERSPECTIVE_BEAN__REF_TYPE_JVM,
-				new IJvmLinkCrossRefStringEnhancer() {
-			@Override
-			public String enhance(EObject context,
-					EStructuralFeature feature, String crossRefString) {
-				return crossRefString + "Bean";
-			}
-		}, null);
 		register(PerspectiveDslPackage.Literals.PERSPECTIVE_CHART__REF,
 				PerspectiveDslPackage.Literals.PERSPECTIVE_CHART__REF_TYPE_JVM,
 				new IJvmLinkCrossRefStringEnhancer() {
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 fdef783..3939c78 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
@@ -9,7 +9,6 @@
 import org.eclipse.osbp.xtext.dialogdsl.Dialog
 import org.eclipse.osbp.xtext.oxtype.resource.EcoreUtil3
 import org.eclipse.osbp.xtext.perspective.Perspective
-import org.eclipse.osbp.xtext.perspective.PerspectiveBean
 import org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange
 import org.eclipse.osbp.xtext.perspective.PerspectiveDialog
 import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage
@@ -19,7 +18,6 @@
 import org.eclipse.osbp.xtext.perspective.PerspectiveSelection
 import org.eclipse.osbp.xtext.perspective.PerspectiveTable
 import org.eclipse.osbp.xtext.table.Table
-import org.eclipse.osbp.xtext.table.TableBean
 import org.eclipse.osbp.xtext.table.TableGrid
 import org.eclipse.osbp.xtext.table.TableSelection
 import org.eclipse.osbp.xtext.table.TableTable
@@ -53,8 +51,6 @@
 			return getTableRef(context as PerspectiveTable, reference)
 		} else if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE_GRID__REF) {
 			return getGridRef(context as PerspectiveGrid, reference)
-		} else if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE_BEAN__REF) {
-			return getBeanRef(context as PerspectiveBean, reference)
 		} else if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE_DATA_INTERCHANGE__REF) {
 			return getDataRef(context as PerspectiveDataInterchange, reference)
 		}
@@ -118,21 +114,6 @@
 		
 	}
 
-	def getBeanRef(PerspectiveBean tableView, EReference reference) {
-		var superScope = super.getScope(tableView, reference)
-		val FilteringScope scope = new FilteringScope(superScope, [
-			if (it.EObjectOrProxy instanceof Table) {
-				var table = it.EObjectOrProxy as Table
-				table = EcoreUtil3.resolve(table, tableView.eResource.resourceSet) as Table
-				return table.tabletype instanceof TableBean
-			}
-			return false
-		])
-
-		return scope
-		
-	}
-
 	def getDataRef(PerspectiveDataInterchange dataView, EReference reference) {
 		var superScope = super.getScope(dataView, reference)
 		val FilteringScope scope = new FilteringScope(superScope, [
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/validation/PerspectiveDslValidator.xtend b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/validation/PerspectiveDslValidator.xtend
index 4c0d025..220e60e 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/validation/PerspectiveDslValidator.xtend
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/validation/PerspectiveDslValidator.xtend
@@ -3,45 +3,101 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  * 
  *  This copyright notice shows up in the generated Java code
- *
+ * 
  */
- 
+
 package org.eclipse.osbp.xtext.perspective.validation
 
-import org.eclipse.osbp.xtext.perspective.Activator
+import org.eclipse.jdt.internal.core.JavaProject
 import org.eclipse.osbp.xtext.perspective.Perspective
 import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage
+import org.eclipse.osbp.xtext.perspective.PerspectivePackage
+import org.eclipse.xtext.resource.XtextResourceSet
 import org.eclipse.xtext.validation.Check
-import org.osgi.framework.Bundle
+import org.eclipse.xtext.validation.CheckType
+import java.util.HashSet
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType
+import java.util.Set
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage
+import org.eclipse.osbp.dsl.semantic.common.types.LType
+import org.eclipse.osbp.xtext.perspective.PerspectiveElement
 
 /**
  * Custom validation rules. 
- *
+ * 
  * see http://www.eclipse.org/Xtext/documentation.html#validation
  */
 class PerspectiveDslValidator extends AbstractPerspectiveDslValidator {
-
 	@Check
 	def checkBPMlicensed(Perspective pers) {
-		if ((pers.process != null)) {
-			for (Bundle b : Activator.getContext().getBundles()) {
-				if (b.getSymbolicName().equals("net.osbee.bpm")) {
-					return;
+		if ((pers.process !== null)) {
+			val rs = pers.eResource.resourceSet as XtextResourceSet
+			if(rs.classpathURIContext instanceof JavaProject){
+				val JavaProject javaProject = rs.classpathURIContext as JavaProject
+				var found = javaProject.findType("net.osbee.bpm.BPMEngine")
+				if(found === null) {
+					info(
+						'''BPM is needed and not yet licensed. License BPM at www.osbee.net''', pers,
+						PerspectiveDslPackage.Literals.PERSPECTIVE__PROCESS)
 				}
 			}
-			info(
-				'''BPM is needed and not yet licensed. License BPM at www.osbee.net''',
-				pers, 
-				PerspectiveDslPackage.Literals.PERSPECTIVE__PROCESS)
 		}
 	}
+	
+	@Check(CheckType.NORMAL)
+	def void checkForDuplicatedPerspectiveNames(PerspectivePackage perspectivePackage) {
+		var names = new HashSet<String>()
+		var counter = 0
+		for (pers : perspectivePackage.perspectives){
+			var name = pers.name
+			if (!names.add(name)) {
+				error(String.format("Perspective %s must be unique in package %s!", name, perspectivePackage.name),
+						PerspectiveDslPackage.Literals.PERSPECTIVE_PACKAGE__PERSPECTIVES, counter)
+				return;
+			}
+			counter++;
+		}
+	}
+	
+	@Check(CheckType.NORMAL)
+	def void checkForDuplicatedPerspectiveElementNames(Perspective perspective) {
+		var elementIds = new HashSet<String>()
+		var counter = 0
+		for (element : perspective.elements){
+			var elementId = element.elementId
+			if (!elementIds.add(elementId)) {
+				error(String.format("Perspective element %s must be unique in perspective %s!", elementId, perspective.name),
+						PerspectiveDslPackage.Literals.PERSPECTIVE__ELEMENTS, counter)
+				return;
+			}
+			counter++;
+		}
+	}
+	
+	@Check(CheckType.NORMAL)
+	def void checkForDuplicatedPerspectiveElementNames(PerspectiveElement perspectiveElement) {
+		var elementIds = new HashSet<String>()
+		var counter = 0
+		for (element : perspectiveElement.elements){
+			var elementId = element.elementId
+			if (!elementIds.add(elementId)) {
+				error(String.format("Perspective element %s must be unique in perspective element %s!", elementId, perspectiveElement.elementId),
+						PerspectiveDslPackage.Literals.PERSPECTIVE_ELEMENT__ELEMENTS, counter)
+				return;
+			}
+			counter++;
+		}
+	}
+	
 }
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/valueconverter/PerspectiveQualifiedNameProvider.java b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/valueconverter/PerspectiveQualifiedNameProvider.java
index d0b5d11..3182981 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/valueconverter/PerspectiveQualifiedNameProvider.java
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/valueconverter/PerspectiveQualifiedNameProvider.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/valueconverter/PerspectiveValueConverterService.java b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/valueconverter/PerspectiveValueConverterService.java
index 8430b42..a900c12 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/valueconverter/PerspectiveValueConverterService.java
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/valueconverter/PerspectiveValueConverterService.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  * 		Christophe Loetz - Initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/derivedstate/PerspectiveModelDerivedStateComputerx.java b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/derivedstate/PerspectiveModelDerivedStateComputerx.java
index 0866946..a2232bc 100644
--- a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/derivedstate/PerspectiveModelDerivedStateComputerx.java
+++ b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/derivedstate/PerspectiveModelDerivedStateComputerx.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.java b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.java
index fedaf9c..ac11832 100644
--- a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.java
+++ b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveDslJvmModelInferrer.java b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveDslJvmModelInferrer.java
index 9d698dd..40f9dfb 100644
--- a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveDslJvmModelInferrer.java
+++ b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveDslJvmModelInferrer.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveModelGenerator.java b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveModelGenerator.java
index e05e84f..e18694f 100644
--- a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveModelGenerator.java
+++ b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveModelGenerator.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/validation/PerspectiveDslValidator.java b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/validation/PerspectiveDslValidator.java
index 7296d54..2e1e1e0 100644
--- a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/validation/PerspectiveDslValidator.java
+++ b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/validation/PerspectiveDslValidator.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -14,15 +16,22 @@
  */
 package org.eclipse.osbp.xtext.perspective.validation;
 
-import com.google.common.base.Objects;
+import java.util.HashSet;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.internal.core.JavaProject;
 import org.eclipse.osbp.xtext.blip.Blip;
-import org.eclipse.osbp.xtext.perspective.Activator;
 import org.eclipse.osbp.xtext.perspective.Perspective;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
+import org.eclipse.osbp.xtext.perspective.PerspectiveElement;
+import org.eclipse.osbp.xtext.perspective.PerspectivePackage;
 import org.eclipse.osbp.xtext.perspective.validation.AbstractPerspectiveDslValidator;
 import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.resource.XtextResourceSet;
 import org.eclipse.xtext.validation.Check;
-import org.osgi.framework.Bundle;
+import org.eclipse.xtext.validation.CheckType;
+import org.eclipse.xtext.xbase.lib.Exceptions;
 
 /**
  * Custom validation rules.
@@ -33,20 +42,87 @@
 public class PerspectiveDslValidator extends AbstractPerspectiveDslValidator {
   @Check
   public void checkBPMlicensed(final Perspective pers) {
-    Blip _process = pers.getProcess();
-    boolean _notEquals = (!Objects.equal(_process, null));
-    if (_notEquals) {
-      Bundle[] _bundles = Activator.getContext().getBundles();
-      for (final Bundle b : _bundles) {
-        boolean _equals = b.getSymbolicName().equals("net.osbee.bpm");
-        if (_equals) {
-          return;
+    try {
+      Blip _process = pers.getProcess();
+      boolean _tripleNotEquals = (_process != null);
+      if (_tripleNotEquals) {
+        ResourceSet _resourceSet = pers.eResource().getResourceSet();
+        final XtextResourceSet rs = ((XtextResourceSet) _resourceSet);
+        Object _classpathURIContext = rs.getClasspathURIContext();
+        if ((_classpathURIContext instanceof JavaProject)) {
+          Object _classpathURIContext_1 = rs.getClasspathURIContext();
+          final JavaProject javaProject = ((JavaProject) _classpathURIContext_1);
+          IType found = javaProject.findType("net.osbee.bpm.BPMEngine");
+          if ((found == null)) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("BPM is needed and not yet licensed. License BPM at www.osbee.net");
+            this.info(_builder.toString(), pers, 
+              PerspectiveDslPackage.Literals.PERSPECTIVE__PROCESS);
+          }
         }
       }
-      StringConcatenation _builder = new StringConcatenation();
-      _builder.append("BPM is needed and not yet licensed. License BPM at www.osbee.net");
-      this.info(_builder.toString(), pers, 
-        PerspectiveDslPackage.Literals.PERSPECTIVE__PROCESS);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Check(CheckType.NORMAL)
+  public void checkForDuplicatedPerspectiveNames(final PerspectivePackage perspectivePackage) {
+    HashSet<String> names = new HashSet<String>();
+    int counter = 0;
+    EList<Perspective> _perspectives = perspectivePackage.getPerspectives();
+    for (final Perspective pers : _perspectives) {
+      {
+        String name = pers.getName();
+        boolean _add = names.add(name);
+        boolean _not = (!_add);
+        if (_not) {
+          this.error(String.format("Perspective %s must be unique in package %s!", name, perspectivePackage.getName()), 
+            PerspectiveDslPackage.Literals.PERSPECTIVE_PACKAGE__PERSPECTIVES, counter);
+          return;
+        }
+        counter++;
+      }
+    }
+  }
+  
+  @Check(CheckType.NORMAL)
+  public void checkForDuplicatedPerspectiveElementNames(final Perspective perspective) {
+    HashSet<String> elementIds = new HashSet<String>();
+    int counter = 0;
+    EList<PerspectiveElement> _elements = perspective.getElements();
+    for (final PerspectiveElement element : _elements) {
+      {
+        String elementId = element.getElementId();
+        boolean _add = elementIds.add(elementId);
+        boolean _not = (!_add);
+        if (_not) {
+          this.error(String.format("Perspective element %s must be unique in perspective %s!", elementId, perspective.getName()), 
+            PerspectiveDslPackage.Literals.PERSPECTIVE__ELEMENTS, counter);
+          return;
+        }
+        counter++;
+      }
+    }
+  }
+  
+  @Check(CheckType.NORMAL)
+  public void checkForDuplicatedPerspectiveElementNames(final PerspectiveElement perspectiveElement) {
+    HashSet<String> elementIds = new HashSet<String>();
+    int counter = 0;
+    EList<PerspectiveElement> _elements = perspectiveElement.getElements();
+    for (final PerspectiveElement element : _elements) {
+      {
+        String elementId = element.getElementId();
+        boolean _add = elementIds.add(elementId);
+        boolean _not = (!_add);
+        if (_not) {
+          this.error(String.format("Perspective element %s must be unique in perspective element %s!", elementId, perspectiveElement.getElementId()), 
+            PerspectiveDslPackage.Literals.PERSPECTIVE_ELEMENT__ELEMENTS, counter);
+          return;
+        }
+        counter++;
+      }
     }
   }
 }
diff --git a/pom.xml b/pom.xml
index 7c2596d..445678a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,9 +2,11 @@
 <!--#======================================================================= -->
 <!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany). -->
 <!--# All rights reserved. This program and the accompanying materials -->
-<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Christophe Loetz  (Loetz GmbH&Co.KG) - Initial implementation API and implementation -->