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 ) {