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.menu.feature/LICENSE.txt b/org.eclipse.osbp.xtext.menu.feature/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.xtext.menu.feature/LICENSE.txt
+++ b/org.eclipse.osbp.xtext.menu.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.menu.feature/build.properties b/org.eclipse.osbp.xtext.menu.feature/build.properties
index b8920ff..d6b1b0a 100644
--- a/org.eclipse.osbp.xtext.menu.feature/build.properties
+++ b/org.eclipse.osbp.xtext.menu.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.menu.feature/epl-2.0.html b/org.eclipse.osbp.xtext.menu.feature/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.xtext.menu.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.menu.feature/epl-v10.html b/org.eclipse.osbp.xtext.menu.feature/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.xtext.menu.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.menu.feature/feature.properties b/org.eclipse.osbp.xtext.menu.feature/feature.properties
index afa216d..d6c708e 100644
--- a/org.eclipse.osbp.xtext.menu.feature/feature.properties
+++ b/org.eclipse.osbp.xtext.menu.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.menu.feature/license.html b/org.eclipse.osbp.xtext.menu.feature/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.xtext.menu.feature/license.html
+++ b/org.eclipse.osbp.xtext.menu.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.menu.feature/pom.xml b/org.eclipse.osbp.xtext.menu.feature/pom.xml
index 9c854d1..56681d9 100644
--- a/org.eclipse.osbp.xtext.menu.feature/pom.xml
+++ b/org.eclipse.osbp.xtext.menu.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 API and implementation -->
diff --git a/org.eclipse.osbp.xtext.menu.ide/pom.xml b/org.eclipse.osbp.xtext.menu.ide/pom.xml
index 4621ebc..312944a 100644
--- a/org.eclipse.osbp.xtext.menu.ide/pom.xml
+++ b/org.eclipse.osbp.xtext.menu.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.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/MenuDslParser.java b/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/MenuDslParser.java
index 55dad26..97e9f3a 100644
--- a/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/MenuDslParser.java
+++ b/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/MenuDslParser.java
@@ -31,7 +31,8 @@
 			nameMappings = new HashMap<AbstractElement, String>() {
 				private static final long serialVersionUID = 1L;
 				{
-					put(grammarAccess.getMenuEntryAccess().getAlternatives_6(), "rule__MenuEntry__Alternatives_6");
+					put(grammarAccess.getMenuCategoryAccess().getAlternatives_2(), "rule__MenuCategory__Alternatives_2");
+					put(grammarAccess.getMenuEntryAccess().getAlternatives_3(), "rule__MenuEntry__Alternatives_3");
 					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_2(), "rule__XImportDeclaration__Alternatives_2");
 					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3(), "rule__XImportDeclaration__Alternatives_2_0_3");
 					put(grammarAccess.getXAnnotationAccess().getAlternatives_3_1(), "rule__XAnnotation__Alternatives_3_1");
@@ -78,16 +79,18 @@
 					put(grammarAccess.getMenuModelAccess().getGroup(), "rule__MenuModel__Group__0");
 					put(grammarAccess.getMenuPackageAccess().getGroup(), "rule__MenuPackage__Group__0");
 					put(grammarAccess.getMenuPackageAccess().getGroup_3(), "rule__MenuPackage__Group_3__0");
-					put(grammarAccess.getMenuPackageAccess().getGroup_3_6(), "rule__MenuPackage__Group_3_6__0");
-					put(grammarAccess.getMenuPackageAccess().getGroup_3_7(), "rule__MenuPackage__Group_3_7__0");
+					put(grammarAccess.getMenuPackageAccess().getGroup_3_4(), "rule__MenuPackage__Group_3_4__0");
+					put(grammarAccess.getMenuPackageAccess().getGroup_3_5(), "rule__MenuPackage__Group_3_5__0");
+					put(grammarAccess.getMenuCategoryAccess().getGroup(), "rule__MenuCategory__Group__0");
+					put(grammarAccess.getMenuCategoryAccess().getGroup_2_0(), "rule__MenuCategory__Group_2_0__0");
+					put(grammarAccess.getMenuCategoryAccess().getGroup_2_1(), "rule__MenuCategory__Group_2_1__0");
+					put(grammarAccess.getMenuCategoryAccess().getGroup_2_6(), "rule__MenuCategory__Group_2_6__0");
+					put(grammarAccess.getMenuTreeAccess().getGroup(), "rule__MenuTree__Group__0");
+					put(grammarAccess.getMenuTreeAccess().getGroup_2(), "rule__MenuTree__Group_2__0");
 					put(grammarAccess.getMenuEntryAccess().getGroup(), "rule__MenuEntry__Group__0");
-					put(grammarAccess.getMenuEntryAccess().getGroup_3(), "rule__MenuEntry__Group_3__0");
-					put(grammarAccess.getMenuEntryAccess().getGroup_4(), "rule__MenuEntry__Group_4__0");
-					put(grammarAccess.getMenuEntryAccess().getGroup_6_0(), "rule__MenuEntry__Group_6_0__0");
-					put(grammarAccess.getMenuEntryAccess().getGroup_6_1(), "rule__MenuEntry__Group_6_1__0");
-					put(grammarAccess.getMenuEntryAccess().getGroup_6_2(), "rule__MenuEntry__Group_6_2__0");
-					put(grammarAccess.getMenuEntryAccess().getGroup_6_3(), "rule__MenuEntry__Group_6_3__0");
-					put(grammarAccess.getMenuEntryAccess().getGroup_7(), "rule__MenuEntry__Group_7__0");
+					put(grammarAccess.getMenuEntryAccess().getGroup_2(), "rule__MenuEntry__Group_2__0");
+					put(grammarAccess.getMenuEntryAccess().getGroup_3_0(), "rule__MenuEntry__Group_3_0__0");
+					put(grammarAccess.getMenuEntryAccess().getGroup_3_1(), "rule__MenuEntry__Group_3_1__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");
@@ -289,32 +292,35 @@
 					put(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup(), "rule__QualifiedNameWithWildcard__Group__0");
 					put(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup(), "rule__QualifiedNameInStaticImport__Group__0");
 					put(grammarAccess.getMenuModelAccess().getImportSectionAssignment_0(), "rule__MenuModel__ImportSectionAssignment_0");
-					put(grammarAccess.getMenuModelAccess().getPackagesAssignment_1(), "rule__MenuModel__PackagesAssignment_1");
+					put(grammarAccess.getMenuModelAccess().getMenupackageAssignment_1(), "rule__MenuModel__MenupackageAssignment_1");
 					put(grammarAccess.getMenuPackageAccess().getNameAssignment_2(), "rule__MenuPackage__NameAssignment_2");
-					put(grammarAccess.getMenuPackageAccess().getExpandedImageAssignment_3_2(), "rule__MenuPackage__ExpandedImageAssignment_3_2");
-					put(grammarAccess.getMenuPackageAccess().getCollapsedImageAssignment_3_4(), "rule__MenuPackage__CollapsedImageAssignment_3_4");
-					put(grammarAccess.getMenuPackageAccess().getSubMenuIsAccordionAssignment_3_5(), "rule__MenuPackage__SubMenuIsAccordionAssignment_3_5");
-					put(grammarAccess.getMenuPackageAccess().getHeightAssignment_3_6_1(), "rule__MenuPackage__HeightAssignment_3_6_1");
-					put(grammarAccess.getMenuPackageAccess().getWidthAssignment_3_7_1(), "rule__MenuPackage__WidthAssignment_3_7_1");
-					put(grammarAccess.getMenuPackageAccess().getHasDesignerAssignment_3_8(), "rule__MenuPackage__HasDesignerAssignment_3_8");
-					put(grammarAccess.getMenuPackageAccess().getEntriesAssignment_3_9(), "rule__MenuPackage__EntriesAssignment_3_9");
-					put(grammarAccess.getMenuEntryAccess().getEntryidAssignment_2(), "rule__MenuEntry__EntryidAssignment_2");
-					put(grammarAccess.getMenuEntryAccess().getDescriptionAssignment_3_0(), "rule__MenuEntry__DescriptionAssignment_3_0");
-					put(grammarAccess.getMenuEntryAccess().getDescriptionValueAssignment_3_1(), "rule__MenuEntry__DescriptionValueAssignment_3_1");
-					put(grammarAccess.getMenuEntryAccess().getHasImageAssignment_4_0(), "rule__MenuEntry__HasImageAssignment_4_0");
-					put(grammarAccess.getMenuEntryAccess().getImageAssignment_4_1(), "rule__MenuEntry__ImageAssignment_4_1");
-					put(grammarAccess.getMenuEntryAccess().getShowBadgeAssignment_5(), "rule__MenuEntry__ShowBadgeAssignment_5");
-					put(grammarAccess.getMenuEntryAccess().getHasProcessAssignment_6_0_0(), "rule__MenuEntry__HasProcessAssignment_6_0_0");
-					put(grammarAccess.getMenuEntryAccess().getProcessAssignment_6_0_1(), "rule__MenuEntry__ProcessAssignment_6_0_1");
-					put(grammarAccess.getMenuEntryAccess().getHasPerspectiveAssignment_6_1_0(), "rule__MenuEntry__HasPerspectiveAssignment_6_1_0");
-					put(grammarAccess.getMenuEntryAccess().getPerspectiveAssignment_6_1_1(), "rule__MenuEntry__PerspectiveAssignment_6_1_1");
-					put(grammarAccess.getMenuEntryAccess().getHasTableAssignment_6_2_0(), "rule__MenuEntry__HasTableAssignment_6_2_0");
-					put(grammarAccess.getMenuEntryAccess().getTableAssignment_6_2_1(), "rule__MenuEntry__TableAssignment_6_2_1");
-					put(grammarAccess.getMenuEntryAccess().getHasDialogAssignment_6_3_0(), "rule__MenuEntry__HasDialogAssignment_6_3_0");
-					put(grammarAccess.getMenuEntryAccess().getDialogAssignment_6_3_1(), "rule__MenuEntry__DialogAssignment_6_3_1");
-					put(grammarAccess.getMenuEntryAccess().getHasUserFilterAssignment_6_4(), "rule__MenuEntry__HasUserFilterAssignment_6_4");
-					put(grammarAccess.getMenuEntryAccess().getHasKeyBindingAssignment_6_5(), "rule__MenuEntry__HasKeyBindingAssignment_6_5");
-					put(grammarAccess.getMenuEntryAccess().getSubentriesAssignment_7_1(), "rule__MenuEntry__SubentriesAssignment_7_1");
+					put(grammarAccess.getMenuPackageAccess().getExpandedImageAssignment_3_1(), "rule__MenuPackage__ExpandedImageAssignment_3_1");
+					put(grammarAccess.getMenuPackageAccess().getCollapsedImageAssignment_3_3(), "rule__MenuPackage__CollapsedImageAssignment_3_3");
+					put(grammarAccess.getMenuPackageAccess().getHeightAssignment_3_4_1(), "rule__MenuPackage__HeightAssignment_3_4_1");
+					put(grammarAccess.getMenuPackageAccess().getWidthAssignment_3_5_1(), "rule__MenuPackage__WidthAssignment_3_5_1");
+					put(grammarAccess.getMenuPackageAccess().getHasDesignerAssignment_3_6(), "rule__MenuPackage__HasDesignerAssignment_3_6");
+					put(grammarAccess.getMenuPackageAccess().getCategoriesAssignment_3_7(), "rule__MenuPackage__CategoriesAssignment_3_7");
+					put(grammarAccess.getMenuCategoryAccess().getNameAssignment_1(), "rule__MenuCategory__NameAssignment_1");
+					put(grammarAccess.getMenuCategoryAccess().getHasTableAssignment_2_0_0(), "rule__MenuCategory__HasTableAssignment_2_0_0");
+					put(grammarAccess.getMenuCategoryAccess().getTableAssignment_2_0_1(), "rule__MenuCategory__TableAssignment_2_0_1");
+					put(grammarAccess.getMenuCategoryAccess().getHasDialogAssignment_2_1_0(), "rule__MenuCategory__HasDialogAssignment_2_1_0");
+					put(grammarAccess.getMenuCategoryAccess().getDialogAssignment_2_1_1(), "rule__MenuCategory__DialogAssignment_2_1_1");
+					put(grammarAccess.getMenuCategoryAccess().getHasUserFilterAssignment_2_2(), "rule__MenuCategory__HasUserFilterAssignment_2_2");
+					put(grammarAccess.getMenuCategoryAccess().getHasReportPrinterAssignment_2_3(), "rule__MenuCategory__HasReportPrinterAssignment_2_3");
+					put(grammarAccess.getMenuCategoryAccess().getHasKeyBindingAssignment_2_4(), "rule__MenuCategory__HasKeyBindingAssignment_2_4");
+					put(grammarAccess.getMenuCategoryAccess().getHasSystemSettingsAssignment_2_5(), "rule__MenuCategory__HasSystemSettingsAssignment_2_5");
+					put(grammarAccess.getMenuCategoryAccess().getTreesAssignment_2_6_1(), "rule__MenuCategory__TreesAssignment_2_6_1");
+					put(grammarAccess.getMenuTreeAccess().getNameAssignment_1(), "rule__MenuTree__NameAssignment_1");
+					put(grammarAccess.getMenuTreeAccess().getHasTooltipAssignment_2_0(), "rule__MenuTree__HasTooltipAssignment_2_0");
+					put(grammarAccess.getMenuTreeAccess().getTooltipAssignment_2_1(), "rule__MenuTree__TooltipAssignment_2_1");
+					put(grammarAccess.getMenuTreeAccess().getEntriesAssignment_4(), "rule__MenuTree__EntriesAssignment_4");
+					put(grammarAccess.getMenuEntryAccess().getNameAssignment_1(), "rule__MenuEntry__NameAssignment_1");
+					put(grammarAccess.getMenuEntryAccess().getHasIconAssignment_2_0(), "rule__MenuEntry__HasIconAssignment_2_0");
+					put(grammarAccess.getMenuEntryAccess().getIconAssignment_2_1(), "rule__MenuEntry__IconAssignment_2_1");
+					put(grammarAccess.getMenuEntryAccess().getHasProcessAssignment_3_0_0(), "rule__MenuEntry__HasProcessAssignment_3_0_0");
+					put(grammarAccess.getMenuEntryAccess().getProcessAssignment_3_0_1(), "rule__MenuEntry__ProcessAssignment_3_0_1");
+					put(grammarAccess.getMenuEntryAccess().getHasPerspectiveAssignment_3_1_0(), "rule__MenuEntry__HasPerspectiveAssignment_3_1_0");
+					put(grammarAccess.getMenuEntryAccess().getPerspectiveAssignment_3_1_1(), "rule__MenuEntry__PerspectiveAssignment_3_1_1");
 					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.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDsl.g b/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDsl.g
index 4ec0598..a49444d 100644
--- a/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDsl.g
+++ b/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDsl.g
@@ -100,6 +100,56 @@
 	restoreStackSize(stackSize);
 }
 
+// Entry rule entryRuleMenuCategory
+entryRuleMenuCategory
+:
+{ before(grammarAccess.getMenuCategoryRule()); }
+	 ruleMenuCategory
+{ after(grammarAccess.getMenuCategoryRule()); } 
+	 EOF 
+;
+
+// Rule MenuCategory
+ruleMenuCategory 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getMenuCategoryAccess().getGroup()); }
+		(rule__MenuCategory__Group__0)
+		{ after(grammarAccess.getMenuCategoryAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleMenuTree
+entryRuleMenuTree
+:
+{ before(grammarAccess.getMenuTreeRule()); }
+	 ruleMenuTree
+{ after(grammarAccess.getMenuTreeRule()); } 
+	 EOF 
+;
+
+// Rule MenuTree
+ruleMenuTree 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getMenuTreeAccess().getGroup()); }
+		(rule__MenuTree__Group__0)
+		{ after(grammarAccess.getMenuTreeAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 // Entry rule entryRuleMenuEntry
 entryRuleMenuEntry
 :
@@ -2222,45 +2272,72 @@
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__Alternatives_6
+rule__MenuCategory__Alternatives_2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getMenuEntryAccess().getGroup_6_0()); }
-		(rule__MenuEntry__Group_6_0__0)
-		{ after(grammarAccess.getMenuEntryAccess().getGroup_6_0()); }
+		{ before(grammarAccess.getMenuCategoryAccess().getGroup_2_0()); }
+		(rule__MenuCategory__Group_2_0__0)
+		{ after(grammarAccess.getMenuCategoryAccess().getGroup_2_0()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getMenuEntryAccess().getGroup_6_1()); }
-		(rule__MenuEntry__Group_6_1__0)
-		{ after(grammarAccess.getMenuEntryAccess().getGroup_6_1()); }
+		{ before(grammarAccess.getMenuCategoryAccess().getGroup_2_1()); }
+		(rule__MenuCategory__Group_2_1__0)
+		{ after(grammarAccess.getMenuCategoryAccess().getGroup_2_1()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getMenuEntryAccess().getGroup_6_2()); }
-		(rule__MenuEntry__Group_6_2__0)
-		{ after(grammarAccess.getMenuEntryAccess().getGroup_6_2()); }
+		{ before(grammarAccess.getMenuCategoryAccess().getHasUserFilterAssignment_2_2()); }
+		(rule__MenuCategory__HasUserFilterAssignment_2_2)
+		{ after(grammarAccess.getMenuCategoryAccess().getHasUserFilterAssignment_2_2()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getMenuEntryAccess().getGroup_6_3()); }
-		(rule__MenuEntry__Group_6_3__0)
-		{ after(grammarAccess.getMenuEntryAccess().getGroup_6_3()); }
+		{ before(grammarAccess.getMenuCategoryAccess().getHasReportPrinterAssignment_2_3()); }
+		(rule__MenuCategory__HasReportPrinterAssignment_2_3)
+		{ after(grammarAccess.getMenuCategoryAccess().getHasReportPrinterAssignment_2_3()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getMenuEntryAccess().getHasUserFilterAssignment_6_4()); }
-		(rule__MenuEntry__HasUserFilterAssignment_6_4)
-		{ after(grammarAccess.getMenuEntryAccess().getHasUserFilterAssignment_6_4()); }
+		{ before(grammarAccess.getMenuCategoryAccess().getHasKeyBindingAssignment_2_4()); }
+		(rule__MenuCategory__HasKeyBindingAssignment_2_4)
+		{ after(grammarAccess.getMenuCategoryAccess().getHasKeyBindingAssignment_2_4()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getMenuEntryAccess().getHasKeyBindingAssignment_6_5()); }
-		(rule__MenuEntry__HasKeyBindingAssignment_6_5)
-		{ after(grammarAccess.getMenuEntryAccess().getHasKeyBindingAssignment_6_5()); }
+		{ before(grammarAccess.getMenuCategoryAccess().getHasSystemSettingsAssignment_2_5()); }
+		(rule__MenuCategory__HasSystemSettingsAssignment_2_5)
+		{ after(grammarAccess.getMenuCategoryAccess().getHasSystemSettingsAssignment_2_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getMenuCategoryAccess().getGroup_2_6()); }
+		(rule__MenuCategory__Group_2_6__0)
+		{ after(grammarAccess.getMenuCategoryAccess().getGroup_2_6()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuEntry__Alternatives_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuEntryAccess().getGroup_3_0()); }
+		(rule__MenuEntry__Group_3_0__0)
+		{ after(grammarAccess.getMenuEntryAccess().getGroup_3_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getMenuEntryAccess().getGroup_3_1()); }
+		(rule__MenuEntry__Group_3_1__0)
+		{ after(grammarAccess.getMenuEntryAccess().getGroup_3_1()); }
 	)
 ;
 finally {
@@ -3478,9 +3555,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getMenuModelAccess().getPackagesAssignment_1()); }
-	(rule__MenuModel__PackagesAssignment_1)*
-	{ after(grammarAccess.getMenuModelAccess().getPackagesAssignment_1()); }
+	{ before(grammarAccess.getMenuModelAccess().getMenupackageAssignment_1()); }
+	(rule__MenuModel__MenupackageAssignment_1)
+	{ after(grammarAccess.getMenuModelAccess().getMenupackageAssignment_1()); }
 )
 ;
 finally {
@@ -3614,9 +3691,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getMenuPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
-	'{'
-	{ after(grammarAccess.getMenuPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+	{ before(grammarAccess.getMenuPackageAccess().getExpandedImageKeyword_3_0()); }
+	'expandedImage'
+	{ after(grammarAccess.getMenuPackageAccess().getExpandedImageKeyword_3_0()); }
 )
 ;
 finally {
@@ -3641,9 +3718,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getMenuPackageAccess().getExpandedImageKeyword_3_1()); }
-	'expandedImage'
-	{ after(grammarAccess.getMenuPackageAccess().getExpandedImageKeyword_3_1()); }
+	{ before(grammarAccess.getMenuPackageAccess().getExpandedImageAssignment_3_1()); }
+	(rule__MenuPackage__ExpandedImageAssignment_3_1)
+	{ after(grammarAccess.getMenuPackageAccess().getExpandedImageAssignment_3_1()); }
 )
 ;
 finally {
@@ -3668,9 +3745,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getMenuPackageAccess().getExpandedImageAssignment_3_2()); }
-	(rule__MenuPackage__ExpandedImageAssignment_3_2)
-	{ after(grammarAccess.getMenuPackageAccess().getExpandedImageAssignment_3_2()); }
+	{ before(grammarAccess.getMenuPackageAccess().getCollapsedImageKeyword_3_2()); }
+	'collapsedImage'
+	{ after(grammarAccess.getMenuPackageAccess().getCollapsedImageKeyword_3_2()); }
 )
 ;
 finally {
@@ -3695,9 +3772,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getMenuPackageAccess().getCollapsedImageKeyword_3_3()); }
-	'collapsedImage'
-	{ after(grammarAccess.getMenuPackageAccess().getCollapsedImageKeyword_3_3()); }
+	{ before(grammarAccess.getMenuPackageAccess().getCollapsedImageAssignment_3_3()); }
+	(rule__MenuPackage__CollapsedImageAssignment_3_3)
+	{ after(grammarAccess.getMenuPackageAccess().getCollapsedImageAssignment_3_3()); }
 )
 ;
 finally {
@@ -3722,9 +3799,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getMenuPackageAccess().getCollapsedImageAssignment_3_4()); }
-	(rule__MenuPackage__CollapsedImageAssignment_3_4)
-	{ after(grammarAccess.getMenuPackageAccess().getCollapsedImageAssignment_3_4()); }
+	{ before(grammarAccess.getMenuPackageAccess().getGroup_3_4()); }
+	(rule__MenuPackage__Group_3_4__0)?
+	{ after(grammarAccess.getMenuPackageAccess().getGroup_3_4()); }
 )
 ;
 finally {
@@ -3749,9 +3826,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getMenuPackageAccess().getSubMenuIsAccordionAssignment_3_5()); }
-	(rule__MenuPackage__SubMenuIsAccordionAssignment_3_5)?
-	{ after(grammarAccess.getMenuPackageAccess().getSubMenuIsAccordionAssignment_3_5()); }
+	{ before(grammarAccess.getMenuPackageAccess().getGroup_3_5()); }
+	(rule__MenuPackage__Group_3_5__0)?
+	{ after(grammarAccess.getMenuPackageAccess().getGroup_3_5()); }
 )
 ;
 finally {
@@ -3776,9 +3853,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getMenuPackageAccess().getGroup_3_6()); }
-	(rule__MenuPackage__Group_3_6__0)?
-	{ after(grammarAccess.getMenuPackageAccess().getGroup_3_6()); }
+	{ before(grammarAccess.getMenuPackageAccess().getHasDesignerAssignment_3_6()); }
+	(rule__MenuPackage__HasDesignerAssignment_3_6)?
+	{ after(grammarAccess.getMenuPackageAccess().getHasDesignerAssignment_3_6()); }
 )
 ;
 finally {
@@ -3791,7 +3868,6 @@
 	}
 :
 	rule__MenuPackage__Group_3__7__Impl
-	rule__MenuPackage__Group_3__8
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -3803,89 +3879,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getMenuPackageAccess().getGroup_3_7()); }
-	(rule__MenuPackage__Group_3_7__0)?
-	{ after(grammarAccess.getMenuPackageAccess().getGroup_3_7()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuPackage__Group_3__8
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuPackage__Group_3__8__Impl
-	rule__MenuPackage__Group_3__9
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuPackage__Group_3__8__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuPackageAccess().getHasDesignerAssignment_3_8()); }
-	(rule__MenuPackage__HasDesignerAssignment_3_8)?
-	{ after(grammarAccess.getMenuPackageAccess().getHasDesignerAssignment_3_8()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuPackage__Group_3__9
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuPackage__Group_3__9__Impl
-	rule__MenuPackage__Group_3__10
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuPackage__Group_3__9__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuPackageAccess().getEntriesAssignment_3_9()); }
-	(rule__MenuPackage__EntriesAssignment_3_9)*
-	{ after(grammarAccess.getMenuPackageAccess().getEntriesAssignment_3_9()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuPackage__Group_3__10
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuPackage__Group_3__10__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuPackage__Group_3__10__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuPackageAccess().getRightCurlyBracketKeyword_3_10()); }
-	'}'
-	{ after(grammarAccess.getMenuPackageAccess().getRightCurlyBracketKeyword_3_10()); }
+	{ before(grammarAccess.getMenuPackageAccess().getCategoriesAssignment_3_7()); }
+	(rule__MenuPackage__CategoriesAssignment_3_7)*
+	{ after(grammarAccess.getMenuPackageAccess().getCategoriesAssignment_3_7()); }
 )
 ;
 finally {
@@ -3893,53 +3889,53 @@
 }
 
 
-rule__MenuPackage__Group_3_6__0
+rule__MenuPackage__Group_3_4__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__MenuPackage__Group_3_6__0__Impl
-	rule__MenuPackage__Group_3_6__1
+	rule__MenuPackage__Group_3_4__0__Impl
+	rule__MenuPackage__Group_3_4__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuPackage__Group_3_6__0__Impl
+rule__MenuPackage__Group_3_4__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getMenuPackageAccess().getHeightKeyword_3_6_0()); }
+	{ before(grammarAccess.getMenuPackageAccess().getHeightKeyword_3_4_0()); }
 	'height'
-	{ after(grammarAccess.getMenuPackageAccess().getHeightKeyword_3_6_0()); }
+	{ after(grammarAccess.getMenuPackageAccess().getHeightKeyword_3_4_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuPackage__Group_3_6__1
+rule__MenuPackage__Group_3_4__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__MenuPackage__Group_3_6__1__Impl
+	rule__MenuPackage__Group_3_4__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuPackage__Group_3_6__1__Impl
+rule__MenuPackage__Group_3_4__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getMenuPackageAccess().getHeightAssignment_3_6_1()); }
-	(rule__MenuPackage__HeightAssignment_3_6_1)
-	{ after(grammarAccess.getMenuPackageAccess().getHeightAssignment_3_6_1()); }
+	{ before(grammarAccess.getMenuPackageAccess().getHeightAssignment_3_4_1()); }
+	(rule__MenuPackage__HeightAssignment_3_4_1)
+	{ after(grammarAccess.getMenuPackageAccess().getHeightAssignment_3_4_1()); }
 )
 ;
 finally {
@@ -3947,53 +3943,539 @@
 }
 
 
-rule__MenuPackage__Group_3_7__0
+rule__MenuPackage__Group_3_5__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__MenuPackage__Group_3_7__0__Impl
-	rule__MenuPackage__Group_3_7__1
+	rule__MenuPackage__Group_3_5__0__Impl
+	rule__MenuPackage__Group_3_5__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuPackage__Group_3_7__0__Impl
+rule__MenuPackage__Group_3_5__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getMenuPackageAccess().getWidthKeyword_3_7_0()); }
+	{ before(grammarAccess.getMenuPackageAccess().getWidthKeyword_3_5_0()); }
 	'width'
-	{ after(grammarAccess.getMenuPackageAccess().getWidthKeyword_3_7_0()); }
+	{ after(grammarAccess.getMenuPackageAccess().getWidthKeyword_3_5_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuPackage__Group_3_7__1
+rule__MenuPackage__Group_3_5__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__MenuPackage__Group_3_7__1__Impl
+	rule__MenuPackage__Group_3_5__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuPackage__Group_3_7__1__Impl
+rule__MenuPackage__Group_3_5__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getMenuPackageAccess().getWidthAssignment_3_7_1()); }
-	(rule__MenuPackage__WidthAssignment_3_7_1)
-	{ after(grammarAccess.getMenuPackageAccess().getWidthAssignment_3_7_1()); }
+	{ before(grammarAccess.getMenuPackageAccess().getWidthAssignment_3_5_1()); }
+	(rule__MenuPackage__WidthAssignment_3_5_1)
+	{ after(grammarAccess.getMenuPackageAccess().getWidthAssignment_3_5_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MenuCategory__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuCategory__Group__0__Impl
+	rule__MenuCategory__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuCategoryAccess().getCategoryKeyword_0()); }
+	'category'
+	{ after(grammarAccess.getMenuCategoryAccess().getCategoryKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuCategory__Group__1__Impl
+	rule__MenuCategory__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuCategoryAccess().getNameAssignment_1()); }
+	(rule__MenuCategory__NameAssignment_1)
+	{ after(grammarAccess.getMenuCategoryAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuCategory__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuCategoryAccess().getAlternatives_2()); }
+	(rule__MenuCategory__Alternatives_2)?
+	{ after(grammarAccess.getMenuCategoryAccess().getAlternatives_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MenuCategory__Group_2_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuCategory__Group_2_0__0__Impl
+	rule__MenuCategory__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group_2_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuCategoryAccess().getHasTableAssignment_2_0_0()); }
+	(rule__MenuCategory__HasTableAssignment_2_0_0)
+	{ after(grammarAccess.getMenuCategoryAccess().getHasTableAssignment_2_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group_2_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuCategory__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group_2_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuCategoryAccess().getTableAssignment_2_0_1()); }
+	(rule__MenuCategory__TableAssignment_2_0_1)
+	{ after(grammarAccess.getMenuCategoryAccess().getTableAssignment_2_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MenuCategory__Group_2_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuCategory__Group_2_1__0__Impl
+	rule__MenuCategory__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group_2_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuCategoryAccess().getHasDialogAssignment_2_1_0()); }
+	(rule__MenuCategory__HasDialogAssignment_2_1_0)
+	{ after(grammarAccess.getMenuCategoryAccess().getHasDialogAssignment_2_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group_2_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuCategory__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group_2_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuCategoryAccess().getDialogAssignment_2_1_1()); }
+	(rule__MenuCategory__DialogAssignment_2_1_1)
+	{ after(grammarAccess.getMenuCategoryAccess().getDialogAssignment_2_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MenuCategory__Group_2_6__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuCategory__Group_2_6__0__Impl
+	rule__MenuCategory__Group_2_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group_2_6__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuCategoryAccess().getLeftCurlyBracketKeyword_2_6_0()); }
+	'{'
+	{ after(grammarAccess.getMenuCategoryAccess().getLeftCurlyBracketKeyword_2_6_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group_2_6__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuCategory__Group_2_6__1__Impl
+	rule__MenuCategory__Group_2_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group_2_6__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuCategoryAccess().getTreesAssignment_2_6_1()); }
+	(rule__MenuCategory__TreesAssignment_2_6_1)*
+	{ after(grammarAccess.getMenuCategoryAccess().getTreesAssignment_2_6_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group_2_6__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuCategory__Group_2_6__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__Group_2_6__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuCategoryAccess().getRightCurlyBracketKeyword_2_6_2()); }
+	'}'
+	{ after(grammarAccess.getMenuCategoryAccess().getRightCurlyBracketKeyword_2_6_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MenuTree__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuTree__Group__0__Impl
+	rule__MenuTree__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuTreeAccess().getTreeKeyword_0()); }
+	'tree'
+	{ after(grammarAccess.getMenuTreeAccess().getTreeKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuTree__Group__1__Impl
+	rule__MenuTree__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuTreeAccess().getNameAssignment_1()); }
+	(rule__MenuTree__NameAssignment_1)
+	{ after(grammarAccess.getMenuTreeAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuTree__Group__2__Impl
+	rule__MenuTree__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuTreeAccess().getGroup_2()); }
+	(rule__MenuTree__Group_2__0)?
+	{ after(grammarAccess.getMenuTreeAccess().getGroup_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuTree__Group__3__Impl
+	rule__MenuTree__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuTreeAccess().getLeftCurlyBracketKeyword_3()); }
+	'{'
+	{ after(grammarAccess.getMenuTreeAccess().getLeftCurlyBracketKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuTree__Group__4__Impl
+	rule__MenuTree__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuTreeAccess().getEntriesAssignment_4()); }
+	(rule__MenuTree__EntriesAssignment_4)*
+	{ after(grammarAccess.getMenuTreeAccess().getEntriesAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuTree__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuTreeAccess().getRightCurlyBracketKeyword_5()); }
+	'}'
+	{ after(grammarAccess.getMenuTreeAccess().getRightCurlyBracketKeyword_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MenuTree__Group_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuTree__Group_2__0__Impl
+	rule__MenuTree__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__Group_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuTreeAccess().getHasTooltipAssignment_2_0()); }
+	(rule__MenuTree__HasTooltipAssignment_2_0)
+	{ after(grammarAccess.getMenuTreeAccess().getHasTooltipAssignment_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__Group_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MenuTree__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__Group_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMenuTreeAccess().getTooltipAssignment_2_1()); }
+	(rule__MenuTree__TooltipAssignment_2_1)
+	{ after(grammarAccess.getMenuTreeAccess().getTooltipAssignment_2_1()); }
 )
 ;
 finally {
@@ -4019,9 +4501,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getMenuEntryAccess().getMenuEntryAction_0()); }
-	()
-	{ after(grammarAccess.getMenuEntryAccess().getMenuEntryAction_0()); }
+	{ before(grammarAccess.getMenuEntryAccess().getEntryKeyword_0()); }
+	'entry'
+	{ after(grammarAccess.getMenuEntryAccess().getEntryKeyword_0()); }
 )
 ;
 finally {
@@ -4046,9 +4528,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getMenuEntryAccess().getEntryKeyword_1()); }
-	'entry'
-	{ after(grammarAccess.getMenuEntryAccess().getEntryKeyword_1()); }
+	{ before(grammarAccess.getMenuEntryAccess().getNameAssignment_1()); }
+	(rule__MenuEntry__NameAssignment_1)
+	{ after(grammarAccess.getMenuEntryAccess().getNameAssignment_1()); }
 )
 ;
 finally {
@@ -4073,9 +4555,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getMenuEntryAccess().getEntryidAssignment_2()); }
-	(rule__MenuEntry__EntryidAssignment_2)
-	{ after(grammarAccess.getMenuEntryAccess().getEntryidAssignment_2()); }
+	{ before(grammarAccess.getMenuEntryAccess().getGroup_2()); }
+	(rule__MenuEntry__Group_2__0)?
+	{ after(grammarAccess.getMenuEntryAccess().getGroup_2()); }
 )
 ;
 finally {
@@ -4088,7 +4570,6 @@
 	}
 :
 	rule__MenuEntry__Group__3__Impl
-	rule__MenuEntry__Group__4
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -4100,116 +4581,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getMenuEntryAccess().getGroup_3()); }
-	(rule__MenuEntry__Group_3__0)?
-	{ after(grammarAccess.getMenuEntryAccess().getGroup_3()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group__4
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuEntry__Group__4__Impl
-	rule__MenuEntry__Group__5
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group__4__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuEntryAccess().getGroup_4()); }
-	(rule__MenuEntry__Group_4__0)?
-	{ after(grammarAccess.getMenuEntryAccess().getGroup_4()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group__5
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuEntry__Group__5__Impl
-	rule__MenuEntry__Group__6
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group__5__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuEntryAccess().getShowBadgeAssignment_5()); }
-	(rule__MenuEntry__ShowBadgeAssignment_5)?
-	{ after(grammarAccess.getMenuEntryAccess().getShowBadgeAssignment_5()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group__6
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuEntry__Group__6__Impl
-	rule__MenuEntry__Group__7
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group__6__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuEntryAccess().getAlternatives_6()); }
-	(rule__MenuEntry__Alternatives_6)?
-	{ after(grammarAccess.getMenuEntryAccess().getAlternatives_6()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group__7
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuEntry__Group__7__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group__7__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuEntryAccess().getGroup_7()); }
-	(rule__MenuEntry__Group_7__0)?
-	{ after(grammarAccess.getMenuEntryAccess().getGroup_7()); }
+	{ before(grammarAccess.getMenuEntryAccess().getAlternatives_3()); }
+	(rule__MenuEntry__Alternatives_3)
+	{ after(grammarAccess.getMenuEntryAccess().getAlternatives_3()); }
 )
 ;
 finally {
@@ -4217,53 +4591,53 @@
 }
 
 
-rule__MenuEntry__Group_3__0
+rule__MenuEntry__Group_2__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__MenuEntry__Group_3__0__Impl
-	rule__MenuEntry__Group_3__1
+	rule__MenuEntry__Group_2__0__Impl
+	rule__MenuEntry__Group_2__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__Group_3__0__Impl
+rule__MenuEntry__Group_2__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getMenuEntryAccess().getDescriptionAssignment_3_0()); }
-	(rule__MenuEntry__DescriptionAssignment_3_0)
-	{ after(grammarAccess.getMenuEntryAccess().getDescriptionAssignment_3_0()); }
+	{ before(grammarAccess.getMenuEntryAccess().getHasIconAssignment_2_0()); }
+	(rule__MenuEntry__HasIconAssignment_2_0)
+	{ after(grammarAccess.getMenuEntryAccess().getHasIconAssignment_2_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__Group_3__1
+rule__MenuEntry__Group_2__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__MenuEntry__Group_3__1__Impl
+	rule__MenuEntry__Group_2__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__Group_3__1__Impl
+rule__MenuEntry__Group_2__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getMenuEntryAccess().getDescriptionValueAssignment_3_1()); }
-	(rule__MenuEntry__DescriptionValueAssignment_3_1)
-	{ after(grammarAccess.getMenuEntryAccess().getDescriptionValueAssignment_3_1()); }
+	{ before(grammarAccess.getMenuEntryAccess().getIconAssignment_2_1()); }
+	(rule__MenuEntry__IconAssignment_2_1)
+	{ after(grammarAccess.getMenuEntryAccess().getIconAssignment_2_1()); }
 )
 ;
 finally {
@@ -4271,53 +4645,53 @@
 }
 
 
-rule__MenuEntry__Group_4__0
+rule__MenuEntry__Group_3_0__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__MenuEntry__Group_4__0__Impl
-	rule__MenuEntry__Group_4__1
+	rule__MenuEntry__Group_3_0__0__Impl
+	rule__MenuEntry__Group_3_0__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__Group_4__0__Impl
+rule__MenuEntry__Group_3_0__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getMenuEntryAccess().getHasImageAssignment_4_0()); }
-	(rule__MenuEntry__HasImageAssignment_4_0)
-	{ after(grammarAccess.getMenuEntryAccess().getHasImageAssignment_4_0()); }
+	{ before(grammarAccess.getMenuEntryAccess().getHasProcessAssignment_3_0_0()); }
+	(rule__MenuEntry__HasProcessAssignment_3_0_0)
+	{ after(grammarAccess.getMenuEntryAccess().getHasProcessAssignment_3_0_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__Group_4__1
+rule__MenuEntry__Group_3_0__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__MenuEntry__Group_4__1__Impl
+	rule__MenuEntry__Group_3_0__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__Group_4__1__Impl
+rule__MenuEntry__Group_3_0__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getMenuEntryAccess().getImageAssignment_4_1()); }
-	(rule__MenuEntry__ImageAssignment_4_1)
-	{ after(grammarAccess.getMenuEntryAccess().getImageAssignment_4_1()); }
+	{ before(grammarAccess.getMenuEntryAccess().getProcessAssignment_3_0_1()); }
+	(rule__MenuEntry__ProcessAssignment_3_0_1)
+	{ after(grammarAccess.getMenuEntryAccess().getProcessAssignment_3_0_1()); }
 )
 ;
 finally {
@@ -4325,296 +4699,53 @@
 }
 
 
-rule__MenuEntry__Group_6_0__0
+rule__MenuEntry__Group_3_1__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__MenuEntry__Group_6_0__0__Impl
-	rule__MenuEntry__Group_6_0__1
+	rule__MenuEntry__Group_3_1__0__Impl
+	rule__MenuEntry__Group_3_1__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__Group_6_0__0__Impl
+rule__MenuEntry__Group_3_1__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getMenuEntryAccess().getHasProcessAssignment_6_0_0()); }
-	(rule__MenuEntry__HasProcessAssignment_6_0_0)
-	{ after(grammarAccess.getMenuEntryAccess().getHasProcessAssignment_6_0_0()); }
+	{ before(grammarAccess.getMenuEntryAccess().getHasPerspectiveAssignment_3_1_0()); }
+	(rule__MenuEntry__HasPerspectiveAssignment_3_1_0)
+	{ after(grammarAccess.getMenuEntryAccess().getHasPerspectiveAssignment_3_1_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__Group_6_0__1
+rule__MenuEntry__Group_3_1__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__MenuEntry__Group_6_0__1__Impl
+	rule__MenuEntry__Group_3_1__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__Group_6_0__1__Impl
+rule__MenuEntry__Group_3_1__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getMenuEntryAccess().getProcessAssignment_6_0_1()); }
-	(rule__MenuEntry__ProcessAssignment_6_0_1)
-	{ after(grammarAccess.getMenuEntryAccess().getProcessAssignment_6_0_1()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__MenuEntry__Group_6_1__0
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuEntry__Group_6_1__0__Impl
-	rule__MenuEntry__Group_6_1__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group_6_1__0__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuEntryAccess().getHasPerspectiveAssignment_6_1_0()); }
-	(rule__MenuEntry__HasPerspectiveAssignment_6_1_0)
-	{ after(grammarAccess.getMenuEntryAccess().getHasPerspectiveAssignment_6_1_0()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group_6_1__1
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuEntry__Group_6_1__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group_6_1__1__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuEntryAccess().getPerspectiveAssignment_6_1_1()); }
-	(rule__MenuEntry__PerspectiveAssignment_6_1_1)
-	{ after(grammarAccess.getMenuEntryAccess().getPerspectiveAssignment_6_1_1()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__MenuEntry__Group_6_2__0
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuEntry__Group_6_2__0__Impl
-	rule__MenuEntry__Group_6_2__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group_6_2__0__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuEntryAccess().getHasTableAssignment_6_2_0()); }
-	(rule__MenuEntry__HasTableAssignment_6_2_0)
-	{ after(grammarAccess.getMenuEntryAccess().getHasTableAssignment_6_2_0()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group_6_2__1
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuEntry__Group_6_2__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group_6_2__1__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuEntryAccess().getTableAssignment_6_2_1()); }
-	(rule__MenuEntry__TableAssignment_6_2_1)
-	{ after(grammarAccess.getMenuEntryAccess().getTableAssignment_6_2_1()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__MenuEntry__Group_6_3__0
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuEntry__Group_6_3__0__Impl
-	rule__MenuEntry__Group_6_3__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group_6_3__0__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuEntryAccess().getHasDialogAssignment_6_3_0()); }
-	(rule__MenuEntry__HasDialogAssignment_6_3_0)
-	{ after(grammarAccess.getMenuEntryAccess().getHasDialogAssignment_6_3_0()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group_6_3__1
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuEntry__Group_6_3__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group_6_3__1__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuEntryAccess().getDialogAssignment_6_3_1()); }
-	(rule__MenuEntry__DialogAssignment_6_3_1)
-	{ after(grammarAccess.getMenuEntryAccess().getDialogAssignment_6_3_1()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__MenuEntry__Group_7__0
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuEntry__Group_7__0__Impl
-	rule__MenuEntry__Group_7__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group_7__0__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuEntryAccess().getLeftCurlyBracketKeyword_7_0()); }
-	'{'
-	{ after(grammarAccess.getMenuEntryAccess().getLeftCurlyBracketKeyword_7_0()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group_7__1
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuEntry__Group_7__1__Impl
-	rule__MenuEntry__Group_7__2
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group_7__1__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuEntryAccess().getSubentriesAssignment_7_1()); }
-	(rule__MenuEntry__SubentriesAssignment_7_1)*
-	{ after(grammarAccess.getMenuEntryAccess().getSubentriesAssignment_7_1()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group_7__2
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__MenuEntry__Group_7__2__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__Group_7__2__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getMenuEntryAccess().getRightCurlyBracketKeyword_7_2()); }
-	'}'
-	{ after(grammarAccess.getMenuEntryAccess().getRightCurlyBracketKeyword_7_2()); }
+	{ before(grammarAccess.getMenuEntryAccess().getPerspectiveAssignment_3_1_1()); }
+	(rule__MenuEntry__PerspectiveAssignment_3_1_1)
+	{ after(grammarAccess.getMenuEntryAccess().getPerspectiveAssignment_3_1_1()); }
 )
 ;
 finally {
@@ -17557,15 +17688,15 @@
 	restoreStackSize(stackSize);
 }
 
-rule__MenuModel__PackagesAssignment_1
+rule__MenuModel__MenupackageAssignment_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getMenuModelAccess().getPackagesMenuPackageParserRuleCall_1_0()); }
+		{ before(grammarAccess.getMenuModelAccess().getMenupackageMenuPackageParserRuleCall_1_0()); }
 		ruleMenuPackage
-		{ after(grammarAccess.getMenuModelAccess().getPackagesMenuPackageParserRuleCall_1_0()); }
+		{ after(grammarAccess.getMenuModelAccess().getMenupackageMenuPackageParserRuleCall_1_0()); }
 	)
 ;
 finally {
@@ -17587,420 +17718,465 @@
 	restoreStackSize(stackSize);
 }
 
-rule__MenuPackage__ExpandedImageAssignment_3_2
+rule__MenuPackage__ExpandedImageAssignment_3_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getMenuPackageAccess().getExpandedImageSTRINGTerminalRuleCall_3_2_0()); }
+		{ before(grammarAccess.getMenuPackageAccess().getExpandedImageSTRINGTerminalRuleCall_3_1_0()); }
 		RULE_STRING
-		{ after(grammarAccess.getMenuPackageAccess().getExpandedImageSTRINGTerminalRuleCall_3_2_0()); }
+		{ after(grammarAccess.getMenuPackageAccess().getExpandedImageSTRINGTerminalRuleCall_3_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuPackage__CollapsedImageAssignment_3_4
+rule__MenuPackage__CollapsedImageAssignment_3_3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getMenuPackageAccess().getCollapsedImageSTRINGTerminalRuleCall_3_4_0()); }
+		{ before(grammarAccess.getMenuPackageAccess().getCollapsedImageSTRINGTerminalRuleCall_3_3_0()); }
 		RULE_STRING
-		{ after(grammarAccess.getMenuPackageAccess().getCollapsedImageSTRINGTerminalRuleCall_3_4_0()); }
+		{ after(grammarAccess.getMenuPackageAccess().getCollapsedImageSTRINGTerminalRuleCall_3_3_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuPackage__SubMenuIsAccordionAssignment_3_5
+rule__MenuPackage__HeightAssignment_3_4_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getMenuPackageAccess().getSubMenuIsAccordionAccordionSubmenuKeyword_3_5_0()); }
+		{ before(grammarAccess.getMenuPackageAccess().getHeightSTRINGTerminalRuleCall_3_4_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getMenuPackageAccess().getHeightSTRINGTerminalRuleCall_3_4_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuPackage__WidthAssignment_3_5_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuPackageAccess().getWidthSTRINGTerminalRuleCall_3_5_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getMenuPackageAccess().getWidthSTRINGTerminalRuleCall_3_5_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuPackage__HasDesignerAssignment_3_6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuPackageAccess().getHasDesignerDesignerKeyword_3_6_0()); }
 		(
-			{ before(grammarAccess.getMenuPackageAccess().getSubMenuIsAccordionAccordionSubmenuKeyword_3_5_0()); }
-			'accordionSubmenu'
-			{ after(grammarAccess.getMenuPackageAccess().getSubMenuIsAccordionAccordionSubmenuKeyword_3_5_0()); }
-		)
-		{ after(grammarAccess.getMenuPackageAccess().getSubMenuIsAccordionAccordionSubmenuKeyword_3_5_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuPackage__HeightAssignment_3_6_1
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getMenuPackageAccess().getHeightSTRINGTerminalRuleCall_3_6_1_0()); }
-		RULE_STRING
-		{ after(grammarAccess.getMenuPackageAccess().getHeightSTRINGTerminalRuleCall_3_6_1_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuPackage__WidthAssignment_3_7_1
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getMenuPackageAccess().getWidthSTRINGTerminalRuleCall_3_7_1_0()); }
-		RULE_STRING
-		{ after(grammarAccess.getMenuPackageAccess().getWidthSTRINGTerminalRuleCall_3_7_1_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuPackage__HasDesignerAssignment_3_8
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getMenuPackageAccess().getHasDesignerDesignerKeyword_3_8_0()); }
-		(
-			{ before(grammarAccess.getMenuPackageAccess().getHasDesignerDesignerKeyword_3_8_0()); }
+			{ before(grammarAccess.getMenuPackageAccess().getHasDesignerDesignerKeyword_3_6_0()); }
 			'designer'
-			{ after(grammarAccess.getMenuPackageAccess().getHasDesignerDesignerKeyword_3_8_0()); }
+			{ after(grammarAccess.getMenuPackageAccess().getHasDesignerDesignerKeyword_3_6_0()); }
 		)
-		{ after(grammarAccess.getMenuPackageAccess().getHasDesignerDesignerKeyword_3_8_0()); }
+		{ after(grammarAccess.getMenuPackageAccess().getHasDesignerDesignerKeyword_3_6_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuPackage__EntriesAssignment_3_9
+rule__MenuPackage__CategoriesAssignment_3_7
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getMenuPackageAccess().getEntriesMenuEntryParserRuleCall_3_9_0()); }
-		ruleMenuEntry
-		{ after(grammarAccess.getMenuPackageAccess().getEntriesMenuEntryParserRuleCall_3_9_0()); }
+		{ before(grammarAccess.getMenuPackageAccess().getCategoriesMenuCategoryParserRuleCall_3_7_0()); }
+		ruleMenuCategory
+		{ after(grammarAccess.getMenuPackageAccess().getCategoriesMenuCategoryParserRuleCall_3_7_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__EntryidAssignment_2
+rule__MenuCategory__NameAssignment_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getMenuEntryAccess().getEntryidTRANSLATABLEIDParserRuleCall_2_0()); }
+		{ before(grammarAccess.getMenuCategoryAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); }
 		ruleTRANSLATABLEID
-		{ after(grammarAccess.getMenuEntryAccess().getEntryidTRANSLATABLEIDParserRuleCall_2_0()); }
+		{ after(grammarAccess.getMenuCategoryAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__DescriptionAssignment_3_0
+rule__MenuCategory__HasTableAssignment_2_0_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getMenuEntryAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+		{ before(grammarAccess.getMenuCategoryAccess().getHasTableTableKeyword_2_0_0_0()); }
 		(
-			{ before(grammarAccess.getMenuEntryAccess().getDescriptionDescribedByKeyword_3_0_0()); }
-			'describedBy'
-			{ after(grammarAccess.getMenuEntryAccess().getDescriptionDescribedByKeyword_3_0_0()); }
-		)
-		{ after(grammarAccess.getMenuEntryAccess().getDescriptionDescribedByKeyword_3_0_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__DescriptionValueAssignment_3_1
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getMenuEntryAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); }
-		ruleTRANSLATABLESTRING
-		{ after(grammarAccess.getMenuEntryAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__HasImageAssignment_4_0
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getMenuEntryAccess().getHasImageImageKeyword_4_0_0()); }
-		(
-			{ before(grammarAccess.getMenuEntryAccess().getHasImageImageKeyword_4_0_0()); }
-			'image'
-			{ after(grammarAccess.getMenuEntryAccess().getHasImageImageKeyword_4_0_0()); }
-		)
-		{ after(grammarAccess.getMenuEntryAccess().getHasImageImageKeyword_4_0_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__ImageAssignment_4_1
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getMenuEntryAccess().getImageSTRINGTerminalRuleCall_4_1_0()); }
-		RULE_STRING
-		{ after(grammarAccess.getMenuEntryAccess().getImageSTRINGTerminalRuleCall_4_1_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__ShowBadgeAssignment_5
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getMenuEntryAccess().getShowBadgeShowBadgeKeyword_5_0()); }
-		(
-			{ before(grammarAccess.getMenuEntryAccess().getShowBadgeShowBadgeKeyword_5_0()); }
-			'showBadge'
-			{ after(grammarAccess.getMenuEntryAccess().getShowBadgeShowBadgeKeyword_5_0()); }
-		)
-		{ after(grammarAccess.getMenuEntryAccess().getShowBadgeShowBadgeKeyword_5_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__HasProcessAssignment_6_0_0
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getMenuEntryAccess().getHasProcessProcessKeyword_6_0_0_0()); }
-		(
-			{ before(grammarAccess.getMenuEntryAccess().getHasProcessProcessKeyword_6_0_0_0()); }
-			'process'
-			{ after(grammarAccess.getMenuEntryAccess().getHasProcessProcessKeyword_6_0_0_0()); }
-		)
-		{ after(grammarAccess.getMenuEntryAccess().getHasProcessProcessKeyword_6_0_0_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__ProcessAssignment_6_0_1
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getMenuEntryAccess().getProcessBlipCrossReference_6_0_1_0()); }
-		(
-			{ before(grammarAccess.getMenuEntryAccess().getProcessBlipIDTerminalRuleCall_6_0_1_0_1()); }
-			RULE_ID
-			{ after(grammarAccess.getMenuEntryAccess().getProcessBlipIDTerminalRuleCall_6_0_1_0_1()); }
-		)
-		{ after(grammarAccess.getMenuEntryAccess().getProcessBlipCrossReference_6_0_1_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__HasPerspectiveAssignment_6_1_0
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getMenuEntryAccess().getHasPerspectivePerspectiveKeyword_6_1_0_0()); }
-		(
-			{ before(grammarAccess.getMenuEntryAccess().getHasPerspectivePerspectiveKeyword_6_1_0_0()); }
-			'perspective'
-			{ after(grammarAccess.getMenuEntryAccess().getHasPerspectivePerspectiveKeyword_6_1_0_0()); }
-		)
-		{ after(grammarAccess.getMenuEntryAccess().getHasPerspectivePerspectiveKeyword_6_1_0_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__PerspectiveAssignment_6_1_1
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getMenuEntryAccess().getPerspectivePerspectiveCrossReference_6_1_1_0()); }
-		(
-			{ before(grammarAccess.getMenuEntryAccess().getPerspectivePerspectiveIDTerminalRuleCall_6_1_1_0_1()); }
-			RULE_ID
-			{ after(grammarAccess.getMenuEntryAccess().getPerspectivePerspectiveIDTerminalRuleCall_6_1_1_0_1()); }
-		)
-		{ after(grammarAccess.getMenuEntryAccess().getPerspectivePerspectiveCrossReference_6_1_1_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__MenuEntry__HasTableAssignment_6_2_0
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getMenuEntryAccess().getHasTableTableKeyword_6_2_0_0()); }
-		(
-			{ before(grammarAccess.getMenuEntryAccess().getHasTableTableKeyword_6_2_0_0()); }
+			{ before(grammarAccess.getMenuCategoryAccess().getHasTableTableKeyword_2_0_0_0()); }
 			'table'
-			{ after(grammarAccess.getMenuEntryAccess().getHasTableTableKeyword_6_2_0_0()); }
+			{ after(grammarAccess.getMenuCategoryAccess().getHasTableTableKeyword_2_0_0_0()); }
 		)
-		{ after(grammarAccess.getMenuEntryAccess().getHasTableTableKeyword_6_2_0_0()); }
+		{ after(grammarAccess.getMenuCategoryAccess().getHasTableTableKeyword_2_0_0_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__TableAssignment_6_2_1
+rule__MenuCategory__TableAssignment_2_0_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getMenuEntryAccess().getTableTableCrossReference_6_2_1_0()); }
+		{ before(grammarAccess.getMenuCategoryAccess().getTableTableCrossReference_2_0_1_0()); }
 		(
-			{ before(grammarAccess.getMenuEntryAccess().getTableTableIDTerminalRuleCall_6_2_1_0_1()); }
+			{ before(grammarAccess.getMenuCategoryAccess().getTableTableIDTerminalRuleCall_2_0_1_0_1()); }
 			RULE_ID
-			{ after(grammarAccess.getMenuEntryAccess().getTableTableIDTerminalRuleCall_6_2_1_0_1()); }
+			{ after(grammarAccess.getMenuCategoryAccess().getTableTableIDTerminalRuleCall_2_0_1_0_1()); }
 		)
-		{ after(grammarAccess.getMenuEntryAccess().getTableTableCrossReference_6_2_1_0()); }
+		{ after(grammarAccess.getMenuCategoryAccess().getTableTableCrossReference_2_0_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__HasDialogAssignment_6_3_0
+rule__MenuCategory__HasDialogAssignment_2_1_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getMenuEntryAccess().getHasDialogDialogKeyword_6_3_0_0()); }
+		{ before(grammarAccess.getMenuCategoryAccess().getHasDialogDialogKeyword_2_1_0_0()); }
 		(
-			{ before(grammarAccess.getMenuEntryAccess().getHasDialogDialogKeyword_6_3_0_0()); }
+			{ before(grammarAccess.getMenuCategoryAccess().getHasDialogDialogKeyword_2_1_0_0()); }
 			'dialog'
-			{ after(grammarAccess.getMenuEntryAccess().getHasDialogDialogKeyword_6_3_0_0()); }
+			{ after(grammarAccess.getMenuCategoryAccess().getHasDialogDialogKeyword_2_1_0_0()); }
 		)
-		{ after(grammarAccess.getMenuEntryAccess().getHasDialogDialogKeyword_6_3_0_0()); }
+		{ after(grammarAccess.getMenuCategoryAccess().getHasDialogDialogKeyword_2_1_0_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__DialogAssignment_6_3_1
+rule__MenuCategory__DialogAssignment_2_1_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getMenuEntryAccess().getDialogDialogCrossReference_6_3_1_0()); }
+		{ before(grammarAccess.getMenuCategoryAccess().getDialogDialogCrossReference_2_1_1_0()); }
 		(
-			{ before(grammarAccess.getMenuEntryAccess().getDialogDialogIDTerminalRuleCall_6_3_1_0_1()); }
+			{ before(grammarAccess.getMenuCategoryAccess().getDialogDialogIDTerminalRuleCall_2_1_1_0_1()); }
 			RULE_ID
-			{ after(grammarAccess.getMenuEntryAccess().getDialogDialogIDTerminalRuleCall_6_3_1_0_1()); }
+			{ after(grammarAccess.getMenuCategoryAccess().getDialogDialogIDTerminalRuleCall_2_1_1_0_1()); }
 		)
-		{ after(grammarAccess.getMenuEntryAccess().getDialogDialogCrossReference_6_3_1_0()); }
+		{ after(grammarAccess.getMenuCategoryAccess().getDialogDialogCrossReference_2_1_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__HasUserFilterAssignment_6_4
+rule__MenuCategory__HasUserFilterAssignment_2_2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getMenuEntryAccess().getHasUserFilterUserFilterKeyword_6_4_0()); }
+		{ before(grammarAccess.getMenuCategoryAccess().getHasUserFilterUserFilterKeyword_2_2_0()); }
 		(
-			{ before(grammarAccess.getMenuEntryAccess().getHasUserFilterUserFilterKeyword_6_4_0()); }
+			{ before(grammarAccess.getMenuCategoryAccess().getHasUserFilterUserFilterKeyword_2_2_0()); }
 			'userFilter'
-			{ after(grammarAccess.getMenuEntryAccess().getHasUserFilterUserFilterKeyword_6_4_0()); }
+			{ after(grammarAccess.getMenuCategoryAccess().getHasUserFilterUserFilterKeyword_2_2_0()); }
 		)
-		{ after(grammarAccess.getMenuEntryAccess().getHasUserFilterUserFilterKeyword_6_4_0()); }
+		{ after(grammarAccess.getMenuCategoryAccess().getHasUserFilterUserFilterKeyword_2_2_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__HasKeyBindingAssignment_6_5
+rule__MenuCategory__HasReportPrinterAssignment_2_3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getMenuEntryAccess().getHasKeyBindingKeyBindingKeyword_6_5_0()); }
+		{ before(grammarAccess.getMenuCategoryAccess().getHasReportPrinterReportPrinterKeyword_2_3_0()); }
 		(
-			{ before(grammarAccess.getMenuEntryAccess().getHasKeyBindingKeyBindingKeyword_6_5_0()); }
-			'keyBinding'
-			{ after(grammarAccess.getMenuEntryAccess().getHasKeyBindingKeyBindingKeyword_6_5_0()); }
+			{ before(grammarAccess.getMenuCategoryAccess().getHasReportPrinterReportPrinterKeyword_2_3_0()); }
+			'reportPrinter'
+			{ after(grammarAccess.getMenuCategoryAccess().getHasReportPrinterReportPrinterKeyword_2_3_0()); }
 		)
-		{ after(grammarAccess.getMenuEntryAccess().getHasKeyBindingKeyBindingKeyword_6_5_0()); }
+		{ after(grammarAccess.getMenuCategoryAccess().getHasReportPrinterReportPrinterKeyword_2_3_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__MenuEntry__SubentriesAssignment_7_1
+rule__MenuCategory__HasKeyBindingAssignment_2_4
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getMenuEntryAccess().getSubentriesMenuEntryParserRuleCall_7_1_0()); }
+		{ before(grammarAccess.getMenuCategoryAccess().getHasKeyBindingKeyBindingKeyword_2_4_0()); }
+		(
+			{ before(grammarAccess.getMenuCategoryAccess().getHasKeyBindingKeyBindingKeyword_2_4_0()); }
+			'keyBinding'
+			{ after(grammarAccess.getMenuCategoryAccess().getHasKeyBindingKeyBindingKeyword_2_4_0()); }
+		)
+		{ after(grammarAccess.getMenuCategoryAccess().getHasKeyBindingKeyBindingKeyword_2_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__HasSystemSettingsAssignment_2_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuCategoryAccess().getHasSystemSettingsSystemSettingsKeyword_2_5_0()); }
+		(
+			{ before(grammarAccess.getMenuCategoryAccess().getHasSystemSettingsSystemSettingsKeyword_2_5_0()); }
+			'systemSettings'
+			{ after(grammarAccess.getMenuCategoryAccess().getHasSystemSettingsSystemSettingsKeyword_2_5_0()); }
+		)
+		{ after(grammarAccess.getMenuCategoryAccess().getHasSystemSettingsSystemSettingsKeyword_2_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuCategory__TreesAssignment_2_6_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuCategoryAccess().getTreesMenuTreeParserRuleCall_2_6_1_0()); }
+		ruleMenuTree
+		{ after(grammarAccess.getMenuCategoryAccess().getTreesMenuTreeParserRuleCall_2_6_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__NameAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuTreeAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getMenuTreeAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__HasTooltipAssignment_2_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuTreeAccess().getHasTooltipTooltipKeyword_2_0_0()); }
+		(
+			{ before(grammarAccess.getMenuTreeAccess().getHasTooltipTooltipKeyword_2_0_0()); }
+			'tooltip'
+			{ after(grammarAccess.getMenuTreeAccess().getHasTooltipTooltipKeyword_2_0_0()); }
+		)
+		{ after(grammarAccess.getMenuTreeAccess().getHasTooltipTooltipKeyword_2_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__TooltipAssignment_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuTreeAccess().getTooltipTRANSLATABLESTRINGParserRuleCall_2_1_0()); }
+		ruleTRANSLATABLESTRING
+		{ after(grammarAccess.getMenuTreeAccess().getTooltipTRANSLATABLESTRINGParserRuleCall_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuTree__EntriesAssignment_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuTreeAccess().getEntriesMenuEntryParserRuleCall_4_0()); }
 		ruleMenuEntry
-		{ after(grammarAccess.getMenuEntryAccess().getSubentriesMenuEntryParserRuleCall_7_1_0()); }
+		{ after(grammarAccess.getMenuTreeAccess().getEntriesMenuEntryParserRuleCall_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuEntry__NameAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuEntryAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getMenuEntryAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuEntry__HasIconAssignment_2_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuEntryAccess().getHasIconIconKeyword_2_0_0()); }
+		(
+			{ before(grammarAccess.getMenuEntryAccess().getHasIconIconKeyword_2_0_0()); }
+			'icon'
+			{ after(grammarAccess.getMenuEntryAccess().getHasIconIconKeyword_2_0_0()); }
+		)
+		{ after(grammarAccess.getMenuEntryAccess().getHasIconIconKeyword_2_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuEntry__IconAssignment_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuEntryAccess().getIconSTRINGTerminalRuleCall_2_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getMenuEntryAccess().getIconSTRINGTerminalRuleCall_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuEntry__HasProcessAssignment_3_0_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuEntryAccess().getHasProcessProcessKeyword_3_0_0_0()); }
+		(
+			{ before(grammarAccess.getMenuEntryAccess().getHasProcessProcessKeyword_3_0_0_0()); }
+			'process'
+			{ after(grammarAccess.getMenuEntryAccess().getHasProcessProcessKeyword_3_0_0_0()); }
+		)
+		{ after(grammarAccess.getMenuEntryAccess().getHasProcessProcessKeyword_3_0_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuEntry__ProcessAssignment_3_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuEntryAccess().getProcessBlipCrossReference_3_0_1_0()); }
+		(
+			{ before(grammarAccess.getMenuEntryAccess().getProcessBlipIDTerminalRuleCall_3_0_1_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getMenuEntryAccess().getProcessBlipIDTerminalRuleCall_3_0_1_0_1()); }
+		)
+		{ after(grammarAccess.getMenuEntryAccess().getProcessBlipCrossReference_3_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuEntry__HasPerspectiveAssignment_3_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuEntryAccess().getHasPerspectivePerspectiveKeyword_3_1_0_0()); }
+		(
+			{ before(grammarAccess.getMenuEntryAccess().getHasPerspectivePerspectiveKeyword_3_1_0_0()); }
+			'perspective'
+			{ after(grammarAccess.getMenuEntryAccess().getHasPerspectivePerspectiveKeyword_3_1_0_0()); }
+		)
+		{ after(grammarAccess.getMenuEntryAccess().getHasPerspectivePerspectiveKeyword_3_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MenuEntry__PerspectiveAssignment_3_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMenuEntryAccess().getPerspectivePerspectiveCrossReference_3_1_1_0()); }
+		(
+			{ before(grammarAccess.getMenuEntryAccess().getPerspectivePerspectiveIDTerminalRuleCall_3_1_1_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getMenuEntryAccess().getPerspectivePerspectiveIDTerminalRuleCall_3_1_1_0_1()); }
+		)
+		{ after(grammarAccess.getMenuEntryAccess().getPerspectivePerspectiveCrossReference_3_1_1_0()); }
 	)
 ;
 finally {
diff --git a/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDsl.tokens b/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDsl.tokens
index 3e8cdd6..b4a92cb 100644
--- a/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDsl.tokens
+++ b/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDsl.tokens
@@ -1,20 +1,20 @@
 '!'=40
 '!='=22
 '!=='=24
-'#'=65
+'#'=67
 '%'=39
 '%='=20
 '&&'=15
-'&'=88
-'('=61
-')'=62
+'&'=90
+'('=63
+')'=64
 '*'=36
 '**'=37
 '*='=18
 '+'=34
 '++'=41
 '+='=16
-','=63
+','=65
 '-'=35
 '--'=42
 '-='=17
@@ -24,9 +24,9 @@
 '..<'=29
 '/'=38
 '/='=19
-':'=72
-'::'=101
-';'=59
+':'=74
+'::'=103
+';'=61
 '<'=27
 '<>'=32
 '='=13
@@ -35,62 +35,64 @@
 '=>'=31
 '>'=26
 '>='=25
-'?'=87
-'?.'=102
+'?'=89
+'?.'=104
 '?:'=33
-'@'=60
-'['=66
-']'=64
-'accordionSubmenu'=89
-'as'=68
-'case'=74
-'catch'=86
-'collapsedImage'=54
-'default'=73
-'describedBy'=91
-'designer'=90
-'dialog'=97
-'do'=77
-'else'=70
-'entry'=58
-'expandedImage'=53
+'@'=62
+'['=68
+']'=66
+'as'=70
+'case'=76
+'catch'=88
+'category'=56
+'collapsedImage'=53
+'default'=75
+'designer'=91
+'dialog'=93
+'do'=79
+'else'=72
+'entry'=60
+'expandedImage'=52
 'extends'=45
 'extension'=48
 'false'=50
-'finally'=84
-'for'=75
-'height'=56
-'if'=69
-'image'=92
+'finally'=86
+'for'=77
+'height'=54
+'icon'=99
+'if'=71
 'import'=47
-'instanceof'=67
-'keyBinding'=99
-'new'=78
-'ns'=100
-'null'=79
+'instanceof'=69
+'keyBinding'=96
+'new'=80
+'ns'=102
+'null'=81
 'package'=51
-'perspective'=95
-'process'=94
-'return'=82
-'showBadge'=93
+'perspective'=101
+'process'=100
+'reportPrinter'=95
+'return'=84
 'static'=46
 'super'=49
-'switch'=71
-'synchronized'=85
-'table'=96
-'throw'=81
-'true'=105
-'try'=83
-'typeof'=80
-'userFilter'=98
+'switch'=73
+'synchronized'=87
+'systemSettings'=97
+'table'=92
+'throw'=83
+'tooltip'=98
+'tree'=59
+'true'=107
+'try'=85
+'typeof'=82
+'userFilter'=94
 'val'=44
-'var'=104
-'while'=76
-'width'=57
-'{'=52
-'|'=103
+'var'=106
+'while'=78
+'width'=55
+'{'=57
+'|'=105
 '||'=14
-'}'=55
+'}'=58
 RULE_ANY_OTHER=12
 RULE_DECIMAL=8
 RULE_HEX=6
@@ -106,6 +108,8 @@
 T__103=103
 T__104=104
 T__105=105
+T__106=106
+T__107=107
 T__13=13
 T__14=14
 T__15=15
diff --git a/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDslLexer.java b/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDslLexer.java
index 8e6ff05..672f357 100644
--- a/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDslLexer.java
+++ b/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDslLexer.java
@@ -108,11 +108,13 @@
     public static final int RULE_ANY_OTHER=12;
     public static final int T__88=88;
     public static final int T__89=89;
+    public static final int T__107=107;
     public static final int T__84=84;
     public static final int T__104=104;
     public static final int T__85=85;
     public static final int T__103=103;
     public static final int T__86=86;
+    public static final int T__106=106;
     public static final int T__87=87;
     public static final int T__105=105;
 
@@ -943,10 +945,11 @@
         try {
             int _type = T__52;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:50:7: ( '{' )
-            // InternalMenuDsl.g:50:9: '{'
+            // InternalMenuDsl.g:50:7: ( 'expandedImage' )
+            // InternalMenuDsl.g:50:9: 'expandedImage'
             {
-            match('{'); 
+            match("expandedImage"); 
+
 
             }
 
@@ -963,10 +966,10 @@
         try {
             int _type = T__53;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:51:7: ( 'expandedImage' )
-            // InternalMenuDsl.g:51:9: 'expandedImage'
+            // InternalMenuDsl.g:51:7: ( 'collapsedImage' )
+            // InternalMenuDsl.g:51:9: 'collapsedImage'
             {
-            match("expandedImage"); 
+            match("collapsedImage"); 
 
 
             }
@@ -984,10 +987,10 @@
         try {
             int _type = T__54;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:52:7: ( 'collapsedImage' )
-            // InternalMenuDsl.g:52:9: 'collapsedImage'
+            // InternalMenuDsl.g:52:7: ( 'height' )
+            // InternalMenuDsl.g:52:9: 'height'
             {
-            match("collapsedImage"); 
+            match("height"); 
 
 
             }
@@ -1005,10 +1008,11 @@
         try {
             int _type = T__55;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:53:7: ( '}' )
-            // InternalMenuDsl.g:53:9: '}'
+            // InternalMenuDsl.g:53:7: ( 'width' )
+            // InternalMenuDsl.g:53:9: 'width'
             {
-            match('}'); 
+            match("width"); 
+
 
             }
 
@@ -1025,10 +1029,10 @@
         try {
             int _type = T__56;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:54:7: ( 'height' )
-            // InternalMenuDsl.g:54:9: 'height'
+            // InternalMenuDsl.g:54:7: ( 'category' )
+            // InternalMenuDsl.g:54:9: 'category'
             {
-            match("height"); 
+            match("category"); 
 
 
             }
@@ -1046,11 +1050,10 @@
         try {
             int _type = T__57;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:55:7: ( 'width' )
-            // InternalMenuDsl.g:55:9: 'width'
+            // InternalMenuDsl.g:55:7: ( '{' )
+            // InternalMenuDsl.g:55:9: '{'
             {
-            match("width"); 
-
+            match('{'); 
 
             }
 
@@ -1067,11 +1070,10 @@
         try {
             int _type = T__58;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:56:7: ( 'entry' )
-            // InternalMenuDsl.g:56:9: 'entry'
+            // InternalMenuDsl.g:56:7: ( '}' )
+            // InternalMenuDsl.g:56:9: '}'
             {
-            match("entry"); 
-
+            match('}'); 
 
             }
 
@@ -1088,10 +1090,11 @@
         try {
             int _type = T__59;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:57:7: ( ';' )
-            // InternalMenuDsl.g:57:9: ';'
+            // InternalMenuDsl.g:57:7: ( 'tree' )
+            // InternalMenuDsl.g:57:9: 'tree'
             {
-            match(';'); 
+            match("tree"); 
+
 
             }
 
@@ -1108,10 +1111,11 @@
         try {
             int _type = T__60;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:58:7: ( '@' )
-            // InternalMenuDsl.g:58:9: '@'
+            // InternalMenuDsl.g:58:7: ( 'entry' )
+            // InternalMenuDsl.g:58:9: 'entry'
             {
-            match('@'); 
+            match("entry"); 
+
 
             }
 
@@ -1128,10 +1132,10 @@
         try {
             int _type = T__61;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:59:7: ( '(' )
-            // InternalMenuDsl.g:59:9: '('
+            // InternalMenuDsl.g:59:7: ( ';' )
+            // InternalMenuDsl.g:59:9: ';'
             {
-            match('('); 
+            match(';'); 
 
             }
 
@@ -1148,10 +1152,10 @@
         try {
             int _type = T__62;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:60:7: ( ')' )
-            // InternalMenuDsl.g:60:9: ')'
+            // InternalMenuDsl.g:60:7: ( '@' )
+            // InternalMenuDsl.g:60:9: '@'
             {
-            match(')'); 
+            match('@'); 
 
             }
 
@@ -1168,10 +1172,10 @@
         try {
             int _type = T__63;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:61:7: ( ',' )
-            // InternalMenuDsl.g:61:9: ','
+            // InternalMenuDsl.g:61:7: ( '(' )
+            // InternalMenuDsl.g:61:9: '('
             {
-            match(','); 
+            match('('); 
 
             }
 
@@ -1188,10 +1192,10 @@
         try {
             int _type = T__64;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:62:7: ( ']' )
-            // InternalMenuDsl.g:62:9: ']'
+            // InternalMenuDsl.g:62:7: ( ')' )
+            // InternalMenuDsl.g:62:9: ')'
             {
-            match(']'); 
+            match(')'); 
 
             }
 
@@ -1208,10 +1212,10 @@
         try {
             int _type = T__65;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:63:7: ( '#' )
-            // InternalMenuDsl.g:63:9: '#'
+            // InternalMenuDsl.g:63:7: ( ',' )
+            // InternalMenuDsl.g:63:9: ','
             {
-            match('#'); 
+            match(','); 
 
             }
 
@@ -1228,10 +1232,10 @@
         try {
             int _type = T__66;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:64:7: ( '[' )
-            // InternalMenuDsl.g:64:9: '['
+            // InternalMenuDsl.g:64:7: ( ']' )
+            // InternalMenuDsl.g:64:9: ']'
             {
-            match('['); 
+            match(']'); 
 
             }
 
@@ -1248,11 +1252,10 @@
         try {
             int _type = T__67;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:65:7: ( 'instanceof' )
-            // InternalMenuDsl.g:65:9: 'instanceof'
+            // InternalMenuDsl.g:65:7: ( '#' )
+            // InternalMenuDsl.g:65:9: '#'
             {
-            match("instanceof"); 
-
+            match('#'); 
 
             }
 
@@ -1269,11 +1272,10 @@
         try {
             int _type = T__68;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:66:7: ( 'as' )
-            // InternalMenuDsl.g:66:9: 'as'
+            // InternalMenuDsl.g:66:7: ( '[' )
+            // InternalMenuDsl.g:66:9: '['
             {
-            match("as"); 
-
+            match('['); 
 
             }
 
@@ -1290,10 +1292,10 @@
         try {
             int _type = T__69;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:67:7: ( 'if' )
-            // InternalMenuDsl.g:67:9: 'if'
+            // InternalMenuDsl.g:67:7: ( 'instanceof' )
+            // InternalMenuDsl.g:67:9: 'instanceof'
             {
-            match("if"); 
+            match("instanceof"); 
 
 
             }
@@ -1311,10 +1313,10 @@
         try {
             int _type = T__70;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:68:7: ( 'else' )
-            // InternalMenuDsl.g:68:9: 'else'
+            // InternalMenuDsl.g:68:7: ( 'as' )
+            // InternalMenuDsl.g:68:9: 'as'
             {
-            match("else"); 
+            match("as"); 
 
 
             }
@@ -1332,10 +1334,10 @@
         try {
             int _type = T__71;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:69:7: ( 'switch' )
-            // InternalMenuDsl.g:69:9: 'switch'
+            // InternalMenuDsl.g:69:7: ( 'if' )
+            // InternalMenuDsl.g:69:9: 'if'
             {
-            match("switch"); 
+            match("if"); 
 
 
             }
@@ -1353,10 +1355,11 @@
         try {
             int _type = T__72;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:70:7: ( ':' )
-            // InternalMenuDsl.g:70:9: ':'
+            // InternalMenuDsl.g:70:7: ( 'else' )
+            // InternalMenuDsl.g:70:9: 'else'
             {
-            match(':'); 
+            match("else"); 
+
 
             }
 
@@ -1373,10 +1376,10 @@
         try {
             int _type = T__73;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:71:7: ( 'default' )
-            // InternalMenuDsl.g:71:9: 'default'
+            // InternalMenuDsl.g:71:7: ( 'switch' )
+            // InternalMenuDsl.g:71:9: 'switch'
             {
-            match("default"); 
+            match("switch"); 
 
 
             }
@@ -1394,11 +1397,10 @@
         try {
             int _type = T__74;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:72:7: ( 'case' )
-            // InternalMenuDsl.g:72:9: 'case'
+            // InternalMenuDsl.g:72:7: ( ':' )
+            // InternalMenuDsl.g:72:9: ':'
             {
-            match("case"); 
-
+            match(':'); 
 
             }
 
@@ -1415,10 +1417,10 @@
         try {
             int _type = T__75;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:73:7: ( 'for' )
-            // InternalMenuDsl.g:73:9: 'for'
+            // InternalMenuDsl.g:73:7: ( 'default' )
+            // InternalMenuDsl.g:73:9: 'default'
             {
-            match("for"); 
+            match("default"); 
 
 
             }
@@ -1436,10 +1438,10 @@
         try {
             int _type = T__76;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:74:7: ( 'while' )
-            // InternalMenuDsl.g:74:9: 'while'
+            // InternalMenuDsl.g:74:7: ( 'case' )
+            // InternalMenuDsl.g:74:9: 'case'
             {
-            match("while"); 
+            match("case"); 
 
 
             }
@@ -1457,10 +1459,10 @@
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:75:7: ( 'do' )
-            // InternalMenuDsl.g:75:9: 'do'
+            // InternalMenuDsl.g:75:7: ( 'for' )
+            // InternalMenuDsl.g:75:9: 'for'
             {
-            match("do"); 
+            match("for"); 
 
 
             }
@@ -1478,10 +1480,10 @@
         try {
             int _type = T__78;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:76:7: ( 'new' )
-            // InternalMenuDsl.g:76:9: 'new'
+            // InternalMenuDsl.g:76:7: ( 'while' )
+            // InternalMenuDsl.g:76:9: 'while'
             {
-            match("new"); 
+            match("while"); 
 
 
             }
@@ -1499,10 +1501,10 @@
         try {
             int _type = T__79;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:77:7: ( 'null' )
-            // InternalMenuDsl.g:77:9: 'null'
+            // InternalMenuDsl.g:77:7: ( 'do' )
+            // InternalMenuDsl.g:77:9: 'do'
             {
-            match("null"); 
+            match("do"); 
 
 
             }
@@ -1520,10 +1522,10 @@
         try {
             int _type = T__80;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:78:7: ( 'typeof' )
-            // InternalMenuDsl.g:78:9: 'typeof'
+            // InternalMenuDsl.g:78:7: ( 'new' )
+            // InternalMenuDsl.g:78:9: 'new'
             {
-            match("typeof"); 
+            match("new"); 
 
 
             }
@@ -1541,10 +1543,10 @@
         try {
             int _type = T__81;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:79:7: ( 'throw' )
-            // InternalMenuDsl.g:79:9: 'throw'
+            // InternalMenuDsl.g:79:7: ( 'null' )
+            // InternalMenuDsl.g:79:9: 'null'
             {
-            match("throw"); 
+            match("null"); 
 
 
             }
@@ -1562,10 +1564,10 @@
         try {
             int _type = T__82;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:80:7: ( 'return' )
-            // InternalMenuDsl.g:80:9: 'return'
+            // InternalMenuDsl.g:80:7: ( 'typeof' )
+            // InternalMenuDsl.g:80:9: 'typeof'
             {
-            match("return"); 
+            match("typeof"); 
 
 
             }
@@ -1583,10 +1585,10 @@
         try {
             int _type = T__83;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:81:7: ( 'try' )
-            // InternalMenuDsl.g:81:9: 'try'
+            // InternalMenuDsl.g:81:7: ( 'throw' )
+            // InternalMenuDsl.g:81:9: 'throw'
             {
-            match("try"); 
+            match("throw"); 
 
 
             }
@@ -1604,10 +1606,10 @@
         try {
             int _type = T__84;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:82:7: ( 'finally' )
-            // InternalMenuDsl.g:82:9: 'finally'
+            // InternalMenuDsl.g:82:7: ( 'return' )
+            // InternalMenuDsl.g:82:9: 'return'
             {
-            match("finally"); 
+            match("return"); 
 
 
             }
@@ -1625,10 +1627,10 @@
         try {
             int _type = T__85;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:83:7: ( 'synchronized' )
-            // InternalMenuDsl.g:83:9: 'synchronized'
+            // InternalMenuDsl.g:83:7: ( 'try' )
+            // InternalMenuDsl.g:83:9: 'try'
             {
-            match("synchronized"); 
+            match("try"); 
 
 
             }
@@ -1646,10 +1648,10 @@
         try {
             int _type = T__86;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:84:7: ( 'catch' )
-            // InternalMenuDsl.g:84:9: 'catch'
+            // InternalMenuDsl.g:84:7: ( 'finally' )
+            // InternalMenuDsl.g:84:9: 'finally'
             {
-            match("catch"); 
+            match("finally"); 
 
 
             }
@@ -1667,10 +1669,11 @@
         try {
             int _type = T__87;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:85:7: ( '?' )
-            // InternalMenuDsl.g:85:9: '?'
+            // InternalMenuDsl.g:85:7: ( 'synchronized' )
+            // InternalMenuDsl.g:85:9: 'synchronized'
             {
-            match('?'); 
+            match("synchronized"); 
+
 
             }
 
@@ -1687,10 +1690,11 @@
         try {
             int _type = T__88;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:86:7: ( '&' )
-            // InternalMenuDsl.g:86:9: '&'
+            // InternalMenuDsl.g:86:7: ( 'catch' )
+            // InternalMenuDsl.g:86:9: 'catch'
             {
-            match('&'); 
+            match("catch"); 
+
 
             }
 
@@ -1707,11 +1711,10 @@
         try {
             int _type = T__89;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:87:7: ( 'accordionSubmenu' )
-            // InternalMenuDsl.g:87:9: 'accordionSubmenu'
+            // InternalMenuDsl.g:87:7: ( '?' )
+            // InternalMenuDsl.g:87:9: '?'
             {
-            match("accordionSubmenu"); 
-
+            match('?'); 
 
             }
 
@@ -1728,11 +1731,10 @@
         try {
             int _type = T__90;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:88:7: ( 'designer' )
-            // InternalMenuDsl.g:88:9: 'designer'
+            // InternalMenuDsl.g:88:7: ( '&' )
+            // InternalMenuDsl.g:88:9: '&'
             {
-            match("designer"); 
-
+            match('&'); 
 
             }
 
@@ -1749,10 +1751,10 @@
         try {
             int _type = T__91;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:89:7: ( 'describedBy' )
-            // InternalMenuDsl.g:89:9: 'describedBy'
+            // InternalMenuDsl.g:89:7: ( 'designer' )
+            // InternalMenuDsl.g:89:9: 'designer'
             {
-            match("describedBy"); 
+            match("designer"); 
 
 
             }
@@ -1770,10 +1772,10 @@
         try {
             int _type = T__92;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:90:7: ( 'image' )
-            // InternalMenuDsl.g:90:9: 'image'
+            // InternalMenuDsl.g:90:7: ( 'table' )
+            // InternalMenuDsl.g:90:9: 'table'
             {
-            match("image"); 
+            match("table"); 
 
 
             }
@@ -1791,10 +1793,10 @@
         try {
             int _type = T__93;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:91:7: ( 'showBadge' )
-            // InternalMenuDsl.g:91:9: 'showBadge'
+            // InternalMenuDsl.g:91:7: ( 'dialog' )
+            // InternalMenuDsl.g:91:9: 'dialog'
             {
-            match("showBadge"); 
+            match("dialog"); 
 
 
             }
@@ -1812,10 +1814,10 @@
         try {
             int _type = T__94;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:92:7: ( 'process' )
-            // InternalMenuDsl.g:92:9: 'process'
+            // InternalMenuDsl.g:92:7: ( 'userFilter' )
+            // InternalMenuDsl.g:92:9: 'userFilter'
             {
-            match("process"); 
+            match("userFilter"); 
 
 
             }
@@ -1833,10 +1835,10 @@
         try {
             int _type = T__95;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:93:7: ( 'perspective' )
-            // InternalMenuDsl.g:93:9: 'perspective'
+            // InternalMenuDsl.g:93:7: ( 'reportPrinter' )
+            // InternalMenuDsl.g:93:9: 'reportPrinter'
             {
-            match("perspective"); 
+            match("reportPrinter"); 
 
 
             }
@@ -1854,10 +1856,10 @@
         try {
             int _type = T__96;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:94:7: ( 'table' )
-            // InternalMenuDsl.g:94:9: 'table'
+            // InternalMenuDsl.g:94:7: ( 'keyBinding' )
+            // InternalMenuDsl.g:94:9: 'keyBinding'
             {
-            match("table"); 
+            match("keyBinding"); 
 
 
             }
@@ -1875,10 +1877,10 @@
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:95:7: ( 'dialog' )
-            // InternalMenuDsl.g:95:9: 'dialog'
+            // InternalMenuDsl.g:95:7: ( 'systemSettings' )
+            // InternalMenuDsl.g:95:9: 'systemSettings'
             {
-            match("dialog"); 
+            match("systemSettings"); 
 
 
             }
@@ -1896,10 +1898,10 @@
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:96:7: ( 'userFilter' )
-            // InternalMenuDsl.g:96:9: 'userFilter'
+            // InternalMenuDsl.g:96:7: ( 'tooltip' )
+            // InternalMenuDsl.g:96:9: 'tooltip'
             {
-            match("userFilter"); 
+            match("tooltip"); 
 
 
             }
@@ -1917,10 +1919,10 @@
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:97:7: ( 'keyBinding' )
-            // InternalMenuDsl.g:97:9: 'keyBinding'
+            // InternalMenuDsl.g:97:7: ( 'icon' )
+            // InternalMenuDsl.g:97:9: 'icon'
             {
-            match("keyBinding"); 
+            match("icon"); 
 
 
             }
@@ -1938,10 +1940,10 @@
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:98:8: ( 'ns' )
-            // InternalMenuDsl.g:98:10: 'ns'
+            // InternalMenuDsl.g:98:8: ( 'process' )
+            // InternalMenuDsl.g:98:10: 'process'
             {
-            match("ns"); 
+            match("process"); 
 
 
             }
@@ -1959,10 +1961,10 @@
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:99:8: ( '::' )
-            // InternalMenuDsl.g:99:10: '::'
+            // InternalMenuDsl.g:99:8: ( 'perspective' )
+            // InternalMenuDsl.g:99:10: 'perspective'
             {
-            match("::"); 
+            match("perspective"); 
 
 
             }
@@ -1980,10 +1982,10 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:100:8: ( '?.' )
-            // InternalMenuDsl.g:100:10: '?.'
+            // InternalMenuDsl.g:100:8: ( 'ns' )
+            // InternalMenuDsl.g:100:10: 'ns'
             {
-            match("?."); 
+            match("ns"); 
 
 
             }
@@ -2001,10 +2003,11 @@
         try {
             int _type = T__103;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:101:8: ( '|' )
-            // InternalMenuDsl.g:101:10: '|'
+            // InternalMenuDsl.g:101:8: ( '::' )
+            // InternalMenuDsl.g:101:10: '::'
             {
-            match('|'); 
+            match("::"); 
+
 
             }
 
@@ -2021,10 +2024,10 @@
         try {
             int _type = T__104;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:102:8: ( 'var' )
-            // InternalMenuDsl.g:102:10: 'var'
+            // InternalMenuDsl.g:102:8: ( '?.' )
+            // InternalMenuDsl.g:102:10: '?.'
             {
-            match("var"); 
+            match("?."); 
 
 
             }
@@ -2042,8 +2045,49 @@
         try {
             int _type = T__105;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:103:8: ( 'true' )
-            // InternalMenuDsl.g:103:10: 'true'
+            // InternalMenuDsl.g:103:8: ( '|' )
+            // InternalMenuDsl.g:103:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__105"
+
+    // $ANTLR start "T__106"
+    public final void mT__106() throws RecognitionException {
+        try {
+            int _type = T__106;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalMenuDsl.g:104:8: ( 'var' )
+            // InternalMenuDsl.g:104:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__106"
+
+    // $ANTLR start "T__107"
+    public final void mT__107() throws RecognitionException {
+        try {
+            int _type = T__107;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalMenuDsl.g:105:8: ( 'true' )
+            // InternalMenuDsl.g:105:10: 'true'
             {
             match("true"); 
 
@@ -2056,17 +2100,17 @@
         finally {
         }
     }
-    // $ANTLR end "T__105"
+    // $ANTLR end "T__107"
 
     // $ANTLR start "RULE_HEX"
     public final void mRULE_HEX() throws RecognitionException {
         try {
             int _type = RULE_HEX;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:20468:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // InternalMenuDsl.g:20468:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalMenuDsl.g:20644:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalMenuDsl.g:20644:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // InternalMenuDsl.g:20468:12: ( '0x' | '0X' )
+            // InternalMenuDsl.g:20644:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -2094,7 +2138,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // InternalMenuDsl.g:20468:13: '0x'
+                    // InternalMenuDsl.g:20644:13: '0x'
                     {
                     match("0x"); 
 
@@ -2102,7 +2146,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:20468:18: '0X'
+                    // InternalMenuDsl.g:20644:18: '0X'
                     {
                     match("0X"); 
 
@@ -2112,7 +2156,7 @@
 
             }
 
-            // InternalMenuDsl.g:20468:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalMenuDsl.g:20644:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -2150,7 +2194,7 @@
                 cnt2++;
             } while (true);
 
-            // InternalMenuDsl.g:20468:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalMenuDsl.g:20644:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -2159,10 +2203,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // InternalMenuDsl.g:20468:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalMenuDsl.g:20644:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // InternalMenuDsl.g:20468:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalMenuDsl.g:20644:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -2180,7 +2224,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // InternalMenuDsl.g:20468:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalMenuDsl.g:20644:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -2204,7 +2248,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalMenuDsl.g:20468:84: ( 'l' | 'L' )
+                            // InternalMenuDsl.g:20644:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -2243,11 +2287,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:20470:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // InternalMenuDsl.g:20470:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalMenuDsl.g:20646:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalMenuDsl.g:20646:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // InternalMenuDsl.g:20470:21: ( '0' .. '9' | '_' )*
+            // InternalMenuDsl.g:20646:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -2296,11 +2340,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:20472:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // InternalMenuDsl.g:20472:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalMenuDsl.g:20648:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalMenuDsl.g:20648:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             {
             mRULE_INT(); 
-            // InternalMenuDsl.g:20472:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalMenuDsl.g:20648:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -2309,7 +2353,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // InternalMenuDsl.g:20472:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalMenuDsl.g:20648:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -2320,7 +2364,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // InternalMenuDsl.g:20472:36: ( '+' | '-' )?
+                    // InternalMenuDsl.g:20648:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -2353,7 +2397,7 @@
 
             }
 
-            // InternalMenuDsl.g:20472:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalMenuDsl.g:20648:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -2365,7 +2409,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // InternalMenuDsl.g:20472:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalMenuDsl.g:20648:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -2389,7 +2433,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:20472:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalMenuDsl.g:20648: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();
@@ -2422,10 +2466,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:20474:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // InternalMenuDsl.g:20474:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalMenuDsl.g:20650:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalMenuDsl.g:20650:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // InternalMenuDsl.g:20474:11: ( '^' )?
+            // InternalMenuDsl.g:20650:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -2434,7 +2478,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // InternalMenuDsl.g:20474:11: '^'
+                    // InternalMenuDsl.g:20650:11: '^'
                     {
                     match('^'); 
 
@@ -2452,7 +2496,7 @@
                 recover(mse);
                 throw mse;}
 
-            // InternalMenuDsl.g:20474:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalMenuDsl.g:20650:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -2501,10 +2545,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:20476:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // InternalMenuDsl.g:20476:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalMenuDsl.g:20652:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalMenuDsl.g:20652:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // InternalMenuDsl.g:20476:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalMenuDsl.g:20652:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -2522,10 +2566,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // InternalMenuDsl.g:20476:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalMenuDsl.g:20652:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // InternalMenuDsl.g:20476:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalMenuDsl.g:20652:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -2541,7 +2585,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // InternalMenuDsl.g:20476:21: '\\\\' .
+                    	    // InternalMenuDsl.g:20652:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2549,7 +2593,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalMenuDsl.g:20476:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalMenuDsl.g:20652:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2569,7 +2613,7 @@
                         }
                     } while (true);
 
-                    // InternalMenuDsl.g:20476:44: ( '\"' )?
+                    // InternalMenuDsl.g:20652:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -2578,7 +2622,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // InternalMenuDsl.g:20476:44: '\"'
+                            // InternalMenuDsl.g:20652:44: '\"'
                             {
                             match('\"'); 
 
@@ -2591,10 +2635,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:20476:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalMenuDsl.g:20652:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // InternalMenuDsl.g:20476:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalMenuDsl.g:20652:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -2610,7 +2654,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // InternalMenuDsl.g:20476:55: '\\\\' .
+                    	    // InternalMenuDsl.g:20652:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2618,7 +2662,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalMenuDsl.g:20476:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalMenuDsl.g:20652:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2638,7 +2682,7 @@
                         }
                     } while (true);
 
-                    // InternalMenuDsl.g:20476:79: ( '\\'' )?
+                    // InternalMenuDsl.g:20652:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -2647,7 +2691,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // InternalMenuDsl.g:20476:79: '\\''
+                            // InternalMenuDsl.g:20652:79: '\\''
                             {
                             match('\''); 
 
@@ -2678,12 +2722,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:20478:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // InternalMenuDsl.g:20478:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalMenuDsl.g:20654:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalMenuDsl.g:20654:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // InternalMenuDsl.g:20478:24: ( options {greedy=false; } : . )*
+            // InternalMenuDsl.g:20654:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -2708,7 +2752,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // InternalMenuDsl.g:20478:52: .
+            	    // InternalMenuDsl.g:20654:52: .
             	    {
             	    matchAny(); 
 
@@ -2738,12 +2782,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:20480:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // InternalMenuDsl.g:20480:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalMenuDsl.g:20656:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalMenuDsl.g:20656:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // InternalMenuDsl.g:20480:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalMenuDsl.g:20656:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -2756,7 +2800,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // InternalMenuDsl.g:20480:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalMenuDsl.g:20656: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();
@@ -2776,7 +2820,7 @@
                 }
             } while (true);
 
-            // InternalMenuDsl.g:20480:40: ( ( '\\r' )? '\\n' )?
+            // InternalMenuDsl.g:20656:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -2785,9 +2829,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // InternalMenuDsl.g:20480:41: ( '\\r' )? '\\n'
+                    // InternalMenuDsl.g:20656:41: ( '\\r' )? '\\n'
                     {
-                    // InternalMenuDsl.g:20480:41: ( '\\r' )?
+                    // InternalMenuDsl.g:20656:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -2796,7 +2840,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // InternalMenuDsl.g:20480:41: '\\r'
+                            // InternalMenuDsl.g:20656:41: '\\r'
                             {
                             match('\r'); 
 
@@ -2828,10 +2872,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:20482:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // InternalMenuDsl.g:20482:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalMenuDsl.g:20658:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalMenuDsl.g:20658:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // InternalMenuDsl.g:20482:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalMenuDsl.g:20658:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -2885,8 +2929,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalMenuDsl.g:20484:16: ( . )
-            // InternalMenuDsl.g:20484:18: .
+            // InternalMenuDsl.g:20660:16: ( . )
+            // InternalMenuDsl.g:20660:18: .
             {
             matchAny(); 
 
@@ -2901,8 +2945,8 @@
     // $ANTLR end "RULE_ANY_OTHER"
 
     public void mTokens() throws RecognitionException {
-        // InternalMenuDsl.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt21=102;
+        // InternalMenuDsl.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=104;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
@@ -3557,63 +3601,77 @@
                 }
                 break;
             case 94 :
-                // InternalMenuDsl.g:1:574: RULE_HEX
+                // InternalMenuDsl.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // InternalMenuDsl.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // InternalMenuDsl.g:1:588: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 95 :
-                // InternalMenuDsl.g:1:583: RULE_INT
+            case 97 :
+                // InternalMenuDsl.g:1:597: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 96 :
-                // InternalMenuDsl.g:1:592: RULE_DECIMAL
+            case 98 :
+                // InternalMenuDsl.g:1:606: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 97 :
-                // InternalMenuDsl.g:1:605: RULE_ID
+            case 99 :
+                // InternalMenuDsl.g:1:619: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 98 :
-                // InternalMenuDsl.g:1:613: RULE_STRING
+            case 100 :
+                // InternalMenuDsl.g:1:627: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 99 :
-                // InternalMenuDsl.g:1:625: RULE_ML_COMMENT
+            case 101 :
+                // InternalMenuDsl.g:1:639: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 100 :
-                // InternalMenuDsl.g:1:641: RULE_SL_COMMENT
+            case 102 :
+                // InternalMenuDsl.g:1:655: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 101 :
-                // InternalMenuDsl.g:1:657: RULE_WS
+            case 103 :
+                // InternalMenuDsl.g:1:671: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 102 :
-                // InternalMenuDsl.g:1:665: RULE_ANY_OTHER
+            case 104 :
+                // InternalMenuDsl.g:1:679: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -3627,19 +3685,19 @@
 
     protected DFA21 dfa21 = new DFA21(this);
     static final String DFA21_eotS =
-        "\1\uffff\1\63\1\65\1\67\1\72\1\76\1\101\1\105\1\107\1\111\1\113\1\115\1\117\1\122\6\124\1\uffff\1\124\1\uffff\2\124\10\uffff\1\124\1\170\6\124\2\u0088\1\60\5\uffff\1\u008d\26\uffff\1\u008f\5\uffff\1\u0091\4\uffff\1\124\1\uffff\12\124\1\u00a0\6\124\1\uffff\2\124\1\uffff\3\124\10\uffff\1\u00ad\1\124\2\uffff\1\124\1\u00b1\3\124\1\u00b5\7\124\1\uffff\1\u0088\12\uffff\1\u00be\1\u00bf\14\124\1\uffff\1\124\1\u00cd\12\124\1\uffff\3\124\1\uffff\1\124\1\u00dd\1\124\1\uffff\2\124\1\u00e1\5\124\2\uffff\3\124\1\u00ea\11\124\1\uffff\5\124\1\u00f9\11\124\1\uffff\1\u0103\2\124\1\uffff\1\u0106\6\124\1\u010e\1\uffff\1\124\1\u0110\4\124\1\u0115\1\124\1\u0117\5\124\1\uffff\1\u011d\1\124\1\u011f\1\u0120\5\124\1\uffff\1\124\1\u0127\1\uffff\1\u0128\6\124\1\uffff\1\u012f\1\uffff\1\u0130\2\124\1\u0133\1\uffff\1\124\1\uffff\5\124\1\uffff\1\u013a\2\uffff\4\124\1\u013f\1\u0140\2\uffff\1\u0141\2\124\1\u0144\2\124\2\uffff\2\124\1\uffff\1\124\1\u014a\1\u014b\1\u014c\2\124\1\uffff\1\124\1\u0150\2\124\3\uffff\2\124\1\uffff\5\124\3\uffff\3\124\1\uffff\1\u015d\3\124\1\u0161\2\124\1\u0164\4\124\1\uffff\3\124\1\uffff\2\124\1\uffff\1\u016e\4\124\1\u0173\1\u0174\2\124\1\uffff\1\u0177\2\124\1\u017a\2\uffff\1\124\1\u017c\1\uffff\2\124\1\uffff\1\u017f\1\uffff\2\124\1\uffff\1\u0182\1\124\1\uffff\1\124\1\u0185\1\uffff";
+        "\1\uffff\1\63\1\65\1\67\1\72\1\76\1\101\1\105\1\107\1\111\1\113\1\115\1\117\1\122\11\124\2\uffff\1\124\10\uffff\1\124\1\174\5\124\2\u0088\1\60\5\uffff\1\u008d\26\uffff\1\u008f\5\uffff\1\u0091\4\uffff\1\124\1\uffff\11\124\1\u009f\14\124\2\uffff\5\124\10\uffff\1\u00b4\2\uffff\1\124\1\u00b7\3\124\1\u00bb\3\124\1\uffff\1\u0088\12\uffff\1\u00c0\1\u00c1\13\124\1\uffff\2\124\1\u00cf\13\124\1\u00dc\5\124\1\uffff\2\124\1\uffff\1\124\1\u00e5\1\124\1\uffff\4\124\2\uffff\3\124\1\u00ee\7\124\1\u00f6\1\124\1\uffff\7\124\1\u00ff\3\124\1\u0103\1\uffff\1\u0104\7\124\1\uffff\1\u010c\6\124\1\u0114\1\uffff\1\124\1\u0116\5\124\1\uffff\1\u011c\6\124\1\u0123\1\uffff\1\124\1\u0125\1\u0126\2\uffff\1\124\1\u0128\1\u0129\4\124\1\uffff\7\124\1\uffff\1\u0135\1\uffff\1\u0136\2\124\1\u0139\1\124\1\uffff\6\124\1\uffff\1\u0141\2\uffff\1\u0142\2\uffff\3\124\1\u0146\1\u0147\3\124\1\u014b\2\124\2\uffff\2\124\1\uffff\1\124\1\u0151\1\u0152\1\u0153\3\124\2\uffff\1\u0157\1\u0158\1\124\2\uffff\3\124\1\uffff\5\124\3\uffff\2\124\1\u0164\2\uffff\1\u0165\3\124\1\u0169\6\124\2\uffff\3\124\1\uffff\3\124\1\u0176\3\124\1\u017a\1\u017b\3\124\1\uffff\1\u017f\2\124\2\uffff\1\124\1\u0183\1\124\1\uffff\2\124\1\u0187\1\uffff\2\124\1\u018a\1\uffff\1\u018b\1\u018c\3\uffff";
     static final String DFA21_eofS =
-        "\u0186\uffff";
+        "\u018d\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\150\1\146\2\141\1\uffff\1\141\1\uffff\1\145\1\150\10\uffff\1\143\1\72\2\145\1\141\1\145\1\163\1\145\2\60\1\44\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\154\1\uffff\1\160\1\164\1\163\1\141\1\160\1\151\1\156\1\157\1\141\1\163\1\44\1\154\1\162\1\156\1\143\1\157\1\162\1\uffff\1\154\1\163\1\uffff\1\151\1\144\1\151\10\uffff\1\44\1\143\2\uffff\1\146\1\44\1\141\1\167\1\154\1\44\1\160\1\162\1\165\1\142\1\164\1\145\1\171\1\uffff\1\60\12\uffff\2\44\1\145\1\141\1\162\1\145\1\164\1\145\1\164\1\143\1\167\1\157\1\147\1\164\1\uffff\1\163\1\44\1\141\1\153\1\143\1\163\1\154\1\145\1\143\1\147\1\164\1\154\1\uffff\1\157\1\141\1\143\1\uffff\1\154\1\44\1\154\1\uffff\1\145\1\157\1\44\1\145\1\154\1\165\1\162\1\102\2\uffff\2\156\1\171\1\44\1\151\1\162\1\143\1\150\1\102\1\162\1\145\1\141\1\145\1\uffff\1\154\1\141\1\145\1\160\1\141\1\44\3\150\1\145\1\162\1\165\1\147\1\162\1\157\1\uffff\1\44\1\157\1\167\1\uffff\1\44\1\145\1\162\1\106\1\151\2\144\1\44\1\uffff\1\143\1\44\1\150\1\162\1\141\1\164\1\44\1\156\1\44\1\154\1\147\1\163\1\145\1\160\1\uffff\1\44\1\164\2\44\1\144\1\154\1\156\1\151\1\147\1\uffff\1\146\1\44\1\uffff\1\44\1\156\1\151\1\156\1\163\1\151\1\145\1\uffff\1\44\1\uffff\1\44\1\157\1\144\1\44\1\uffff\1\143\1\uffff\1\171\1\145\1\163\1\143\1\163\1\uffff\1\44\2\uffff\1\151\1\164\1\145\1\142\2\44\2\uffff\1\44\1\154\1\144\1\44\1\157\1\144\2\uffff\1\156\1\147\1\uffff\1\145\3\44\1\164\1\145\1\uffff\1\157\1\44\1\162\1\145\3\uffff\1\164\1\151\1\uffff\1\156\1\111\1\151\1\145\1\157\3\uffff\1\151\1\144\1\156\1\uffff\1\44\1\144\1\145\1\156\1\44\1\155\1\172\1\44\1\146\1\166\1\111\1\123\1\uffff\1\102\1\162\1\147\1\uffff\1\141\1\145\1\uffff\1\44\1\145\1\155\1\165\1\171\2\44\1\147\1\144\1\uffff\1\44\1\141\1\142\1\44\2\uffff\1\145\1\44\1\uffff\1\147\1\155\1\uffff\1\44\1\uffff\2\145\1\uffff\1\44\1\156\1\uffff\1\165\1\44\1\uffff";
+        "\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\164\1\143\3\141\1\145\1\150\2\uffff\1\141\10\uffff\1\163\1\72\3\145\1\163\1\145\2\60\1\44\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\154\1\uffff\1\160\1\164\1\163\1\141\1\160\1\151\1\156\1\160\1\163\1\44\1\157\1\154\1\162\1\156\1\143\1\157\1\162\1\154\1\163\1\151\1\144\1\151\2\uffff\1\145\1\160\1\162\1\142\1\157\10\uffff\1\44\2\uffff\1\146\1\44\1\141\1\167\1\154\1\44\1\160\1\145\1\171\1\uffff\1\60\12\uffff\2\44\1\145\1\141\1\162\1\145\1\164\1\145\1\164\1\143\1\164\1\157\1\164\1\uffff\1\156\1\163\1\44\1\141\1\153\1\143\1\163\1\154\1\143\1\145\1\147\1\164\1\154\1\145\1\44\2\145\1\157\2\154\1\uffff\1\141\1\151\1\uffff\1\154\1\44\1\154\1\uffff\1\165\1\157\1\162\1\102\2\uffff\2\156\1\171\1\44\1\151\1\162\1\143\1\150\1\145\1\162\1\141\1\44\1\145\1\uffff\1\154\1\141\1\145\1\160\1\141\1\147\1\150\1\44\2\150\1\145\1\44\1\uffff\1\44\1\157\1\167\1\145\1\164\1\165\1\147\1\157\1\uffff\1\44\2\162\1\106\1\151\2\144\1\44\1\uffff\1\143\1\44\1\150\1\162\1\155\1\164\1\156\1\uffff\1\44\1\154\1\147\1\163\1\145\1\160\1\157\1\44\1\uffff\1\164\2\44\2\uffff\1\146\2\44\1\151\1\154\1\156\1\147\1\uffff\1\156\1\164\1\151\1\156\1\163\1\151\1\145\1\uffff\1\44\1\uffff\1\44\1\157\1\123\1\44\1\143\1\uffff\1\171\1\145\1\163\1\143\1\163\1\162\1\uffff\1\44\2\uffff\1\44\2\uffff\1\160\1\164\1\145\2\44\1\120\1\154\1\144\1\44\1\157\1\144\2\uffff\1\156\1\145\1\uffff\1\145\3\44\1\164\1\145\1\171\2\uffff\2\44\1\162\2\uffff\1\162\1\164\1\151\1\uffff\1\156\1\111\1\151\1\164\1\157\3\uffff\1\151\1\144\1\44\2\uffff\1\44\1\151\1\145\1\156\1\44\1\155\1\172\1\164\1\146\1\166\1\111\2\uffff\1\156\1\162\1\147\1\uffff\1\141\1\145\1\151\1\44\1\145\1\155\1\164\2\44\1\147\1\144\1\156\1\uffff\1\44\1\141\1\145\2\uffff\1\145\1\44\1\147\1\uffff\1\147\1\162\1\44\1\uffff\1\163\1\145\1\44\1\uffff\2\44\3\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\141\1\170\1\171\1\156\1\157\1\162\1\uffff\1\157\1\uffff\1\145\1\151\10\uffff\1\163\1\72\1\157\1\165\1\171\1\145\1\163\1\145\1\170\1\154\1\172\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\162\1\uffff\2\164\1\163\1\141\1\160\1\151\1\156\1\157\1\160\1\163\1\172\1\154\1\162\1\156\1\143\1\157\1\162\1\uffff\1\154\1\164\1\uffff\1\151\1\144\1\151\10\uffff\1\172\1\143\2\uffff\1\163\1\172\1\141\1\167\1\154\1\172\1\160\1\162\1\171\1\142\1\164\1\145\1\171\1\uffff\1\154\12\uffff\2\172\1\145\1\141\1\162\1\145\1\164\1\145\1\164\1\143\1\167\1\157\1\147\1\164\1\uffff\1\163\1\172\1\141\1\153\1\143\1\163\1\154\1\145\1\143\1\147\1\164\1\154\1\uffff\1\157\1\141\1\151\1\uffff\1\154\1\172\1\154\1\uffff\1\145\1\157\1\172\1\145\1\154\1\165\1\162\1\102\2\uffff\2\156\1\171\1\172\1\151\1\162\1\143\1\150\1\102\1\162\1\145\1\141\1\145\1\uffff\1\154\1\141\1\145\1\160\1\141\1\172\3\150\1\145\1\162\1\165\1\147\1\162\1\157\1\uffff\1\172\1\157\1\167\1\uffff\1\172\1\145\1\162\1\106\1\151\1\163\1\144\1\172\1\uffff\1\143\1\172\1\150\1\162\1\141\1\164\1\172\1\156\1\172\1\154\1\147\1\163\1\145\1\160\1\uffff\1\172\1\164\2\172\1\144\1\154\1\156\1\151\1\147\1\uffff\1\146\1\172\1\uffff\1\172\1\156\1\151\1\156\1\163\1\151\1\145\1\uffff\1\172\1\uffff\1\172\1\157\1\144\1\172\1\uffff\1\143\1\uffff\1\171\1\145\1\163\1\143\1\163\1\uffff\1\172\2\uffff\1\151\1\164\1\145\1\142\2\172\2\uffff\1\172\1\154\1\144\1\172\1\157\1\144\2\uffff\1\156\1\147\1\uffff\1\145\3\172\1\164\1\145\1\uffff\1\157\1\172\1\162\1\145\3\uffff\1\164\1\151\1\uffff\1\156\1\111\1\151\1\145\1\157\3\uffff\1\151\1\144\1\156\1\uffff\1\172\1\144\1\145\1\156\1\172\1\155\2\172\1\146\1\166\1\111\1\123\1\uffff\1\102\1\162\1\147\1\uffff\1\141\1\145\1\uffff\1\172\1\145\1\155\1\165\1\171\2\172\1\147\1\144\1\uffff\1\172\1\141\1\142\1\172\2\uffff\1\145\1\172\1\uffff\1\147\1\155\1\uffff\1\172\1\uffff\2\145\1\uffff\1\172\1\156\1\uffff\1\165\1\172\1\uffff";
+        "\1\uffff\1\76\1\174\1\46\1\75\1\76\5\75\1\76\1\56\1\72\1\141\1\170\1\171\1\156\1\157\1\162\1\157\1\145\1\151\2\uffff\1\171\10\uffff\1\163\1\72\1\157\1\165\1\145\1\163\1\145\1\170\1\154\1\172\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\162\1\uffff\2\164\1\163\1\141\1\160\1\151\1\163\1\160\1\163\1\172\1\157\1\154\1\162\1\156\1\143\1\157\1\162\1\154\1\164\1\151\1\144\1\151\2\uffff\1\171\1\160\1\162\1\142\1\157\10\uffff\1\172\2\uffff\1\163\1\172\1\141\1\167\1\154\1\172\1\164\1\145\1\171\1\uffff\1\154\12\uffff\2\172\1\145\1\141\1\162\1\145\1\164\1\145\1\164\1\143\1\164\1\157\1\164\1\uffff\1\156\1\163\1\172\1\141\1\153\1\143\1\163\1\154\2\145\1\147\1\164\1\154\1\145\1\172\2\145\1\157\2\154\1\uffff\1\141\1\151\1\uffff\1\154\1\172\1\154\1\uffff\1\165\1\157\1\162\1\102\2\uffff\2\156\1\171\1\172\1\151\1\162\1\143\1\150\1\145\1\162\1\141\1\172\1\145\1\uffff\1\154\1\141\1\145\1\160\1\141\1\147\1\150\1\172\2\150\1\145\1\172\1\uffff\1\172\1\157\1\167\1\145\1\164\1\165\1\147\1\157\1\uffff\1\172\2\162\1\106\1\151\1\163\1\144\1\172\1\uffff\1\143\1\172\1\150\1\162\1\155\1\164\1\156\1\uffff\1\172\1\154\1\147\1\163\1\145\1\160\1\157\1\172\1\uffff\1\164\2\172\2\uffff\1\146\2\172\1\151\1\154\1\156\1\147\1\uffff\1\156\1\164\1\151\1\156\1\163\1\151\1\145\1\uffff\1\172\1\uffff\1\172\1\157\1\123\1\172\1\143\1\uffff\1\171\1\145\1\163\1\143\1\163\1\162\1\uffff\1\172\2\uffff\1\172\2\uffff\1\160\1\164\1\145\2\172\1\120\1\154\1\144\1\172\1\157\1\144\2\uffff\1\156\1\145\1\uffff\1\145\3\172\1\164\1\145\1\171\2\uffff\2\172\1\162\2\uffff\1\162\1\164\1\151\1\uffff\1\156\1\111\1\151\1\164\1\157\3\uffff\1\151\1\144\1\172\2\uffff\1\172\1\151\1\145\1\156\1\172\1\155\1\172\1\164\1\146\1\166\1\111\2\uffff\1\156\1\162\1\147\1\uffff\1\141\1\145\1\151\1\172\1\145\1\155\1\164\2\172\1\147\1\144\1\156\1\uffff\1\172\1\141\1\145\2\uffff\1\145\1\172\1\147\1\uffff\1\147\1\162\1\172\1\uffff\1\163\1\145\1\172\1\uffff\2\172\3\uffff";
     static final String DFA21_acceptS =
-        "\24\uffff\1\50\1\uffff\1\53\2\uffff\1\57\1\60\1\61\1\62\1\63\1\64\1\65\1\66\13\uffff\1\141\2\142\1\145\1\146\1\uffff\1\23\1\1\1\2\1\133\1\3\1\114\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6\1\31\1\30\1\7\1\143\1\144\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\132\1\113\1\uffff\1\141\21\uffff\1\50\2\uffff\1\53\3\uffff\1\57\1\60\1\61\1\62\1\63\1\64\1\65\1\66\2\uffff\1\131\1\74\15\uffff\1\136\1\uffff\1\137\1\140\1\142\1\145\1\13\1\11\1\14\1\12\1\21\1\22\16\uffff\1\71\14\uffff\1\70\3\uffff\1\101\3\uffff\1\130\10\uffff\1\40\1\134\15\uffff\1\77\17\uffff\1\102\3\uffff\1\107\10\uffff\1\72\16\uffff\1\76\11\uffff\1\103\2\uffff\1\135\7\uffff\1\56\1\uffff\1\45\4\uffff\1\120\1\uffff\1\46\5\uffff\1\112\1\uffff\1\55\1\100\6\uffff\1\105\1\124\6\uffff\1\42\1\73\2\uffff\1\43\6\uffff\1\54\4\uffff\1\125\1\104\1\106\2\uffff\1\41\5\uffff\1\110\1\47\1\122\3\uffff\1\75\14\uffff\1\116\3\uffff\1\44\2\uffff\1\121\11\uffff\1\67\4\uffff\1\126\1\127\2\uffff\1\123\2\uffff\1\117\1\uffff\1\111\2\uffff\1\51\2\uffff\1\52\2\uffff\1\115";
+        "\27\uffff\1\55\1\56\1\uffff\1\61\1\62\1\63\1\64\1\65\1\66\1\67\1\70\12\uffff\1\143\2\144\1\147\1\150\1\uffff\1\23\1\1\1\2\1\135\1\3\1\116\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6\1\31\1\30\1\7\1\145\1\146\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\134\1\115\1\uffff\1\143\26\uffff\1\55\1\56\5\uffff\1\61\1\62\1\63\1\64\1\65\1\66\1\67\1\70\1\uffff\1\133\1\76\11\uffff\1\140\1\uffff\1\141\1\142\1\144\1\147\1\13\1\11\1\14\1\12\1\21\1\22\15\uffff\1\73\24\uffff\1\72\2\uffff\1\103\3\uffff\1\132\4\uffff\1\40\1\136\15\uffff\1\101\14\uffff\1\111\10\uffff\1\104\10\uffff\1\74\7\uffff\1\127\10\uffff\1\100\3\uffff\1\57\1\137\7\uffff\1\105\7\uffff\1\60\1\uffff\1\45\5\uffff\1\46\6\uffff\1\114\1\uffff\1\53\1\102\1\uffff\1\107\1\120\13\uffff\1\42\1\75\2\uffff\1\43\7\uffff\1\52\1\106\3\uffff\1\121\1\110\3\uffff\1\41\5\uffff\1\112\1\47\1\130\3\uffff\1\126\1\77\13\uffff\1\54\1\117\3\uffff\1\44\14\uffff\1\71\3\uffff\1\122\1\124\3\uffff\1\131\3\uffff\1\113\3\uffff\1\50\2\uffff\1\123\1\125\1\51";
     static final String DFA21_specialS =
-        "\1\0\u0185\uffff}>";
+        "\1\0\u018c\uffff}>";
     static final String[] DFA21_transitionS = {
-            "\11\60\2\57\2\60\1\57\22\60\1\57\1\11\1\55\1\37\1\54\1\10\1\3\1\56\1\33\1\34\1\6\1\4\1\35\1\5\1\14\1\7\1\51\11\52\1\42\1\31\1\13\1\1\1\12\1\15\1\32\32\54\1\40\1\60\1\36\1\53\1\54\1\60\1\41\1\54\1\25\1\43\1\17\1\22\1\54\1\27\1\21\1\54\1\50\2\54\1\44\1\54\1\23\1\54\1\46\1\20\1\45\1\47\1\16\1\30\3\54\1\24\1\2\1\26\uff82\60",
+            "\11\60\2\57\2\60\1\57\22\60\1\57\1\11\1\55\1\40\1\54\1\10\1\3\1\56\1\34\1\35\1\6\1\4\1\36\1\5\1\14\1\7\1\51\11\52\1\43\1\32\1\13\1\1\1\12\1\15\1\33\32\54\1\41\1\60\1\37\1\53\1\54\1\60\1\42\1\54\1\24\1\44\1\17\1\22\1\54\1\25\1\21\1\54\1\50\2\54\1\45\1\54\1\23\1\54\1\46\1\20\1\31\1\47\1\16\1\26\3\54\1\27\1\2\1\30\uff82\60",
             "\1\61\1\62",
             "\1\64",
             "\1\66",
@@ -3655,15 +3713,16 @@
             "\1\121\13\uffff\1\120",
             "\1\123",
             "\1\127\1\uffff\1\126\11\uffff\1\125",
-            "\1\134\13\uffff\1\130\1\131\1\uffff\1\132\1\uffff\1\133",
-            "\1\137\6\uffff\1\135\1\136",
+            "\1\130\1\131\1\uffff\1\132\1\uffff\1\133",
+            "\1\137\2\uffff\1\136\6\uffff\1\134\1\135",
             "\1\140\7\uffff\1\142\5\uffff\1\141",
             "\1\143\3\uffff\1\145\14\uffff\1\144",
+            "\1\147\15\uffff\1\146",
+            "\1\150",
+            "\1\152\1\151",
             "",
-            "\1\150\15\uffff\1\147",
             "",
-            "\1\152",
-            "\1\154\1\153",
+            "\1\160\6\uffff\1\157\6\uffff\1\161\2\uffff\1\155\6\uffff\1\156",
             "",
             "",
             "",
@@ -3672,11 +3731,10 @@
             "",
             "",
             "",
-            "\1\166\17\uffff\1\165",
-            "\1\167",
-            "\1\171\3\uffff\1\173\5\uffff\1\172",
-            "\1\174\15\uffff\1\176\1\uffff\1\175",
-            "\1\u0082\6\uffff\1\u0080\11\uffff\1\u0081\6\uffff\1\177",
+            "\1\172",
+            "\1\173",
+            "\1\175\3\uffff\1\177\5\uffff\1\176",
+            "\1\u0080\15\uffff\1\u0082\1\uffff\1\u0081",
             "\1\u0083",
             "\1\u0084",
             "\1\u0085",
@@ -3730,49 +3788,49 @@
             "\1\u0098",
             "\1\u0099",
             "\1\u009a",
-            "\1\u009b",
-            "\1\u009c",
-            "\1\u009e\16\uffff\1\u009d",
-            "\1\u009f",
+            "\1\u009b\4\uffff\1\u009c",
+            "\1\u009d",
+            "\1\u009e",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u00a0",
             "\1\u00a1",
             "\1\u00a2",
             "\1\u00a3",
             "\1\u00a4",
             "\1\u00a5",
             "\1\u00a6",
-            "",
             "\1\u00a7",
-            "\1\u00a8\1\u00a9",
-            "",
+            "\1\u00a9\1\u00a8",
             "\1\u00aa",
             "\1\u00ab",
             "\1\u00ac",
             "",
             "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\u00ae",
-            "",
-            "",
-            "\1\u00af\14\uffff\1\u00b0",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u00ad\17\uffff\1\u00af\3\uffff\1\u00ae",
+            "\1\u00b0",
+            "\1\u00b1",
             "\1\u00b2",
             "\1\u00b3",
-            "\1\u00b4",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\u00b6",
-            "\1\u00b7",
-            "\1\u00b9\3\uffff\1\u00b8",
+            "",
+            "",
+            "\1\u00b5\14\uffff\1\u00b6",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u00b8",
+            "\1\u00b9",
             "\1\u00ba",
-            "\1\u00bb",
-            "\1\u00bc",
-            "\1\u00bd",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u00bd\3\uffff\1\u00bc",
+            "\1\u00be",
+            "\1\u00bf",
             "",
             "\12\u0087\10\uffff\1\u0089\1\uffff\3\u0089\5\uffff\1\u0089\22\uffff\1\u0087\2\uffff\1\u0089\1\uffff\3\u0089\5\uffff\1\u0089",
             "",
@@ -3787,8 +3845,6 @@
             "",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\u00c0",
-            "\1\u00c1",
             "\1\u00c2",
             "\1\u00c3",
             "\1\u00c4",
@@ -3799,235 +3855,244 @@
             "\1\u00c9",
             "\1\u00ca",
             "\1\u00cb",
-            "",
             "\1\u00cc",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "",
+            "\1\u00cd",
             "\1\u00ce",
-            "\1\u00cf",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "\1\u00d0",
             "\1\u00d1",
             "\1\u00d2",
             "\1\u00d3",
             "\1\u00d4",
-            "\1\u00d5",
-            "\1\u00d6",
+            "\1\u00d6\1\uffff\1\u00d5",
             "\1\u00d7",
-            "",
             "\1\u00d8",
             "\1\u00d9",
-            "\1\u00db\5\uffff\1\u00da",
-            "",
-            "\1\u00dc",
+            "\1\u00da",
+            "\1\u00db",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u00dd",
             "\1\u00de",
-            "",
             "\1\u00df",
             "\1\u00e0",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u00e1",
+            "",
             "\1\u00e2",
             "\1\u00e3",
-            "\1\u00e4",
-            "\1\u00e5",
-            "\1\u00e6",
             "",
+            "\1\u00e4",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u00e6",
             "",
             "\1\u00e7",
             "\1\u00e8",
             "\1\u00e9",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u00ea",
+            "",
+            "",
             "\1\u00eb",
             "\1\u00ec",
             "\1\u00ed",
-            "\1\u00ee",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "\1\u00ef",
             "\1\u00f0",
             "\1\u00f1",
             "\1\u00f2",
             "\1\u00f3",
-            "",
             "\1\u00f4",
             "\1\u00f5",
-            "\1\u00f6",
-            "\1\u00f7",
-            "\1\u00f8",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u00f7",
+            "",
+            "\1\u00f8",
+            "\1\u00f9",
             "\1\u00fa",
             "\1\u00fb",
             "\1\u00fc",
             "\1\u00fd",
             "\1\u00fe",
-            "\1\u00ff",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "\1\u0100",
             "\1\u0101",
             "\1\u0102",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\u0104",
             "\1\u0105",
-            "",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u0106",
             "\1\u0107",
             "\1\u0108",
             "\1\u0109",
             "\1\u010a",
-            "\1\u010b\16\uffff\1\u010c",
+            "\1\u010b",
+            "",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
+            "\1\u0110",
+            "\1\u0111\16\uffff\1\u0112",
+            "\1\u0113",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "",
-            "\1\u010f",
+            "\1\u0115",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\u0111",
-            "\1\u0112",
-            "\1\u0113",
-            "\1\u0114",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\u0116",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u0117",
             "\1\u0118",
             "\1\u0119",
             "\1\u011a",
             "\1\u011b",
-            "\1\u011c",
             "",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u011d",
             "\1\u011e",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u011f",
+            "\1\u0120",
             "\1\u0121",
             "\1\u0122",
-            "\1\u0123",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "",
             "\1\u0124",
-            "\1\u0125",
-            "",
-            "\1\u0126",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "",
+            "",
+            "\1\u0127",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\u0129",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "\1\u012a",
             "\1\u012b",
             "\1\u012c",
             "\1\u012d",
+            "",
             "\1\u012e",
-            "",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u012f",
+            "\1\u0130",
             "\1\u0131",
             "\1\u0132",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "",
+            "\1\u0133",
             "\1\u0134",
             "",
-            "\1\u0135",
-            "\1\u0136",
-            "\1\u0137",
-            "\1\u0138",
-            "\1\u0139",
-            "",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u0137",
+            "\1\u0138",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u013a",
             "",
             "\1\u013b",
             "\1\u013c",
             "\1\u013d",
             "\1\u013e",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u013f",
+            "\1\u0140",
+            "",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "",
             "",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\u0142",
+            "",
+            "",
             "\1\u0143",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u0144",
             "\1\u0145",
-            "\1\u0146",
-            "",
-            "",
-            "\1\u0147",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "\1\u0148",
-            "",
             "\1\u0149",
+            "\1\u014a",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u014c",
             "\1\u014d",
+            "",
+            "",
             "\1\u014e",
-            "",
             "\1\u014f",
+            "",
+            "\1\u0150",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\u0151",
-            "\1\u0152",
-            "",
-            "",
-            "",
-            "\1\u0153",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "\1\u0154",
-            "",
             "\1\u0155",
             "\1\u0156",
-            "\1\u0157",
-            "\1\u0158",
-            "\1\u0159",
             "",
             "",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u0159",
+            "",
             "",
             "\1\u015a",
             "\1\u015b",
             "\1\u015c",
             "",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u015d",
             "\1\u015e",
             "\1\u015f",
             "\1\u0160",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u0161",
+            "",
+            "",
+            "",
             "\1\u0162",
             "\1\u0163",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\u0165",
+            "",
+            "",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "\1\u0166",
             "\1\u0167",
             "\1\u0168",
-            "",
-            "\1\u0169",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
             "\1\u016a",
             "\1\u016b",
-            "",
             "\1\u016c",
             "\1\u016d",
-            "",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u016e",
             "\1\u016f",
+            "",
+            "",
             "\1\u0170",
             "\1\u0171",
             "\1\u0172",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\u0175",
-            "\1\u0176",
             "",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\u0175",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u0177",
             "\1\u0178",
             "\1\u0179",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "",
-            "",
-            "\1\u017b",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "",
+            "\1\u017c",
             "\1\u017d",
             "\1\u017e",
             "",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "",
             "\1\u0180",
             "\1\u0181",
             "",
-            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
-            "\1\u0183",
             "",
-            "\1\u0184",
+            "\1\u0182",
             "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\u0184",
+            "",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "\1\124\13\uffff\12\124\7\uffff\32\124\4\uffff\1\124\1\uffff\32\124",
+            "",
+            "",
             ""
     };
 
@@ -4061,7 +4126,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 | 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 | 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;
@@ -4109,41 +4174,41 @@
 
                         else if ( (LA21_0=='p') ) {s = 19;}
 
-                        else if ( (LA21_0=='{') ) {s = 20;}
+                        else if ( (LA21_0=='c') ) {s = 20;}
 
-                        else if ( (LA21_0=='c') ) {s = 21;}
+                        else if ( (LA21_0=='h') ) {s = 21;}
 
-                        else if ( (LA21_0=='}') ) {s = 22;}
+                        else if ( (LA21_0=='w') ) {s = 22;}
 
-                        else if ( (LA21_0=='h') ) {s = 23;}
+                        else if ( (LA21_0=='{') ) {s = 23;}
 
-                        else if ( (LA21_0=='w') ) {s = 24;}
+                        else if ( (LA21_0=='}') ) {s = 24;}
 
-                        else if ( (LA21_0==';') ) {s = 25;}
+                        else if ( (LA21_0=='t') ) {s = 25;}
 
-                        else if ( (LA21_0=='@') ) {s = 26;}
+                        else if ( (LA21_0==';') ) {s = 26;}
 
-                        else if ( (LA21_0=='(') ) {s = 27;}
+                        else if ( (LA21_0=='@') ) {s = 27;}
 
-                        else if ( (LA21_0==')') ) {s = 28;}
+                        else if ( (LA21_0=='(') ) {s = 28;}
 
-                        else if ( (LA21_0==',') ) {s = 29;}
+                        else if ( (LA21_0==')') ) {s = 29;}
 
-                        else if ( (LA21_0==']') ) {s = 30;}
+                        else if ( (LA21_0==',') ) {s = 30;}
 
-                        else if ( (LA21_0=='#') ) {s = 31;}
+                        else if ( (LA21_0==']') ) {s = 31;}
 
-                        else if ( (LA21_0=='[') ) {s = 32;}
+                        else if ( (LA21_0=='#') ) {s = 32;}
 
-                        else if ( (LA21_0=='a') ) {s = 33;}
+                        else if ( (LA21_0=='[') ) {s = 33;}
 
-                        else if ( (LA21_0==':') ) {s = 34;}
+                        else if ( (LA21_0=='a') ) {s = 34;}
 
-                        else if ( (LA21_0=='d') ) {s = 35;}
+                        else if ( (LA21_0==':') ) {s = 35;}
 
-                        else if ( (LA21_0=='n') ) {s = 36;}
+                        else if ( (LA21_0=='d') ) {s = 36;}
 
-                        else if ( (LA21_0=='t') ) {s = 37;}
+                        else if ( (LA21_0=='n') ) {s = 37;}
 
                         else if ( (LA21_0=='r') ) {s = 38;}
 
diff --git a/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDslParser.java b/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDslParser.java
index 4cfe6c6..682aa18 100644
--- a/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDslParser.java
+++ b/org.eclipse.osbp.xtext.menu.ide/src-gen/org/eclipse/osbp/xtext/menu/ide/contentassist/antlr/internal/InternalMenuDslParser.java
@@ -23,7 +23,7 @@
 @SuppressWarnings("all")
 public class InternalMenuDslParser extends AbstractInternalContentAssistParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'package'", "'{'", "'expandedImage'", "'collapsedImage'", "'}'", "'height'", "'width'", "'entry'", "';'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'accordionSubmenu'", "'designer'", "'describedBy'", "'image'", "'showBadge'", "'process'", "'perspective'", "'table'", "'dialog'", "'userFilter'", "'keyBinding'", "'ns'", "'::'", "'?.'", "'|'", "'var'", "'true'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'package'", "'expandedImage'", "'collapsedImage'", "'height'", "'width'", "'category'", "'{'", "'}'", "'tree'", "'entry'", "';'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'designer'", "'table'", "'dialog'", "'userFilter'", "'reportPrinter'", "'keyBinding'", "'systemSettings'", "'tooltip'", "'icon'", "'process'", "'perspective'", "'ns'", "'::'", "'?.'", "'|'", "'var'", "'true'"
     };
     public static final int RULE_HEX=6;
     public static final int T__50=50;
@@ -121,11 +121,13 @@
     public static final int RULE_ANY_OTHER=12;
     public static final int T__88=88;
     public static final int T__89=89;
+    public static final int T__107=107;
     public static final int T__84=84;
     public static final int T__104=104;
     public static final int T__85=85;
     public static final int T__103=103;
     public static final int T__86=86;
+    public static final int T__106=106;
     public static final int T__87=87;
     public static final int T__105=105;
 
@@ -334,12 +336,182 @@
     // $ANTLR end "ruleMenuPackage"
 
 
+    // $ANTLR start "entryRuleMenuCategory"
+    // InternalMenuDsl.g:104:1: entryRuleMenuCategory : ruleMenuCategory EOF ;
+    public final void entryRuleMenuCategory() throws RecognitionException {
+        try {
+            // InternalMenuDsl.g:105:1: ( ruleMenuCategory EOF )
+            // InternalMenuDsl.g:106:1: ruleMenuCategory EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getMenuCategoryRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleMenuCategory();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getMenuCategoryRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleMenuCategory"
+
+
+    // $ANTLR start "ruleMenuCategory"
+    // InternalMenuDsl.g:113:1: ruleMenuCategory : ( ( rule__MenuCategory__Group__0 ) ) ;
+    public final void ruleMenuCategory() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalMenuDsl.g:117:2: ( ( ( rule__MenuCategory__Group__0 ) ) )
+            // InternalMenuDsl.g:118:2: ( ( rule__MenuCategory__Group__0 ) )
+            {
+            // InternalMenuDsl.g:118:2: ( ( rule__MenuCategory__Group__0 ) )
+            // InternalMenuDsl.g:119:3: ( rule__MenuCategory__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getMenuCategoryAccess().getGroup()); 
+            }
+            // InternalMenuDsl.g:120:3: ( rule__MenuCategory__Group__0 )
+            // InternalMenuDsl.g:120:4: rule__MenuCategory__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__MenuCategory__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getMenuCategoryAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleMenuCategory"
+
+
+    // $ANTLR start "entryRuleMenuTree"
+    // InternalMenuDsl.g:129:1: entryRuleMenuTree : ruleMenuTree EOF ;
+    public final void entryRuleMenuTree() throws RecognitionException {
+        try {
+            // InternalMenuDsl.g:130:1: ( ruleMenuTree EOF )
+            // InternalMenuDsl.g:131:1: ruleMenuTree EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getMenuTreeRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleMenuTree();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getMenuTreeRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleMenuTree"
+
+
+    // $ANTLR start "ruleMenuTree"
+    // InternalMenuDsl.g:138:1: ruleMenuTree : ( ( rule__MenuTree__Group__0 ) ) ;
+    public final void ruleMenuTree() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalMenuDsl.g:142:2: ( ( ( rule__MenuTree__Group__0 ) ) )
+            // InternalMenuDsl.g:143:2: ( ( rule__MenuTree__Group__0 ) )
+            {
+            // InternalMenuDsl.g:143:2: ( ( rule__MenuTree__Group__0 ) )
+            // InternalMenuDsl.g:144:3: ( rule__MenuTree__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getMenuTreeAccess().getGroup()); 
+            }
+            // InternalMenuDsl.g:145:3: ( rule__MenuTree__Group__0 )
+            // InternalMenuDsl.g:145:4: rule__MenuTree__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__MenuTree__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getMenuTreeAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleMenuTree"
+
+
     // $ANTLR start "entryRuleMenuEntry"
-    // InternalMenuDsl.g:104:1: entryRuleMenuEntry : ruleMenuEntry EOF ;
+    // InternalMenuDsl.g:154:1: entryRuleMenuEntry : ruleMenuEntry EOF ;
     public final void entryRuleMenuEntry() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:105:1: ( ruleMenuEntry EOF )
-            // InternalMenuDsl.g:106:1: ruleMenuEntry EOF
+            // InternalMenuDsl.g:155:1: ( ruleMenuEntry EOF )
+            // InternalMenuDsl.g:156:1: ruleMenuEntry EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMenuEntryRule()); 
@@ -369,23 +541,23 @@
 
 
     // $ANTLR start "ruleMenuEntry"
-    // InternalMenuDsl.g:113:1: ruleMenuEntry : ( ( rule__MenuEntry__Group__0 ) ) ;
+    // InternalMenuDsl.g:163:1: ruleMenuEntry : ( ( rule__MenuEntry__Group__0 ) ) ;
     public final void ruleMenuEntry() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:117:2: ( ( ( rule__MenuEntry__Group__0 ) ) )
-            // InternalMenuDsl.g:118:2: ( ( rule__MenuEntry__Group__0 ) )
+            // InternalMenuDsl.g:167:2: ( ( ( rule__MenuEntry__Group__0 ) ) )
+            // InternalMenuDsl.g:168:2: ( ( rule__MenuEntry__Group__0 ) )
             {
-            // InternalMenuDsl.g:118:2: ( ( rule__MenuEntry__Group__0 ) )
-            // InternalMenuDsl.g:119:3: ( rule__MenuEntry__Group__0 )
+            // InternalMenuDsl.g:168:2: ( ( rule__MenuEntry__Group__0 ) )
+            // InternalMenuDsl.g:169:3: ( rule__MenuEntry__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMenuEntryAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:120:3: ( rule__MenuEntry__Group__0 )
-            // InternalMenuDsl.g:120:4: rule__MenuEntry__Group__0
+            // InternalMenuDsl.g:170:3: ( rule__MenuEntry__Group__0 )
+            // InternalMenuDsl.g:170:4: rule__MenuEntry__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__MenuEntry__Group__0();
@@ -420,11 +592,11 @@
 
 
     // $ANTLR start "entryRuleTRANSLATABLESTRING"
-    // InternalMenuDsl.g:129:1: entryRuleTRANSLATABLESTRING : ruleTRANSLATABLESTRING EOF ;
+    // InternalMenuDsl.g:179:1: entryRuleTRANSLATABLESTRING : ruleTRANSLATABLESTRING EOF ;
     public final void entryRuleTRANSLATABLESTRING() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:130:1: ( ruleTRANSLATABLESTRING EOF )
-            // InternalMenuDsl.g:131:1: ruleTRANSLATABLESTRING EOF
+            // InternalMenuDsl.g:180:1: ( ruleTRANSLATABLESTRING EOF )
+            // InternalMenuDsl.g:181:1: ruleTRANSLATABLESTRING EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLESTRINGRule()); 
@@ -454,17 +626,17 @@
 
 
     // $ANTLR start "ruleTRANSLATABLESTRING"
-    // InternalMenuDsl.g:138:1: ruleTRANSLATABLESTRING : ( RULE_STRING ) ;
+    // InternalMenuDsl.g:188:1: ruleTRANSLATABLESTRING : ( RULE_STRING ) ;
     public final void ruleTRANSLATABLESTRING() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:142:2: ( ( RULE_STRING ) )
-            // InternalMenuDsl.g:143:2: ( RULE_STRING )
+            // InternalMenuDsl.g:192:2: ( ( RULE_STRING ) )
+            // InternalMenuDsl.g:193:2: ( RULE_STRING )
             {
-            // InternalMenuDsl.g:143:2: ( RULE_STRING )
-            // InternalMenuDsl.g:144:3: RULE_STRING
+            // InternalMenuDsl.g:193:2: ( RULE_STRING )
+            // InternalMenuDsl.g:194:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
@@ -495,11 +667,11 @@
 
 
     // $ANTLR start "entryRuleTRANSLATABLEID"
-    // InternalMenuDsl.g:154:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
+    // InternalMenuDsl.g:204:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
     public final void entryRuleTRANSLATABLEID() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:155:1: ( ruleTRANSLATABLEID EOF )
-            // InternalMenuDsl.g:156:1: ruleTRANSLATABLEID EOF
+            // InternalMenuDsl.g:205:1: ( ruleTRANSLATABLEID EOF )
+            // InternalMenuDsl.g:206:1: ruleTRANSLATABLEID EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLEIDRule()); 
@@ -529,17 +701,17 @@
 
 
     // $ANTLR start "ruleTRANSLATABLEID"
-    // InternalMenuDsl.g:163:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
+    // InternalMenuDsl.g:213:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
     public final void ruleTRANSLATABLEID() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:167:2: ( ( RULE_ID ) )
-            // InternalMenuDsl.g:168:2: ( RULE_ID )
+            // InternalMenuDsl.g:217:2: ( ( RULE_ID ) )
+            // InternalMenuDsl.g:218:2: ( RULE_ID )
             {
-            // InternalMenuDsl.g:168:2: ( RULE_ID )
-            // InternalMenuDsl.g:169:3: RULE_ID
+            // InternalMenuDsl.g:218:2: ( RULE_ID )
+            // InternalMenuDsl.g:219:3: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
@@ -570,11 +742,11 @@
 
 
     // $ANTLR start "entryRuleXImportDeclaration"
-    // InternalMenuDsl.g:179:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
+    // InternalMenuDsl.g:229:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
     public final void entryRuleXImportDeclaration() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:180:1: ( ruleXImportDeclaration EOF )
-            // InternalMenuDsl.g:181:1: ruleXImportDeclaration EOF
+            // InternalMenuDsl.g:230:1: ( ruleXImportDeclaration EOF )
+            // InternalMenuDsl.g:231:1: ruleXImportDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationRule()); 
@@ -604,23 +776,23 @@
 
 
     // $ANTLR start "ruleXImportDeclaration"
-    // InternalMenuDsl.g:188:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
+    // InternalMenuDsl.g:238:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
     public final void ruleXImportDeclaration() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:192:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
-            // InternalMenuDsl.g:193:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            // InternalMenuDsl.g:242:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
+            // InternalMenuDsl.g:243:2: ( ( rule__XImportDeclaration__Group__0 ) )
             {
-            // InternalMenuDsl.g:193:2: ( ( rule__XImportDeclaration__Group__0 ) )
-            // InternalMenuDsl.g:194:3: ( rule__XImportDeclaration__Group__0 )
+            // InternalMenuDsl.g:243:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            // InternalMenuDsl.g:244:3: ( rule__XImportDeclaration__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:195:3: ( rule__XImportDeclaration__Group__0 )
-            // InternalMenuDsl.g:195:4: rule__XImportDeclaration__Group__0
+            // InternalMenuDsl.g:245:3: ( rule__XImportDeclaration__Group__0 )
+            // InternalMenuDsl.g:245:4: rule__XImportDeclaration__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group__0();
@@ -655,11 +827,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotation"
-    // InternalMenuDsl.g:204:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
+    // InternalMenuDsl.g:254:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
     public final void entryRuleXAnnotation() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:205:1: ( ruleXAnnotation EOF )
-            // InternalMenuDsl.g:206:1: ruleXAnnotation EOF
+            // InternalMenuDsl.g:255:1: ( ruleXAnnotation EOF )
+            // InternalMenuDsl.g:256:1: ruleXAnnotation EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationRule()); 
@@ -689,23 +861,23 @@
 
 
     // $ANTLR start "ruleXAnnotation"
-    // InternalMenuDsl.g:213:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
+    // InternalMenuDsl.g:263:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
     public final void ruleXAnnotation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:217:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
-            // InternalMenuDsl.g:218:2: ( ( rule__XAnnotation__Group__0 ) )
+            // InternalMenuDsl.g:267:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
+            // InternalMenuDsl.g:268:2: ( ( rule__XAnnotation__Group__0 ) )
             {
-            // InternalMenuDsl.g:218:2: ( ( rule__XAnnotation__Group__0 ) )
-            // InternalMenuDsl.g:219:3: ( rule__XAnnotation__Group__0 )
+            // InternalMenuDsl.g:268:2: ( ( rule__XAnnotation__Group__0 ) )
+            // InternalMenuDsl.g:269:3: ( rule__XAnnotation__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:220:3: ( rule__XAnnotation__Group__0 )
-            // InternalMenuDsl.g:220:4: rule__XAnnotation__Group__0
+            // InternalMenuDsl.g:270:3: ( rule__XAnnotation__Group__0 )
+            // InternalMenuDsl.g:270:4: rule__XAnnotation__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group__0();
@@ -740,11 +912,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValuePair"
-    // InternalMenuDsl.g:229:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
+    // InternalMenuDsl.g:279:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
     public final void entryRuleXAnnotationElementValuePair() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:230:1: ( ruleXAnnotationElementValuePair EOF )
-            // InternalMenuDsl.g:231:1: ruleXAnnotationElementValuePair EOF
+            // InternalMenuDsl.g:280:1: ( ruleXAnnotationElementValuePair EOF )
+            // InternalMenuDsl.g:281:1: ruleXAnnotationElementValuePair EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairRule()); 
@@ -774,23 +946,23 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValuePair"
-    // InternalMenuDsl.g:238:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
+    // InternalMenuDsl.g:288:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
     public final void ruleXAnnotationElementValuePair() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:242:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
-            // InternalMenuDsl.g:243:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // InternalMenuDsl.g:292:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
+            // InternalMenuDsl.g:293:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
             {
-            // InternalMenuDsl.g:243:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
-            // InternalMenuDsl.g:244:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            // InternalMenuDsl.g:293:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // InternalMenuDsl.g:294:3: ( rule__XAnnotationElementValuePair__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:245:3: ( rule__XAnnotationElementValuePair__Group__0 )
-            // InternalMenuDsl.g:245:4: rule__XAnnotationElementValuePair__Group__0
+            // InternalMenuDsl.g:295:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            // InternalMenuDsl.g:295:4: rule__XAnnotationElementValuePair__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group__0();
@@ -825,11 +997,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
-    // InternalMenuDsl.g:254:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
+    // InternalMenuDsl.g:304:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
     public final void entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:255:1: ( ruleXAnnotationElementValueOrCommaList EOF )
-            // InternalMenuDsl.g:256:1: ruleXAnnotationElementValueOrCommaList EOF
+            // InternalMenuDsl.g:305:1: ( ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalMenuDsl.g:306:1: ruleXAnnotationElementValueOrCommaList EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
@@ -859,23 +1031,23 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
-    // InternalMenuDsl.g:263:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
+    // InternalMenuDsl.g:313:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
     public final void ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:267:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
-            // InternalMenuDsl.g:268:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // InternalMenuDsl.g:317:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
+            // InternalMenuDsl.g:318:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
             {
-            // InternalMenuDsl.g:268:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
-            // InternalMenuDsl.g:269:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // InternalMenuDsl.g:318:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // InternalMenuDsl.g:319:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:270:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
-            // InternalMenuDsl.g:270:4: rule__XAnnotationElementValueOrCommaList__Alternatives
+            // InternalMenuDsl.g:320:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // InternalMenuDsl.g:320:4: rule__XAnnotationElementValueOrCommaList__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Alternatives();
@@ -910,11 +1082,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValue"
-    // InternalMenuDsl.g:279:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
+    // InternalMenuDsl.g:329:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
     public final void entryRuleXAnnotationElementValue() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:280:1: ( ruleXAnnotationElementValue EOF )
-            // InternalMenuDsl.g:281:1: ruleXAnnotationElementValue EOF
+            // InternalMenuDsl.g:330:1: ( ruleXAnnotationElementValue EOF )
+            // InternalMenuDsl.g:331:1: ruleXAnnotationElementValue EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueRule()); 
@@ -944,23 +1116,23 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValue"
-    // InternalMenuDsl.g:288:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
+    // InternalMenuDsl.g:338:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
     public final void ruleXAnnotationElementValue() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:292:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
-            // InternalMenuDsl.g:293:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // InternalMenuDsl.g:342:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
+            // InternalMenuDsl.g:343:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
             {
-            // InternalMenuDsl.g:293:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
-            // InternalMenuDsl.g:294:3: ( rule__XAnnotationElementValue__Alternatives )
+            // InternalMenuDsl.g:343:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // InternalMenuDsl.g:344:3: ( rule__XAnnotationElementValue__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:295:3: ( rule__XAnnotationElementValue__Alternatives )
-            // InternalMenuDsl.g:295:4: rule__XAnnotationElementValue__Alternatives
+            // InternalMenuDsl.g:345:3: ( rule__XAnnotationElementValue__Alternatives )
+            // InternalMenuDsl.g:345:4: rule__XAnnotationElementValue__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Alternatives();
@@ -995,11 +1167,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationOrExpression"
-    // InternalMenuDsl.g:304:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
+    // InternalMenuDsl.g:354:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
     public final void entryRuleXAnnotationOrExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:305:1: ( ruleXAnnotationOrExpression EOF )
-            // InternalMenuDsl.g:306:1: ruleXAnnotationOrExpression EOF
+            // InternalMenuDsl.g:355:1: ( ruleXAnnotationOrExpression EOF )
+            // InternalMenuDsl.g:356:1: ruleXAnnotationOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationOrExpressionRule()); 
@@ -1029,23 +1201,23 @@
 
 
     // $ANTLR start "ruleXAnnotationOrExpression"
-    // InternalMenuDsl.g:313:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
+    // InternalMenuDsl.g:363:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
     public final void ruleXAnnotationOrExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:317:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
-            // InternalMenuDsl.g:318:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // InternalMenuDsl.g:367:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
+            // InternalMenuDsl.g:368:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
             {
-            // InternalMenuDsl.g:318:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
-            // InternalMenuDsl.g:319:3: ( rule__XAnnotationOrExpression__Alternatives )
+            // InternalMenuDsl.g:368:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // InternalMenuDsl.g:369:3: ( rule__XAnnotationOrExpression__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:320:3: ( rule__XAnnotationOrExpression__Alternatives )
-            // InternalMenuDsl.g:320:4: rule__XAnnotationOrExpression__Alternatives
+            // InternalMenuDsl.g:370:3: ( rule__XAnnotationOrExpression__Alternatives )
+            // InternalMenuDsl.g:370:4: rule__XAnnotationOrExpression__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationOrExpression__Alternatives();
@@ -1080,11 +1252,11 @@
 
 
     // $ANTLR start "entryRuleXExpression"
-    // InternalMenuDsl.g:329:1: entryRuleXExpression : ruleXExpression EOF ;
+    // InternalMenuDsl.g:379:1: entryRuleXExpression : ruleXExpression EOF ;
     public final void entryRuleXExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:330:1: ( ruleXExpression EOF )
-            // InternalMenuDsl.g:331:1: ruleXExpression EOF
+            // InternalMenuDsl.g:380:1: ( ruleXExpression EOF )
+            // InternalMenuDsl.g:381:1: ruleXExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionRule()); 
@@ -1114,17 +1286,17 @@
 
 
     // $ANTLR start "ruleXExpression"
-    // InternalMenuDsl.g:338:1: ruleXExpression : ( ruleXAssignment ) ;
+    // InternalMenuDsl.g:388:1: ruleXExpression : ( ruleXAssignment ) ;
     public final void ruleXExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:342:2: ( ( ruleXAssignment ) )
-            // InternalMenuDsl.g:343:2: ( ruleXAssignment )
+            // InternalMenuDsl.g:392:2: ( ( ruleXAssignment ) )
+            // InternalMenuDsl.g:393:2: ( ruleXAssignment )
             {
-            // InternalMenuDsl.g:343:2: ( ruleXAssignment )
-            // InternalMenuDsl.g:344:3: ruleXAssignment
+            // InternalMenuDsl.g:393:2: ( ruleXAssignment )
+            // InternalMenuDsl.g:394:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
@@ -1159,11 +1331,11 @@
 
 
     // $ANTLR start "entryRuleXAssignment"
-    // InternalMenuDsl.g:354:1: entryRuleXAssignment : ruleXAssignment EOF ;
+    // InternalMenuDsl.g:404:1: entryRuleXAssignment : ruleXAssignment EOF ;
     public final void entryRuleXAssignment() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:355:1: ( ruleXAssignment EOF )
-            // InternalMenuDsl.g:356:1: ruleXAssignment EOF
+            // InternalMenuDsl.g:405:1: ( ruleXAssignment EOF )
+            // InternalMenuDsl.g:406:1: ruleXAssignment EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentRule()); 
@@ -1193,23 +1365,23 @@
 
 
     // $ANTLR start "ruleXAssignment"
-    // InternalMenuDsl.g:363:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
+    // InternalMenuDsl.g:413:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
     public final void ruleXAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:367:2: ( ( ( rule__XAssignment__Alternatives ) ) )
-            // InternalMenuDsl.g:368:2: ( ( rule__XAssignment__Alternatives ) )
+            // InternalMenuDsl.g:417:2: ( ( ( rule__XAssignment__Alternatives ) ) )
+            // InternalMenuDsl.g:418:2: ( ( rule__XAssignment__Alternatives ) )
             {
-            // InternalMenuDsl.g:368:2: ( ( rule__XAssignment__Alternatives ) )
-            // InternalMenuDsl.g:369:3: ( rule__XAssignment__Alternatives )
+            // InternalMenuDsl.g:418:2: ( ( rule__XAssignment__Alternatives ) )
+            // InternalMenuDsl.g:419:3: ( rule__XAssignment__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:370:3: ( rule__XAssignment__Alternatives )
-            // InternalMenuDsl.g:370:4: rule__XAssignment__Alternatives
+            // InternalMenuDsl.g:420:3: ( rule__XAssignment__Alternatives )
+            // InternalMenuDsl.g:420:4: rule__XAssignment__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Alternatives();
@@ -1244,11 +1416,11 @@
 
 
     // $ANTLR start "entryRuleOpSingleAssign"
-    // InternalMenuDsl.g:379:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
+    // InternalMenuDsl.g:429:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
     public final void entryRuleOpSingleAssign() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:380:1: ( ruleOpSingleAssign EOF )
-            // InternalMenuDsl.g:381:1: ruleOpSingleAssign EOF
+            // InternalMenuDsl.g:430:1: ( ruleOpSingleAssign EOF )
+            // InternalMenuDsl.g:431:1: ruleOpSingleAssign EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpSingleAssignRule()); 
@@ -1278,17 +1450,17 @@
 
 
     // $ANTLR start "ruleOpSingleAssign"
-    // InternalMenuDsl.g:388:1: ruleOpSingleAssign : ( '=' ) ;
+    // InternalMenuDsl.g:438:1: ruleOpSingleAssign : ( '=' ) ;
     public final void ruleOpSingleAssign() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:392:2: ( ( '=' ) )
-            // InternalMenuDsl.g:393:2: ( '=' )
+            // InternalMenuDsl.g:442:2: ( ( '=' ) )
+            // InternalMenuDsl.g:443:2: ( '=' )
             {
-            // InternalMenuDsl.g:393:2: ( '=' )
-            // InternalMenuDsl.g:394:3: '='
+            // InternalMenuDsl.g:443:2: ( '=' )
+            // InternalMenuDsl.g:444:3: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
@@ -1319,11 +1491,11 @@
 
 
     // $ANTLR start "entryRuleOpMultiAssign"
-    // InternalMenuDsl.g:404:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
+    // InternalMenuDsl.g:454:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
     public final void entryRuleOpMultiAssign() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:405:1: ( ruleOpMultiAssign EOF )
-            // InternalMenuDsl.g:406:1: ruleOpMultiAssign EOF
+            // InternalMenuDsl.g:455:1: ( ruleOpMultiAssign EOF )
+            // InternalMenuDsl.g:456:1: ruleOpMultiAssign EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignRule()); 
@@ -1353,23 +1525,23 @@
 
 
     // $ANTLR start "ruleOpMultiAssign"
-    // InternalMenuDsl.g:413:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
+    // InternalMenuDsl.g:463:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
     public final void ruleOpMultiAssign() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:417:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
-            // InternalMenuDsl.g:418:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            // InternalMenuDsl.g:467:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
+            // InternalMenuDsl.g:468:2: ( ( rule__OpMultiAssign__Alternatives ) )
             {
-            // InternalMenuDsl.g:418:2: ( ( rule__OpMultiAssign__Alternatives ) )
-            // InternalMenuDsl.g:419:3: ( rule__OpMultiAssign__Alternatives )
+            // InternalMenuDsl.g:468:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            // InternalMenuDsl.g:469:3: ( rule__OpMultiAssign__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:420:3: ( rule__OpMultiAssign__Alternatives )
-            // InternalMenuDsl.g:420:4: rule__OpMultiAssign__Alternatives
+            // InternalMenuDsl.g:470:3: ( rule__OpMultiAssign__Alternatives )
+            // InternalMenuDsl.g:470:4: rule__OpMultiAssign__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpMultiAssign__Alternatives();
@@ -1404,11 +1576,11 @@
 
 
     // $ANTLR start "entryRuleXOrExpression"
-    // InternalMenuDsl.g:429:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
+    // InternalMenuDsl.g:479:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
     public final void entryRuleXOrExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:430:1: ( ruleXOrExpression EOF )
-            // InternalMenuDsl.g:431:1: ruleXOrExpression EOF
+            // InternalMenuDsl.g:480:1: ( ruleXOrExpression EOF )
+            // InternalMenuDsl.g:481:1: ruleXOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionRule()); 
@@ -1438,23 +1610,23 @@
 
 
     // $ANTLR start "ruleXOrExpression"
-    // InternalMenuDsl.g:438:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:488:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
     public final void ruleXOrExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:442:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:443:2: ( ( rule__XOrExpression__Group__0 ) )
+            // InternalMenuDsl.g:492:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:493:2: ( ( rule__XOrExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:443:2: ( ( rule__XOrExpression__Group__0 ) )
-            // InternalMenuDsl.g:444:3: ( rule__XOrExpression__Group__0 )
+            // InternalMenuDsl.g:493:2: ( ( rule__XOrExpression__Group__0 ) )
+            // InternalMenuDsl.g:494:3: ( rule__XOrExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:445:3: ( rule__XOrExpression__Group__0 )
-            // InternalMenuDsl.g:445:4: rule__XOrExpression__Group__0
+            // InternalMenuDsl.g:495:3: ( rule__XOrExpression__Group__0 )
+            // InternalMenuDsl.g:495:4: rule__XOrExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group__0();
@@ -1489,11 +1661,11 @@
 
 
     // $ANTLR start "entryRuleOpOr"
-    // InternalMenuDsl.g:454:1: entryRuleOpOr : ruleOpOr EOF ;
+    // InternalMenuDsl.g:504:1: entryRuleOpOr : ruleOpOr EOF ;
     public final void entryRuleOpOr() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:455:1: ( ruleOpOr EOF )
-            // InternalMenuDsl.g:456:1: ruleOpOr EOF
+            // InternalMenuDsl.g:505:1: ( ruleOpOr EOF )
+            // InternalMenuDsl.g:506:1: ruleOpOr EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOrRule()); 
@@ -1523,17 +1695,17 @@
 
 
     // $ANTLR start "ruleOpOr"
-    // InternalMenuDsl.g:463:1: ruleOpOr : ( '||' ) ;
+    // InternalMenuDsl.g:513:1: ruleOpOr : ( '||' ) ;
     public final void ruleOpOr() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:467:2: ( ( '||' ) )
-            // InternalMenuDsl.g:468:2: ( '||' )
+            // InternalMenuDsl.g:517:2: ( ( '||' ) )
+            // InternalMenuDsl.g:518:2: ( '||' )
             {
-            // InternalMenuDsl.g:468:2: ( '||' )
-            // InternalMenuDsl.g:469:3: '||'
+            // InternalMenuDsl.g:518:2: ( '||' )
+            // InternalMenuDsl.g:519:3: '||'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
@@ -1564,11 +1736,11 @@
 
 
     // $ANTLR start "entryRuleXAndExpression"
-    // InternalMenuDsl.g:479:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
+    // InternalMenuDsl.g:529:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
     public final void entryRuleXAndExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:480:1: ( ruleXAndExpression EOF )
-            // InternalMenuDsl.g:481:1: ruleXAndExpression EOF
+            // InternalMenuDsl.g:530:1: ( ruleXAndExpression EOF )
+            // InternalMenuDsl.g:531:1: ruleXAndExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionRule()); 
@@ -1598,23 +1770,23 @@
 
 
     // $ANTLR start "ruleXAndExpression"
-    // InternalMenuDsl.g:488:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:538:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
     public final void ruleXAndExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:492:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:493:2: ( ( rule__XAndExpression__Group__0 ) )
+            // InternalMenuDsl.g:542:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:543:2: ( ( rule__XAndExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:493:2: ( ( rule__XAndExpression__Group__0 ) )
-            // InternalMenuDsl.g:494:3: ( rule__XAndExpression__Group__0 )
+            // InternalMenuDsl.g:543:2: ( ( rule__XAndExpression__Group__0 ) )
+            // InternalMenuDsl.g:544:3: ( rule__XAndExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:495:3: ( rule__XAndExpression__Group__0 )
-            // InternalMenuDsl.g:495:4: rule__XAndExpression__Group__0
+            // InternalMenuDsl.g:545:3: ( rule__XAndExpression__Group__0 )
+            // InternalMenuDsl.g:545:4: rule__XAndExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group__0();
@@ -1649,11 +1821,11 @@
 
 
     // $ANTLR start "entryRuleOpAnd"
-    // InternalMenuDsl.g:504:1: entryRuleOpAnd : ruleOpAnd EOF ;
+    // InternalMenuDsl.g:554:1: entryRuleOpAnd : ruleOpAnd EOF ;
     public final void entryRuleOpAnd() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:505:1: ( ruleOpAnd EOF )
-            // InternalMenuDsl.g:506:1: ruleOpAnd EOF
+            // InternalMenuDsl.g:555:1: ( ruleOpAnd EOF )
+            // InternalMenuDsl.g:556:1: ruleOpAnd EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAndRule()); 
@@ -1683,17 +1855,17 @@
 
 
     // $ANTLR start "ruleOpAnd"
-    // InternalMenuDsl.g:513:1: ruleOpAnd : ( '&&' ) ;
+    // InternalMenuDsl.g:563:1: ruleOpAnd : ( '&&' ) ;
     public final void ruleOpAnd() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:517:2: ( ( '&&' ) )
-            // InternalMenuDsl.g:518:2: ( '&&' )
+            // InternalMenuDsl.g:567:2: ( ( '&&' ) )
+            // InternalMenuDsl.g:568:2: ( '&&' )
             {
-            // InternalMenuDsl.g:518:2: ( '&&' )
-            // InternalMenuDsl.g:519:3: '&&'
+            // InternalMenuDsl.g:568:2: ( '&&' )
+            // InternalMenuDsl.g:569:3: '&&'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
@@ -1724,11 +1896,11 @@
 
 
     // $ANTLR start "entryRuleXEqualityExpression"
-    // InternalMenuDsl.g:529:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
+    // InternalMenuDsl.g:579:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
     public final void entryRuleXEqualityExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:530:1: ( ruleXEqualityExpression EOF )
-            // InternalMenuDsl.g:531:1: ruleXEqualityExpression EOF
+            // InternalMenuDsl.g:580:1: ( ruleXEqualityExpression EOF )
+            // InternalMenuDsl.g:581:1: ruleXEqualityExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionRule()); 
@@ -1758,23 +1930,23 @@
 
 
     // $ANTLR start "ruleXEqualityExpression"
-    // InternalMenuDsl.g:538:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:588:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
     public final void ruleXEqualityExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:542:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:543:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            // InternalMenuDsl.g:592:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:593:2: ( ( rule__XEqualityExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:543:2: ( ( rule__XEqualityExpression__Group__0 ) )
-            // InternalMenuDsl.g:544:3: ( rule__XEqualityExpression__Group__0 )
+            // InternalMenuDsl.g:593:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            // InternalMenuDsl.g:594:3: ( rule__XEqualityExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:545:3: ( rule__XEqualityExpression__Group__0 )
-            // InternalMenuDsl.g:545:4: rule__XEqualityExpression__Group__0
+            // InternalMenuDsl.g:595:3: ( rule__XEqualityExpression__Group__0 )
+            // InternalMenuDsl.g:595:4: rule__XEqualityExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group__0();
@@ -1809,11 +1981,11 @@
 
 
     // $ANTLR start "entryRuleOpEquality"
-    // InternalMenuDsl.g:554:1: entryRuleOpEquality : ruleOpEquality EOF ;
+    // InternalMenuDsl.g:604:1: entryRuleOpEquality : ruleOpEquality EOF ;
     public final void entryRuleOpEquality() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:555:1: ( ruleOpEquality EOF )
-            // InternalMenuDsl.g:556:1: ruleOpEquality EOF
+            // InternalMenuDsl.g:605:1: ( ruleOpEquality EOF )
+            // InternalMenuDsl.g:606:1: ruleOpEquality EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpEqualityRule()); 
@@ -1843,23 +2015,23 @@
 
 
     // $ANTLR start "ruleOpEquality"
-    // InternalMenuDsl.g:563:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
+    // InternalMenuDsl.g:613:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
     public final void ruleOpEquality() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:567:2: ( ( ( rule__OpEquality__Alternatives ) ) )
-            // InternalMenuDsl.g:568:2: ( ( rule__OpEquality__Alternatives ) )
+            // InternalMenuDsl.g:617:2: ( ( ( rule__OpEquality__Alternatives ) ) )
+            // InternalMenuDsl.g:618:2: ( ( rule__OpEquality__Alternatives ) )
             {
-            // InternalMenuDsl.g:568:2: ( ( rule__OpEquality__Alternatives ) )
-            // InternalMenuDsl.g:569:3: ( rule__OpEquality__Alternatives )
+            // InternalMenuDsl.g:618:2: ( ( rule__OpEquality__Alternatives ) )
+            // InternalMenuDsl.g:619:3: ( rule__OpEquality__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpEqualityAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:570:3: ( rule__OpEquality__Alternatives )
-            // InternalMenuDsl.g:570:4: rule__OpEquality__Alternatives
+            // InternalMenuDsl.g:620:3: ( rule__OpEquality__Alternatives )
+            // InternalMenuDsl.g:620:4: rule__OpEquality__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpEquality__Alternatives();
@@ -1894,11 +2066,11 @@
 
 
     // $ANTLR start "entryRuleXRelationalExpression"
-    // InternalMenuDsl.g:579:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
+    // InternalMenuDsl.g:629:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
     public final void entryRuleXRelationalExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:580:1: ( ruleXRelationalExpression EOF )
-            // InternalMenuDsl.g:581:1: ruleXRelationalExpression EOF
+            // InternalMenuDsl.g:630:1: ( ruleXRelationalExpression EOF )
+            // InternalMenuDsl.g:631:1: ruleXRelationalExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionRule()); 
@@ -1928,23 +2100,23 @@
 
 
     // $ANTLR start "ruleXRelationalExpression"
-    // InternalMenuDsl.g:588:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:638:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
     public final void ruleXRelationalExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:592:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:593:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            // InternalMenuDsl.g:642:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:643:2: ( ( rule__XRelationalExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:593:2: ( ( rule__XRelationalExpression__Group__0 ) )
-            // InternalMenuDsl.g:594:3: ( rule__XRelationalExpression__Group__0 )
+            // InternalMenuDsl.g:643:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            // InternalMenuDsl.g:644:3: ( rule__XRelationalExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:595:3: ( rule__XRelationalExpression__Group__0 )
-            // InternalMenuDsl.g:595:4: rule__XRelationalExpression__Group__0
+            // InternalMenuDsl.g:645:3: ( rule__XRelationalExpression__Group__0 )
+            // InternalMenuDsl.g:645:4: rule__XRelationalExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group__0();
@@ -1979,11 +2151,11 @@
 
 
     // $ANTLR start "entryRuleOpCompare"
-    // InternalMenuDsl.g:604:1: entryRuleOpCompare : ruleOpCompare EOF ;
+    // InternalMenuDsl.g:654:1: entryRuleOpCompare : ruleOpCompare EOF ;
     public final void entryRuleOpCompare() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:605:1: ( ruleOpCompare EOF )
-            // InternalMenuDsl.g:606:1: ruleOpCompare EOF
+            // InternalMenuDsl.g:655:1: ( ruleOpCompare EOF )
+            // InternalMenuDsl.g:656:1: ruleOpCompare EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareRule()); 
@@ -2013,23 +2185,23 @@
 
 
     // $ANTLR start "ruleOpCompare"
-    // InternalMenuDsl.g:613:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
+    // InternalMenuDsl.g:663:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
     public final void ruleOpCompare() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:617:2: ( ( ( rule__OpCompare__Alternatives ) ) )
-            // InternalMenuDsl.g:618:2: ( ( rule__OpCompare__Alternatives ) )
+            // InternalMenuDsl.g:667:2: ( ( ( rule__OpCompare__Alternatives ) ) )
+            // InternalMenuDsl.g:668:2: ( ( rule__OpCompare__Alternatives ) )
             {
-            // InternalMenuDsl.g:618:2: ( ( rule__OpCompare__Alternatives ) )
-            // InternalMenuDsl.g:619:3: ( rule__OpCompare__Alternatives )
+            // InternalMenuDsl.g:668:2: ( ( rule__OpCompare__Alternatives ) )
+            // InternalMenuDsl.g:669:3: ( rule__OpCompare__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:620:3: ( rule__OpCompare__Alternatives )
-            // InternalMenuDsl.g:620:4: rule__OpCompare__Alternatives
+            // InternalMenuDsl.g:670:3: ( rule__OpCompare__Alternatives )
+            // InternalMenuDsl.g:670:4: rule__OpCompare__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpCompare__Alternatives();
@@ -2064,11 +2236,11 @@
 
 
     // $ANTLR start "entryRuleXOtherOperatorExpression"
-    // InternalMenuDsl.g:629:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
+    // InternalMenuDsl.g:679:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
     public final void entryRuleXOtherOperatorExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:630:1: ( ruleXOtherOperatorExpression EOF )
-            // InternalMenuDsl.g:631:1: ruleXOtherOperatorExpression EOF
+            // InternalMenuDsl.g:680:1: ( ruleXOtherOperatorExpression EOF )
+            // InternalMenuDsl.g:681:1: ruleXOtherOperatorExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionRule()); 
@@ -2098,23 +2270,23 @@
 
 
     // $ANTLR start "ruleXOtherOperatorExpression"
-    // InternalMenuDsl.g:638:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:688:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
     public final void ruleXOtherOperatorExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:642:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:643:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // InternalMenuDsl.g:692:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:693:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:643:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
-            // InternalMenuDsl.g:644:3: ( rule__XOtherOperatorExpression__Group__0 )
+            // InternalMenuDsl.g:693:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // InternalMenuDsl.g:694:3: ( rule__XOtherOperatorExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:645:3: ( rule__XOtherOperatorExpression__Group__0 )
-            // InternalMenuDsl.g:645:4: rule__XOtherOperatorExpression__Group__0
+            // InternalMenuDsl.g:695:3: ( rule__XOtherOperatorExpression__Group__0 )
+            // InternalMenuDsl.g:695:4: rule__XOtherOperatorExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group__0();
@@ -2149,11 +2321,11 @@
 
 
     // $ANTLR start "entryRuleOpOther"
-    // InternalMenuDsl.g:654:1: entryRuleOpOther : ruleOpOther EOF ;
+    // InternalMenuDsl.g:704:1: entryRuleOpOther : ruleOpOther EOF ;
     public final void entryRuleOpOther() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:655:1: ( ruleOpOther EOF )
-            // InternalMenuDsl.g:656:1: ruleOpOther EOF
+            // InternalMenuDsl.g:705:1: ( ruleOpOther EOF )
+            // InternalMenuDsl.g:706:1: ruleOpOther EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherRule()); 
@@ -2183,23 +2355,23 @@
 
 
     // $ANTLR start "ruleOpOther"
-    // InternalMenuDsl.g:663:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
+    // InternalMenuDsl.g:713:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
     public final void ruleOpOther() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:667:2: ( ( ( rule__OpOther__Alternatives ) ) )
-            // InternalMenuDsl.g:668:2: ( ( rule__OpOther__Alternatives ) )
+            // InternalMenuDsl.g:717:2: ( ( ( rule__OpOther__Alternatives ) ) )
+            // InternalMenuDsl.g:718:2: ( ( rule__OpOther__Alternatives ) )
             {
-            // InternalMenuDsl.g:668:2: ( ( rule__OpOther__Alternatives ) )
-            // InternalMenuDsl.g:669:3: ( rule__OpOther__Alternatives )
+            // InternalMenuDsl.g:718:2: ( ( rule__OpOther__Alternatives ) )
+            // InternalMenuDsl.g:719:3: ( rule__OpOther__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:670:3: ( rule__OpOther__Alternatives )
-            // InternalMenuDsl.g:670:4: rule__OpOther__Alternatives
+            // InternalMenuDsl.g:720:3: ( rule__OpOther__Alternatives )
+            // InternalMenuDsl.g:720:4: rule__OpOther__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Alternatives();
@@ -2234,11 +2406,11 @@
 
 
     // $ANTLR start "entryRuleXAdditiveExpression"
-    // InternalMenuDsl.g:679:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
+    // InternalMenuDsl.g:729:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
     public final void entryRuleXAdditiveExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:680:1: ( ruleXAdditiveExpression EOF )
-            // InternalMenuDsl.g:681:1: ruleXAdditiveExpression EOF
+            // InternalMenuDsl.g:730:1: ( ruleXAdditiveExpression EOF )
+            // InternalMenuDsl.g:731:1: ruleXAdditiveExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionRule()); 
@@ -2268,23 +2440,23 @@
 
 
     // $ANTLR start "ruleXAdditiveExpression"
-    // InternalMenuDsl.g:688:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:738:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
     public final void ruleXAdditiveExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:692:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:693:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // InternalMenuDsl.g:742:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:743:2: ( ( rule__XAdditiveExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:693:2: ( ( rule__XAdditiveExpression__Group__0 ) )
-            // InternalMenuDsl.g:694:3: ( rule__XAdditiveExpression__Group__0 )
+            // InternalMenuDsl.g:743:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // InternalMenuDsl.g:744:3: ( rule__XAdditiveExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:695:3: ( rule__XAdditiveExpression__Group__0 )
-            // InternalMenuDsl.g:695:4: rule__XAdditiveExpression__Group__0
+            // InternalMenuDsl.g:745:3: ( rule__XAdditiveExpression__Group__0 )
+            // InternalMenuDsl.g:745:4: rule__XAdditiveExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group__0();
@@ -2319,11 +2491,11 @@
 
 
     // $ANTLR start "entryRuleOpAdd"
-    // InternalMenuDsl.g:704:1: entryRuleOpAdd : ruleOpAdd EOF ;
+    // InternalMenuDsl.g:754:1: entryRuleOpAdd : ruleOpAdd EOF ;
     public final void entryRuleOpAdd() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:705:1: ( ruleOpAdd EOF )
-            // InternalMenuDsl.g:706:1: ruleOpAdd EOF
+            // InternalMenuDsl.g:755:1: ( ruleOpAdd EOF )
+            // InternalMenuDsl.g:756:1: ruleOpAdd EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAddRule()); 
@@ -2353,23 +2525,23 @@
 
 
     // $ANTLR start "ruleOpAdd"
-    // InternalMenuDsl.g:713:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
+    // InternalMenuDsl.g:763:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
     public final void ruleOpAdd() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:717:2: ( ( ( rule__OpAdd__Alternatives ) ) )
-            // InternalMenuDsl.g:718:2: ( ( rule__OpAdd__Alternatives ) )
+            // InternalMenuDsl.g:767:2: ( ( ( rule__OpAdd__Alternatives ) ) )
+            // InternalMenuDsl.g:768:2: ( ( rule__OpAdd__Alternatives ) )
             {
-            // InternalMenuDsl.g:718:2: ( ( rule__OpAdd__Alternatives ) )
-            // InternalMenuDsl.g:719:3: ( rule__OpAdd__Alternatives )
+            // InternalMenuDsl.g:768:2: ( ( rule__OpAdd__Alternatives ) )
+            // InternalMenuDsl.g:769:3: ( rule__OpAdd__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAddAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:720:3: ( rule__OpAdd__Alternatives )
-            // InternalMenuDsl.g:720:4: rule__OpAdd__Alternatives
+            // InternalMenuDsl.g:770:3: ( rule__OpAdd__Alternatives )
+            // InternalMenuDsl.g:770:4: rule__OpAdd__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpAdd__Alternatives();
@@ -2404,11 +2576,11 @@
 
 
     // $ANTLR start "entryRuleXMultiplicativeExpression"
-    // InternalMenuDsl.g:729:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
+    // InternalMenuDsl.g:779:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
     public final void entryRuleXMultiplicativeExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:730:1: ( ruleXMultiplicativeExpression EOF )
-            // InternalMenuDsl.g:731:1: ruleXMultiplicativeExpression EOF
+            // InternalMenuDsl.g:780:1: ( ruleXMultiplicativeExpression EOF )
+            // InternalMenuDsl.g:781:1: ruleXMultiplicativeExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionRule()); 
@@ -2438,23 +2610,23 @@
 
 
     // $ANTLR start "ruleXMultiplicativeExpression"
-    // InternalMenuDsl.g:738:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:788:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
     public final void ruleXMultiplicativeExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:742:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:743:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // InternalMenuDsl.g:792:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:793:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:743:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
-            // InternalMenuDsl.g:744:3: ( rule__XMultiplicativeExpression__Group__0 )
+            // InternalMenuDsl.g:793:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // InternalMenuDsl.g:794:3: ( rule__XMultiplicativeExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:745:3: ( rule__XMultiplicativeExpression__Group__0 )
-            // InternalMenuDsl.g:745:4: rule__XMultiplicativeExpression__Group__0
+            // InternalMenuDsl.g:795:3: ( rule__XMultiplicativeExpression__Group__0 )
+            // InternalMenuDsl.g:795:4: rule__XMultiplicativeExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group__0();
@@ -2489,11 +2661,11 @@
 
 
     // $ANTLR start "entryRuleOpMulti"
-    // InternalMenuDsl.g:754:1: entryRuleOpMulti : ruleOpMulti EOF ;
+    // InternalMenuDsl.g:804:1: entryRuleOpMulti : ruleOpMulti EOF ;
     public final void entryRuleOpMulti() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:755:1: ( ruleOpMulti EOF )
-            // InternalMenuDsl.g:756:1: ruleOpMulti EOF
+            // InternalMenuDsl.g:805:1: ( ruleOpMulti EOF )
+            // InternalMenuDsl.g:806:1: ruleOpMulti EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiRule()); 
@@ -2523,23 +2695,23 @@
 
 
     // $ANTLR start "ruleOpMulti"
-    // InternalMenuDsl.g:763:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
+    // InternalMenuDsl.g:813:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
     public final void ruleOpMulti() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:767:2: ( ( ( rule__OpMulti__Alternatives ) ) )
-            // InternalMenuDsl.g:768:2: ( ( rule__OpMulti__Alternatives ) )
+            // InternalMenuDsl.g:817:2: ( ( ( rule__OpMulti__Alternatives ) ) )
+            // InternalMenuDsl.g:818:2: ( ( rule__OpMulti__Alternatives ) )
             {
-            // InternalMenuDsl.g:768:2: ( ( rule__OpMulti__Alternatives ) )
-            // InternalMenuDsl.g:769:3: ( rule__OpMulti__Alternatives )
+            // InternalMenuDsl.g:818:2: ( ( rule__OpMulti__Alternatives ) )
+            // InternalMenuDsl.g:819:3: ( rule__OpMulti__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:770:3: ( rule__OpMulti__Alternatives )
-            // InternalMenuDsl.g:770:4: rule__OpMulti__Alternatives
+            // InternalMenuDsl.g:820:3: ( rule__OpMulti__Alternatives )
+            // InternalMenuDsl.g:820:4: rule__OpMulti__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpMulti__Alternatives();
@@ -2574,11 +2746,11 @@
 
 
     // $ANTLR start "entryRuleXUnaryOperation"
-    // InternalMenuDsl.g:779:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
+    // InternalMenuDsl.g:829:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
     public final void entryRuleXUnaryOperation() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:780:1: ( ruleXUnaryOperation EOF )
-            // InternalMenuDsl.g:781:1: ruleXUnaryOperation EOF
+            // InternalMenuDsl.g:830:1: ( ruleXUnaryOperation EOF )
+            // InternalMenuDsl.g:831:1: ruleXUnaryOperation EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationRule()); 
@@ -2608,23 +2780,23 @@
 
 
     // $ANTLR start "ruleXUnaryOperation"
-    // InternalMenuDsl.g:788:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
+    // InternalMenuDsl.g:838:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
     public final void ruleXUnaryOperation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:792:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
-            // InternalMenuDsl.g:793:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            // InternalMenuDsl.g:842:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
+            // InternalMenuDsl.g:843:2: ( ( rule__XUnaryOperation__Alternatives ) )
             {
-            // InternalMenuDsl.g:793:2: ( ( rule__XUnaryOperation__Alternatives ) )
-            // InternalMenuDsl.g:794:3: ( rule__XUnaryOperation__Alternatives )
+            // InternalMenuDsl.g:843:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            // InternalMenuDsl.g:844:3: ( rule__XUnaryOperation__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:795:3: ( rule__XUnaryOperation__Alternatives )
-            // InternalMenuDsl.g:795:4: rule__XUnaryOperation__Alternatives
+            // InternalMenuDsl.g:845:3: ( rule__XUnaryOperation__Alternatives )
+            // InternalMenuDsl.g:845:4: rule__XUnaryOperation__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__Alternatives();
@@ -2659,11 +2831,11 @@
 
 
     // $ANTLR start "entryRuleOpUnary"
-    // InternalMenuDsl.g:804:1: entryRuleOpUnary : ruleOpUnary EOF ;
+    // InternalMenuDsl.g:854:1: entryRuleOpUnary : ruleOpUnary EOF ;
     public final void entryRuleOpUnary() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:805:1: ( ruleOpUnary EOF )
-            // InternalMenuDsl.g:806:1: ruleOpUnary EOF
+            // InternalMenuDsl.g:855:1: ( ruleOpUnary EOF )
+            // InternalMenuDsl.g:856:1: ruleOpUnary EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpUnaryRule()); 
@@ -2693,23 +2865,23 @@
 
 
     // $ANTLR start "ruleOpUnary"
-    // InternalMenuDsl.g:813:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
+    // InternalMenuDsl.g:863:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
     public final void ruleOpUnary() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:817:2: ( ( ( rule__OpUnary__Alternatives ) ) )
-            // InternalMenuDsl.g:818:2: ( ( rule__OpUnary__Alternatives ) )
+            // InternalMenuDsl.g:867:2: ( ( ( rule__OpUnary__Alternatives ) ) )
+            // InternalMenuDsl.g:868:2: ( ( rule__OpUnary__Alternatives ) )
             {
-            // InternalMenuDsl.g:818:2: ( ( rule__OpUnary__Alternatives ) )
-            // InternalMenuDsl.g:819:3: ( rule__OpUnary__Alternatives )
+            // InternalMenuDsl.g:868:2: ( ( rule__OpUnary__Alternatives ) )
+            // InternalMenuDsl.g:869:3: ( rule__OpUnary__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpUnaryAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:820:3: ( rule__OpUnary__Alternatives )
-            // InternalMenuDsl.g:820:4: rule__OpUnary__Alternatives
+            // InternalMenuDsl.g:870:3: ( rule__OpUnary__Alternatives )
+            // InternalMenuDsl.g:870:4: rule__OpUnary__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpUnary__Alternatives();
@@ -2744,11 +2916,11 @@
 
 
     // $ANTLR start "entryRuleXCastedExpression"
-    // InternalMenuDsl.g:829:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
+    // InternalMenuDsl.g:879:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
     public final void entryRuleXCastedExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:830:1: ( ruleXCastedExpression EOF )
-            // InternalMenuDsl.g:831:1: ruleXCastedExpression EOF
+            // InternalMenuDsl.g:880:1: ( ruleXCastedExpression EOF )
+            // InternalMenuDsl.g:881:1: ruleXCastedExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionRule()); 
@@ -2778,23 +2950,23 @@
 
 
     // $ANTLR start "ruleXCastedExpression"
-    // InternalMenuDsl.g:838:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:888:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
     public final void ruleXCastedExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:842:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:843:2: ( ( rule__XCastedExpression__Group__0 ) )
+            // InternalMenuDsl.g:892:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:893:2: ( ( rule__XCastedExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:843:2: ( ( rule__XCastedExpression__Group__0 ) )
-            // InternalMenuDsl.g:844:3: ( rule__XCastedExpression__Group__0 )
+            // InternalMenuDsl.g:893:2: ( ( rule__XCastedExpression__Group__0 ) )
+            // InternalMenuDsl.g:894:3: ( rule__XCastedExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:845:3: ( rule__XCastedExpression__Group__0 )
-            // InternalMenuDsl.g:845:4: rule__XCastedExpression__Group__0
+            // InternalMenuDsl.g:895:3: ( rule__XCastedExpression__Group__0 )
+            // InternalMenuDsl.g:895:4: rule__XCastedExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group__0();
@@ -2829,11 +3001,11 @@
 
 
     // $ANTLR start "entryRuleXPostfixOperation"
-    // InternalMenuDsl.g:854:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
+    // InternalMenuDsl.g:904:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
     public final void entryRuleXPostfixOperation() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:855:1: ( ruleXPostfixOperation EOF )
-            // InternalMenuDsl.g:856:1: ruleXPostfixOperation EOF
+            // InternalMenuDsl.g:905:1: ( ruleXPostfixOperation EOF )
+            // InternalMenuDsl.g:906:1: ruleXPostfixOperation EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationRule()); 
@@ -2863,23 +3035,23 @@
 
 
     // $ANTLR start "ruleXPostfixOperation"
-    // InternalMenuDsl.g:863:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
+    // InternalMenuDsl.g:913:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
     public final void ruleXPostfixOperation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:867:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
-            // InternalMenuDsl.g:868:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            // InternalMenuDsl.g:917:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
+            // InternalMenuDsl.g:918:2: ( ( rule__XPostfixOperation__Group__0 ) )
             {
-            // InternalMenuDsl.g:868:2: ( ( rule__XPostfixOperation__Group__0 ) )
-            // InternalMenuDsl.g:869:3: ( rule__XPostfixOperation__Group__0 )
+            // InternalMenuDsl.g:918:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            // InternalMenuDsl.g:919:3: ( rule__XPostfixOperation__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:870:3: ( rule__XPostfixOperation__Group__0 )
-            // InternalMenuDsl.g:870:4: rule__XPostfixOperation__Group__0
+            // InternalMenuDsl.g:920:3: ( rule__XPostfixOperation__Group__0 )
+            // InternalMenuDsl.g:920:4: rule__XPostfixOperation__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group__0();
@@ -2914,11 +3086,11 @@
 
 
     // $ANTLR start "entryRuleOpPostfix"
-    // InternalMenuDsl.g:879:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
+    // InternalMenuDsl.g:929:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
     public final void entryRuleOpPostfix() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:880:1: ( ruleOpPostfix EOF )
-            // InternalMenuDsl.g:881:1: ruleOpPostfix EOF
+            // InternalMenuDsl.g:930:1: ( ruleOpPostfix EOF )
+            // InternalMenuDsl.g:931:1: ruleOpPostfix EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpPostfixRule()); 
@@ -2948,23 +3120,23 @@
 
 
     // $ANTLR start "ruleOpPostfix"
-    // InternalMenuDsl.g:888:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
+    // InternalMenuDsl.g:938:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
     public final void ruleOpPostfix() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:892:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
-            // InternalMenuDsl.g:893:2: ( ( rule__OpPostfix__Alternatives ) )
+            // InternalMenuDsl.g:942:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
+            // InternalMenuDsl.g:943:2: ( ( rule__OpPostfix__Alternatives ) )
             {
-            // InternalMenuDsl.g:893:2: ( ( rule__OpPostfix__Alternatives ) )
-            // InternalMenuDsl.g:894:3: ( rule__OpPostfix__Alternatives )
+            // InternalMenuDsl.g:943:2: ( ( rule__OpPostfix__Alternatives ) )
+            // InternalMenuDsl.g:944:3: ( rule__OpPostfix__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpPostfixAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:895:3: ( rule__OpPostfix__Alternatives )
-            // InternalMenuDsl.g:895:4: rule__OpPostfix__Alternatives
+            // InternalMenuDsl.g:945:3: ( rule__OpPostfix__Alternatives )
+            // InternalMenuDsl.g:945:4: rule__OpPostfix__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpPostfix__Alternatives();
@@ -2999,11 +3171,11 @@
 
 
     // $ANTLR start "entryRuleXMemberFeatureCall"
-    // InternalMenuDsl.g:904:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
+    // InternalMenuDsl.g:954:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
     public final void entryRuleXMemberFeatureCall() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:905:1: ( ruleXMemberFeatureCall EOF )
-            // InternalMenuDsl.g:906:1: ruleXMemberFeatureCall EOF
+            // InternalMenuDsl.g:955:1: ( ruleXMemberFeatureCall EOF )
+            // InternalMenuDsl.g:956:1: ruleXMemberFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallRule()); 
@@ -3033,23 +3205,23 @@
 
 
     // $ANTLR start "ruleXMemberFeatureCall"
-    // InternalMenuDsl.g:913:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
+    // InternalMenuDsl.g:963:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
     public final void ruleXMemberFeatureCall() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:917:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
-            // InternalMenuDsl.g:918:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // InternalMenuDsl.g:967:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
+            // InternalMenuDsl.g:968:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
             {
-            // InternalMenuDsl.g:918:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
-            // InternalMenuDsl.g:919:3: ( rule__XMemberFeatureCall__Group__0 )
+            // InternalMenuDsl.g:968:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // InternalMenuDsl.g:969:3: ( rule__XMemberFeatureCall__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:920:3: ( rule__XMemberFeatureCall__Group__0 )
-            // InternalMenuDsl.g:920:4: rule__XMemberFeatureCall__Group__0
+            // InternalMenuDsl.g:970:3: ( rule__XMemberFeatureCall__Group__0 )
+            // InternalMenuDsl.g:970:4: rule__XMemberFeatureCall__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group__0();
@@ -3084,11 +3256,11 @@
 
 
     // $ANTLR start "entryRuleXPrimaryExpression"
-    // InternalMenuDsl.g:929:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
+    // InternalMenuDsl.g:979:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
     public final void entryRuleXPrimaryExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:930:1: ( ruleXPrimaryExpression EOF )
-            // InternalMenuDsl.g:931:1: ruleXPrimaryExpression EOF
+            // InternalMenuDsl.g:980:1: ( ruleXPrimaryExpression EOF )
+            // InternalMenuDsl.g:981:1: ruleXPrimaryExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPrimaryExpressionRule()); 
@@ -3118,23 +3290,23 @@
 
 
     // $ANTLR start "ruleXPrimaryExpression"
-    // InternalMenuDsl.g:938:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
+    // InternalMenuDsl.g:988:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
     public final void ruleXPrimaryExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:942:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
-            // InternalMenuDsl.g:943:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // InternalMenuDsl.g:992:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
+            // InternalMenuDsl.g:993:2: ( ( rule__XPrimaryExpression__Alternatives ) )
             {
-            // InternalMenuDsl.g:943:2: ( ( rule__XPrimaryExpression__Alternatives ) )
-            // InternalMenuDsl.g:944:3: ( rule__XPrimaryExpression__Alternatives )
+            // InternalMenuDsl.g:993:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // InternalMenuDsl.g:994:3: ( rule__XPrimaryExpression__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:945:3: ( rule__XPrimaryExpression__Alternatives )
-            // InternalMenuDsl.g:945:4: rule__XPrimaryExpression__Alternatives
+            // InternalMenuDsl.g:995:3: ( rule__XPrimaryExpression__Alternatives )
+            // InternalMenuDsl.g:995:4: rule__XPrimaryExpression__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XPrimaryExpression__Alternatives();
@@ -3169,11 +3341,11 @@
 
 
     // $ANTLR start "entryRuleXLiteral"
-    // InternalMenuDsl.g:954:1: entryRuleXLiteral : ruleXLiteral EOF ;
+    // InternalMenuDsl.g:1004:1: entryRuleXLiteral : ruleXLiteral EOF ;
     public final void entryRuleXLiteral() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:955:1: ( ruleXLiteral EOF )
-            // InternalMenuDsl.g:956:1: ruleXLiteral EOF
+            // InternalMenuDsl.g:1005:1: ( ruleXLiteral EOF )
+            // InternalMenuDsl.g:1006:1: ruleXLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXLiteralRule()); 
@@ -3203,23 +3375,23 @@
 
 
     // $ANTLR start "ruleXLiteral"
-    // InternalMenuDsl.g:963:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
+    // InternalMenuDsl.g:1013:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
     public final void ruleXLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:967:2: ( ( ( rule__XLiteral__Alternatives ) ) )
-            // InternalMenuDsl.g:968:2: ( ( rule__XLiteral__Alternatives ) )
+            // InternalMenuDsl.g:1017:2: ( ( ( rule__XLiteral__Alternatives ) ) )
+            // InternalMenuDsl.g:1018:2: ( ( rule__XLiteral__Alternatives ) )
             {
-            // InternalMenuDsl.g:968:2: ( ( rule__XLiteral__Alternatives ) )
-            // InternalMenuDsl.g:969:3: ( rule__XLiteral__Alternatives )
+            // InternalMenuDsl.g:1018:2: ( ( rule__XLiteral__Alternatives ) )
+            // InternalMenuDsl.g:1019:3: ( rule__XLiteral__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXLiteralAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:970:3: ( rule__XLiteral__Alternatives )
-            // InternalMenuDsl.g:970:4: rule__XLiteral__Alternatives
+            // InternalMenuDsl.g:1020:3: ( rule__XLiteral__Alternatives )
+            // InternalMenuDsl.g:1020:4: rule__XLiteral__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XLiteral__Alternatives();
@@ -3254,11 +3426,11 @@
 
 
     // $ANTLR start "entryRuleXCollectionLiteral"
-    // InternalMenuDsl.g:979:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
+    // InternalMenuDsl.g:1029:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
     public final void entryRuleXCollectionLiteral() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:980:1: ( ruleXCollectionLiteral EOF )
-            // InternalMenuDsl.g:981:1: ruleXCollectionLiteral EOF
+            // InternalMenuDsl.g:1030:1: ( ruleXCollectionLiteral EOF )
+            // InternalMenuDsl.g:1031:1: ruleXCollectionLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCollectionLiteralRule()); 
@@ -3288,23 +3460,23 @@
 
 
     // $ANTLR start "ruleXCollectionLiteral"
-    // InternalMenuDsl.g:988:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
+    // InternalMenuDsl.g:1038:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
     public final void ruleXCollectionLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:992:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
-            // InternalMenuDsl.g:993:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // InternalMenuDsl.g:1042:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
+            // InternalMenuDsl.g:1043:2: ( ( rule__XCollectionLiteral__Alternatives ) )
             {
-            // InternalMenuDsl.g:993:2: ( ( rule__XCollectionLiteral__Alternatives ) )
-            // InternalMenuDsl.g:994:3: ( rule__XCollectionLiteral__Alternatives )
+            // InternalMenuDsl.g:1043:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // InternalMenuDsl.g:1044:3: ( rule__XCollectionLiteral__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:995:3: ( rule__XCollectionLiteral__Alternatives )
-            // InternalMenuDsl.g:995:4: rule__XCollectionLiteral__Alternatives
+            // InternalMenuDsl.g:1045:3: ( rule__XCollectionLiteral__Alternatives )
+            // InternalMenuDsl.g:1045:4: rule__XCollectionLiteral__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XCollectionLiteral__Alternatives();
@@ -3339,11 +3511,11 @@
 
 
     // $ANTLR start "entryRuleXSetLiteral"
-    // InternalMenuDsl.g:1004:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
+    // InternalMenuDsl.g:1054:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
     public final void entryRuleXSetLiteral() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1005:1: ( ruleXSetLiteral EOF )
-            // InternalMenuDsl.g:1006:1: ruleXSetLiteral EOF
+            // InternalMenuDsl.g:1055:1: ( ruleXSetLiteral EOF )
+            // InternalMenuDsl.g:1056:1: ruleXSetLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralRule()); 
@@ -3373,23 +3545,23 @@
 
 
     // $ANTLR start "ruleXSetLiteral"
-    // InternalMenuDsl.g:1013:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
+    // InternalMenuDsl.g:1063:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
     public final void ruleXSetLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1017:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
-            // InternalMenuDsl.g:1018:2: ( ( rule__XSetLiteral__Group__0 ) )
+            // InternalMenuDsl.g:1067:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
+            // InternalMenuDsl.g:1068:2: ( ( rule__XSetLiteral__Group__0 ) )
             {
-            // InternalMenuDsl.g:1018:2: ( ( rule__XSetLiteral__Group__0 ) )
-            // InternalMenuDsl.g:1019:3: ( rule__XSetLiteral__Group__0 )
+            // InternalMenuDsl.g:1068:2: ( ( rule__XSetLiteral__Group__0 ) )
+            // InternalMenuDsl.g:1069:3: ( rule__XSetLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1020:3: ( rule__XSetLiteral__Group__0 )
-            // InternalMenuDsl.g:1020:4: rule__XSetLiteral__Group__0
+            // InternalMenuDsl.g:1070:3: ( rule__XSetLiteral__Group__0 )
+            // InternalMenuDsl.g:1070:4: rule__XSetLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group__0();
@@ -3424,11 +3596,11 @@
 
 
     // $ANTLR start "entryRuleXListLiteral"
-    // InternalMenuDsl.g:1029:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
+    // InternalMenuDsl.g:1079:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
     public final void entryRuleXListLiteral() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1030:1: ( ruleXListLiteral EOF )
-            // InternalMenuDsl.g:1031:1: ruleXListLiteral EOF
+            // InternalMenuDsl.g:1080:1: ( ruleXListLiteral EOF )
+            // InternalMenuDsl.g:1081:1: ruleXListLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralRule()); 
@@ -3458,23 +3630,23 @@
 
 
     // $ANTLR start "ruleXListLiteral"
-    // InternalMenuDsl.g:1038:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
+    // InternalMenuDsl.g:1088:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
     public final void ruleXListLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1042:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
-            // InternalMenuDsl.g:1043:2: ( ( rule__XListLiteral__Group__0 ) )
+            // InternalMenuDsl.g:1092:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
+            // InternalMenuDsl.g:1093:2: ( ( rule__XListLiteral__Group__0 ) )
             {
-            // InternalMenuDsl.g:1043:2: ( ( rule__XListLiteral__Group__0 ) )
-            // InternalMenuDsl.g:1044:3: ( rule__XListLiteral__Group__0 )
+            // InternalMenuDsl.g:1093:2: ( ( rule__XListLiteral__Group__0 ) )
+            // InternalMenuDsl.g:1094:3: ( rule__XListLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1045:3: ( rule__XListLiteral__Group__0 )
-            // InternalMenuDsl.g:1045:4: rule__XListLiteral__Group__0
+            // InternalMenuDsl.g:1095:3: ( rule__XListLiteral__Group__0 )
+            // InternalMenuDsl.g:1095:4: rule__XListLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group__0();
@@ -3509,11 +3681,11 @@
 
 
     // $ANTLR start "entryRuleXClosure"
-    // InternalMenuDsl.g:1054:1: entryRuleXClosure : ruleXClosure EOF ;
+    // InternalMenuDsl.g:1104:1: entryRuleXClosure : ruleXClosure EOF ;
     public final void entryRuleXClosure() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1055:1: ( ruleXClosure EOF )
-            // InternalMenuDsl.g:1056:1: ruleXClosure EOF
+            // InternalMenuDsl.g:1105:1: ( ruleXClosure EOF )
+            // InternalMenuDsl.g:1106:1: ruleXClosure EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureRule()); 
@@ -3543,23 +3715,23 @@
 
 
     // $ANTLR start "ruleXClosure"
-    // InternalMenuDsl.g:1063:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
+    // InternalMenuDsl.g:1113:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
     public final void ruleXClosure() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1067:2: ( ( ( rule__XClosure__Group__0 ) ) )
-            // InternalMenuDsl.g:1068:2: ( ( rule__XClosure__Group__0 ) )
+            // InternalMenuDsl.g:1117:2: ( ( ( rule__XClosure__Group__0 ) ) )
+            // InternalMenuDsl.g:1118:2: ( ( rule__XClosure__Group__0 ) )
             {
-            // InternalMenuDsl.g:1068:2: ( ( rule__XClosure__Group__0 ) )
-            // InternalMenuDsl.g:1069:3: ( rule__XClosure__Group__0 )
+            // InternalMenuDsl.g:1118:2: ( ( rule__XClosure__Group__0 ) )
+            // InternalMenuDsl.g:1119:3: ( rule__XClosure__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1070:3: ( rule__XClosure__Group__0 )
-            // InternalMenuDsl.g:1070:4: rule__XClosure__Group__0
+            // InternalMenuDsl.g:1120:3: ( rule__XClosure__Group__0 )
+            // InternalMenuDsl.g:1120:4: rule__XClosure__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group__0();
@@ -3594,11 +3766,11 @@
 
 
     // $ANTLR start "entryRuleXExpressionInClosure"
-    // InternalMenuDsl.g:1079:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
+    // InternalMenuDsl.g:1129:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
     public final void entryRuleXExpressionInClosure() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1080:1: ( ruleXExpressionInClosure EOF )
-            // InternalMenuDsl.g:1081:1: ruleXExpressionInClosure EOF
+            // InternalMenuDsl.g:1130:1: ( ruleXExpressionInClosure EOF )
+            // InternalMenuDsl.g:1131:1: ruleXExpressionInClosure EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureRule()); 
@@ -3628,23 +3800,23 @@
 
 
     // $ANTLR start "ruleXExpressionInClosure"
-    // InternalMenuDsl.g:1088:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
+    // InternalMenuDsl.g:1138:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
     public final void ruleXExpressionInClosure() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1092:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
-            // InternalMenuDsl.g:1093:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // InternalMenuDsl.g:1142:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
+            // InternalMenuDsl.g:1143:2: ( ( rule__XExpressionInClosure__Group__0 ) )
             {
-            // InternalMenuDsl.g:1093:2: ( ( rule__XExpressionInClosure__Group__0 ) )
-            // InternalMenuDsl.g:1094:3: ( rule__XExpressionInClosure__Group__0 )
+            // InternalMenuDsl.g:1143:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // InternalMenuDsl.g:1144:3: ( rule__XExpressionInClosure__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1095:3: ( rule__XExpressionInClosure__Group__0 )
-            // InternalMenuDsl.g:1095:4: rule__XExpressionInClosure__Group__0
+            // InternalMenuDsl.g:1145:3: ( rule__XExpressionInClosure__Group__0 )
+            // InternalMenuDsl.g:1145:4: rule__XExpressionInClosure__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__Group__0();
@@ -3679,11 +3851,11 @@
 
 
     // $ANTLR start "entryRuleXShortClosure"
-    // InternalMenuDsl.g:1104:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
+    // InternalMenuDsl.g:1154:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
     public final void entryRuleXShortClosure() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1105:1: ( ruleXShortClosure EOF )
-            // InternalMenuDsl.g:1106:1: ruleXShortClosure EOF
+            // InternalMenuDsl.g:1155:1: ( ruleXShortClosure EOF )
+            // InternalMenuDsl.g:1156:1: ruleXShortClosure EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureRule()); 
@@ -3713,23 +3885,23 @@
 
 
     // $ANTLR start "ruleXShortClosure"
-    // InternalMenuDsl.g:1113:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
+    // InternalMenuDsl.g:1163:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
     public final void ruleXShortClosure() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1117:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
-            // InternalMenuDsl.g:1118:2: ( ( rule__XShortClosure__Group__0 ) )
+            // InternalMenuDsl.g:1167:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
+            // InternalMenuDsl.g:1168:2: ( ( rule__XShortClosure__Group__0 ) )
             {
-            // InternalMenuDsl.g:1118:2: ( ( rule__XShortClosure__Group__0 ) )
-            // InternalMenuDsl.g:1119:3: ( rule__XShortClosure__Group__0 )
+            // InternalMenuDsl.g:1168:2: ( ( rule__XShortClosure__Group__0 ) )
+            // InternalMenuDsl.g:1169:3: ( rule__XShortClosure__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1120:3: ( rule__XShortClosure__Group__0 )
-            // InternalMenuDsl.g:1120:4: rule__XShortClosure__Group__0
+            // InternalMenuDsl.g:1170:3: ( rule__XShortClosure__Group__0 )
+            // InternalMenuDsl.g:1170:4: rule__XShortClosure__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group__0();
@@ -3764,11 +3936,11 @@
 
 
     // $ANTLR start "entryRuleXParenthesizedExpression"
-    // InternalMenuDsl.g:1129:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
+    // InternalMenuDsl.g:1179:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
     public final void entryRuleXParenthesizedExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1130:1: ( ruleXParenthesizedExpression EOF )
-            // InternalMenuDsl.g:1131:1: ruleXParenthesizedExpression EOF
+            // InternalMenuDsl.g:1180:1: ( ruleXParenthesizedExpression EOF )
+            // InternalMenuDsl.g:1181:1: ruleXParenthesizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionRule()); 
@@ -3798,23 +3970,23 @@
 
 
     // $ANTLR start "ruleXParenthesizedExpression"
-    // InternalMenuDsl.g:1138:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:1188:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
     public final void ruleXParenthesizedExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1142:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:1143:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // InternalMenuDsl.g:1192:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:1193:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:1143:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
-            // InternalMenuDsl.g:1144:3: ( rule__XParenthesizedExpression__Group__0 )
+            // InternalMenuDsl.g:1193:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // InternalMenuDsl.g:1194:3: ( rule__XParenthesizedExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1145:3: ( rule__XParenthesizedExpression__Group__0 )
-            // InternalMenuDsl.g:1145:4: rule__XParenthesizedExpression__Group__0
+            // InternalMenuDsl.g:1195:3: ( rule__XParenthesizedExpression__Group__0 )
+            // InternalMenuDsl.g:1195:4: rule__XParenthesizedExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XParenthesizedExpression__Group__0();
@@ -3849,11 +4021,11 @@
 
 
     // $ANTLR start "entryRuleXIfExpression"
-    // InternalMenuDsl.g:1154:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
+    // InternalMenuDsl.g:1204:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
     public final void entryRuleXIfExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1155:1: ( ruleXIfExpression EOF )
-            // InternalMenuDsl.g:1156:1: ruleXIfExpression EOF
+            // InternalMenuDsl.g:1205:1: ( ruleXIfExpression EOF )
+            // InternalMenuDsl.g:1206:1: ruleXIfExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionRule()); 
@@ -3883,23 +4055,23 @@
 
 
     // $ANTLR start "ruleXIfExpression"
-    // InternalMenuDsl.g:1163:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:1213:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
     public final void ruleXIfExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1167:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:1168:2: ( ( rule__XIfExpression__Group__0 ) )
+            // InternalMenuDsl.g:1217:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:1218:2: ( ( rule__XIfExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:1168:2: ( ( rule__XIfExpression__Group__0 ) )
-            // InternalMenuDsl.g:1169:3: ( rule__XIfExpression__Group__0 )
+            // InternalMenuDsl.g:1218:2: ( ( rule__XIfExpression__Group__0 ) )
+            // InternalMenuDsl.g:1219:3: ( rule__XIfExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1170:3: ( rule__XIfExpression__Group__0 )
-            // InternalMenuDsl.g:1170:4: rule__XIfExpression__Group__0
+            // InternalMenuDsl.g:1220:3: ( rule__XIfExpression__Group__0 )
+            // InternalMenuDsl.g:1220:4: rule__XIfExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__Group__0();
@@ -3934,11 +4106,11 @@
 
 
     // $ANTLR start "entryRuleXSwitchExpression"
-    // InternalMenuDsl.g:1179:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
+    // InternalMenuDsl.g:1229:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
     public final void entryRuleXSwitchExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1180:1: ( ruleXSwitchExpression EOF )
-            // InternalMenuDsl.g:1181:1: ruleXSwitchExpression EOF
+            // InternalMenuDsl.g:1230:1: ( ruleXSwitchExpression EOF )
+            // InternalMenuDsl.g:1231:1: ruleXSwitchExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionRule()); 
@@ -3968,23 +4140,23 @@
 
 
     // $ANTLR start "ruleXSwitchExpression"
-    // InternalMenuDsl.g:1188:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:1238:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
     public final void ruleXSwitchExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1192:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:1193:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            // InternalMenuDsl.g:1242:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:1243:2: ( ( rule__XSwitchExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:1193:2: ( ( rule__XSwitchExpression__Group__0 ) )
-            // InternalMenuDsl.g:1194:3: ( rule__XSwitchExpression__Group__0 )
+            // InternalMenuDsl.g:1243:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            // InternalMenuDsl.g:1244:3: ( rule__XSwitchExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1195:3: ( rule__XSwitchExpression__Group__0 )
-            // InternalMenuDsl.g:1195:4: rule__XSwitchExpression__Group__0
+            // InternalMenuDsl.g:1245:3: ( rule__XSwitchExpression__Group__0 )
+            // InternalMenuDsl.g:1245:4: rule__XSwitchExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group__0();
@@ -4019,11 +4191,11 @@
 
 
     // $ANTLR start "entryRuleXCasePart"
-    // InternalMenuDsl.g:1204:1: entryRuleXCasePart : ruleXCasePart EOF ;
+    // InternalMenuDsl.g:1254:1: entryRuleXCasePart : ruleXCasePart EOF ;
     public final void entryRuleXCasePart() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1205:1: ( ruleXCasePart EOF )
-            // InternalMenuDsl.g:1206:1: ruleXCasePart EOF
+            // InternalMenuDsl.g:1255:1: ( ruleXCasePart EOF )
+            // InternalMenuDsl.g:1256:1: ruleXCasePart EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartRule()); 
@@ -4053,23 +4225,23 @@
 
 
     // $ANTLR start "ruleXCasePart"
-    // InternalMenuDsl.g:1213:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
+    // InternalMenuDsl.g:1263:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
     public final void ruleXCasePart() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1217:2: ( ( ( rule__XCasePart__Group__0 ) ) )
-            // InternalMenuDsl.g:1218:2: ( ( rule__XCasePart__Group__0 ) )
+            // InternalMenuDsl.g:1267:2: ( ( ( rule__XCasePart__Group__0 ) ) )
+            // InternalMenuDsl.g:1268:2: ( ( rule__XCasePart__Group__0 ) )
             {
-            // InternalMenuDsl.g:1218:2: ( ( rule__XCasePart__Group__0 ) )
-            // InternalMenuDsl.g:1219:3: ( rule__XCasePart__Group__0 )
+            // InternalMenuDsl.g:1268:2: ( ( rule__XCasePart__Group__0 ) )
+            // InternalMenuDsl.g:1269:3: ( rule__XCasePart__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1220:3: ( rule__XCasePart__Group__0 )
-            // InternalMenuDsl.g:1220:4: rule__XCasePart__Group__0
+            // InternalMenuDsl.g:1270:3: ( rule__XCasePart__Group__0 )
+            // InternalMenuDsl.g:1270:4: rule__XCasePart__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group__0();
@@ -4104,11 +4276,11 @@
 
 
     // $ANTLR start "entryRuleXForLoopExpression"
-    // InternalMenuDsl.g:1229:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
+    // InternalMenuDsl.g:1279:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
     public final void entryRuleXForLoopExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1230:1: ( ruleXForLoopExpression EOF )
-            // InternalMenuDsl.g:1231:1: ruleXForLoopExpression EOF
+            // InternalMenuDsl.g:1280:1: ( ruleXForLoopExpression EOF )
+            // InternalMenuDsl.g:1281:1: ruleXForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionRule()); 
@@ -4138,23 +4310,23 @@
 
 
     // $ANTLR start "ruleXForLoopExpression"
-    // InternalMenuDsl.g:1238:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:1288:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
     public final void ruleXForLoopExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1242:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:1243:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            // InternalMenuDsl.g:1292:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:1293:2: ( ( rule__XForLoopExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:1243:2: ( ( rule__XForLoopExpression__Group__0 ) )
-            // InternalMenuDsl.g:1244:3: ( rule__XForLoopExpression__Group__0 )
+            // InternalMenuDsl.g:1293:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            // InternalMenuDsl.g:1294:3: ( rule__XForLoopExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1245:3: ( rule__XForLoopExpression__Group__0 )
-            // InternalMenuDsl.g:1245:4: rule__XForLoopExpression__Group__0
+            // InternalMenuDsl.g:1295:3: ( rule__XForLoopExpression__Group__0 )
+            // InternalMenuDsl.g:1295:4: rule__XForLoopExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group__0();
@@ -4189,11 +4361,11 @@
 
 
     // $ANTLR start "entryRuleXBasicForLoopExpression"
-    // InternalMenuDsl.g:1254:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
+    // InternalMenuDsl.g:1304:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
     public final void entryRuleXBasicForLoopExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1255:1: ( ruleXBasicForLoopExpression EOF )
-            // InternalMenuDsl.g:1256:1: ruleXBasicForLoopExpression EOF
+            // InternalMenuDsl.g:1305:1: ( ruleXBasicForLoopExpression EOF )
+            // InternalMenuDsl.g:1306:1: ruleXBasicForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionRule()); 
@@ -4223,23 +4395,23 @@
 
 
     // $ANTLR start "ruleXBasicForLoopExpression"
-    // InternalMenuDsl.g:1263:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:1313:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
     public final void ruleXBasicForLoopExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1267:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:1268:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // InternalMenuDsl.g:1317:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:1318:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:1268:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
-            // InternalMenuDsl.g:1269:3: ( rule__XBasicForLoopExpression__Group__0 )
+            // InternalMenuDsl.g:1318:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // InternalMenuDsl.g:1319:3: ( rule__XBasicForLoopExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1270:3: ( rule__XBasicForLoopExpression__Group__0 )
-            // InternalMenuDsl.g:1270:4: rule__XBasicForLoopExpression__Group__0
+            // InternalMenuDsl.g:1320:3: ( rule__XBasicForLoopExpression__Group__0 )
+            // InternalMenuDsl.g:1320:4: rule__XBasicForLoopExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group__0();
@@ -4274,11 +4446,11 @@
 
 
     // $ANTLR start "entryRuleXWhileExpression"
-    // InternalMenuDsl.g:1279:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
+    // InternalMenuDsl.g:1329:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
     public final void entryRuleXWhileExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1280:1: ( ruleXWhileExpression EOF )
-            // InternalMenuDsl.g:1281:1: ruleXWhileExpression EOF
+            // InternalMenuDsl.g:1330:1: ( ruleXWhileExpression EOF )
+            // InternalMenuDsl.g:1331:1: ruleXWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionRule()); 
@@ -4308,23 +4480,23 @@
 
 
     // $ANTLR start "ruleXWhileExpression"
-    // InternalMenuDsl.g:1288:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:1338:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
     public final void ruleXWhileExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1292:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:1293:2: ( ( rule__XWhileExpression__Group__0 ) )
+            // InternalMenuDsl.g:1342:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:1343:2: ( ( rule__XWhileExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:1293:2: ( ( rule__XWhileExpression__Group__0 ) )
-            // InternalMenuDsl.g:1294:3: ( rule__XWhileExpression__Group__0 )
+            // InternalMenuDsl.g:1343:2: ( ( rule__XWhileExpression__Group__0 ) )
+            // InternalMenuDsl.g:1344:3: ( rule__XWhileExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1295:3: ( rule__XWhileExpression__Group__0 )
-            // InternalMenuDsl.g:1295:4: rule__XWhileExpression__Group__0
+            // InternalMenuDsl.g:1345:3: ( rule__XWhileExpression__Group__0 )
+            // InternalMenuDsl.g:1345:4: rule__XWhileExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__Group__0();
@@ -4359,11 +4531,11 @@
 
 
     // $ANTLR start "entryRuleXDoWhileExpression"
-    // InternalMenuDsl.g:1304:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
+    // InternalMenuDsl.g:1354:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
     public final void entryRuleXDoWhileExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1305:1: ( ruleXDoWhileExpression EOF )
-            // InternalMenuDsl.g:1306:1: ruleXDoWhileExpression EOF
+            // InternalMenuDsl.g:1355:1: ( ruleXDoWhileExpression EOF )
+            // InternalMenuDsl.g:1356:1: ruleXDoWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionRule()); 
@@ -4393,23 +4565,23 @@
 
 
     // $ANTLR start "ruleXDoWhileExpression"
-    // InternalMenuDsl.g:1313:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:1363:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
     public final void ruleXDoWhileExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1317:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:1318:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // InternalMenuDsl.g:1367:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:1368:2: ( ( rule__XDoWhileExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:1318:2: ( ( rule__XDoWhileExpression__Group__0 ) )
-            // InternalMenuDsl.g:1319:3: ( rule__XDoWhileExpression__Group__0 )
+            // InternalMenuDsl.g:1368:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // InternalMenuDsl.g:1369:3: ( rule__XDoWhileExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1320:3: ( rule__XDoWhileExpression__Group__0 )
-            // InternalMenuDsl.g:1320:4: rule__XDoWhileExpression__Group__0
+            // InternalMenuDsl.g:1370:3: ( rule__XDoWhileExpression__Group__0 )
+            // InternalMenuDsl.g:1370:4: rule__XDoWhileExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__Group__0();
@@ -4444,11 +4616,11 @@
 
 
     // $ANTLR start "entryRuleXBlockExpression"
-    // InternalMenuDsl.g:1329:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
+    // InternalMenuDsl.g:1379:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
     public final void entryRuleXBlockExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1330:1: ( ruleXBlockExpression EOF )
-            // InternalMenuDsl.g:1331:1: ruleXBlockExpression EOF
+            // InternalMenuDsl.g:1380:1: ( ruleXBlockExpression EOF )
+            // InternalMenuDsl.g:1381:1: ruleXBlockExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionRule()); 
@@ -4478,23 +4650,23 @@
 
 
     // $ANTLR start "ruleXBlockExpression"
-    // InternalMenuDsl.g:1338:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:1388:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
     public final void ruleXBlockExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1342:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:1343:2: ( ( rule__XBlockExpression__Group__0 ) )
+            // InternalMenuDsl.g:1392:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:1393:2: ( ( rule__XBlockExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:1343:2: ( ( rule__XBlockExpression__Group__0 ) )
-            // InternalMenuDsl.g:1344:3: ( rule__XBlockExpression__Group__0 )
+            // InternalMenuDsl.g:1393:2: ( ( rule__XBlockExpression__Group__0 ) )
+            // InternalMenuDsl.g:1394:3: ( rule__XBlockExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1345:3: ( rule__XBlockExpression__Group__0 )
-            // InternalMenuDsl.g:1345:4: rule__XBlockExpression__Group__0
+            // InternalMenuDsl.g:1395:3: ( rule__XBlockExpression__Group__0 )
+            // InternalMenuDsl.g:1395:4: rule__XBlockExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__Group__0();
@@ -4529,11 +4701,11 @@
 
 
     // $ANTLR start "entryRuleXExpressionOrVarDeclaration"
-    // InternalMenuDsl.g:1354:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
+    // InternalMenuDsl.g:1404:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
     public final void entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1355:1: ( ruleXExpressionOrVarDeclaration EOF )
-            // InternalMenuDsl.g:1356:1: ruleXExpressionOrVarDeclaration EOF
+            // InternalMenuDsl.g:1405:1: ( ruleXExpressionOrVarDeclaration EOF )
+            // InternalMenuDsl.g:1406:1: ruleXExpressionOrVarDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionOrVarDeclarationRule()); 
@@ -4563,23 +4735,23 @@
 
 
     // $ANTLR start "ruleXExpressionOrVarDeclaration"
-    // InternalMenuDsl.g:1363:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
+    // InternalMenuDsl.g:1413:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
     public final void ruleXExpressionOrVarDeclaration() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1367:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
-            // InternalMenuDsl.g:1368:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // InternalMenuDsl.g:1417:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
+            // InternalMenuDsl.g:1418:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
             {
-            // InternalMenuDsl.g:1368:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
-            // InternalMenuDsl.g:1369:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // InternalMenuDsl.g:1418:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // InternalMenuDsl.g:1419:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:1370:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
-            // InternalMenuDsl.g:1370:4: rule__XExpressionOrVarDeclaration__Alternatives
+            // InternalMenuDsl.g:1420:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // InternalMenuDsl.g:1420:4: rule__XExpressionOrVarDeclaration__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionOrVarDeclaration__Alternatives();
@@ -4614,11 +4786,11 @@
 
 
     // $ANTLR start "entryRuleXVariableDeclaration"
-    // InternalMenuDsl.g:1379:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
+    // InternalMenuDsl.g:1429:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
     public final void entryRuleXVariableDeclaration() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1380:1: ( ruleXVariableDeclaration EOF )
-            // InternalMenuDsl.g:1381:1: ruleXVariableDeclaration EOF
+            // InternalMenuDsl.g:1430:1: ( ruleXVariableDeclaration EOF )
+            // InternalMenuDsl.g:1431:1: ruleXVariableDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationRule()); 
@@ -4648,23 +4820,23 @@
 
 
     // $ANTLR start "ruleXVariableDeclaration"
-    // InternalMenuDsl.g:1388:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
+    // InternalMenuDsl.g:1438:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
     public final void ruleXVariableDeclaration() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1392:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
-            // InternalMenuDsl.g:1393:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // InternalMenuDsl.g:1442:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
+            // InternalMenuDsl.g:1443:2: ( ( rule__XVariableDeclaration__Group__0 ) )
             {
-            // InternalMenuDsl.g:1393:2: ( ( rule__XVariableDeclaration__Group__0 ) )
-            // InternalMenuDsl.g:1394:3: ( rule__XVariableDeclaration__Group__0 )
+            // InternalMenuDsl.g:1443:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // InternalMenuDsl.g:1444:3: ( rule__XVariableDeclaration__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1395:3: ( rule__XVariableDeclaration__Group__0 )
-            // InternalMenuDsl.g:1395:4: rule__XVariableDeclaration__Group__0
+            // InternalMenuDsl.g:1445:3: ( rule__XVariableDeclaration__Group__0 )
+            // InternalMenuDsl.g:1445:4: rule__XVariableDeclaration__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group__0();
@@ -4699,11 +4871,11 @@
 
 
     // $ANTLR start "entryRuleJvmFormalParameter"
-    // InternalMenuDsl.g:1404:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
+    // InternalMenuDsl.g:1454:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
     public final void entryRuleJvmFormalParameter() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1405:1: ( ruleJvmFormalParameter EOF )
-            // InternalMenuDsl.g:1406:1: ruleJvmFormalParameter EOF
+            // InternalMenuDsl.g:1455:1: ( ruleJvmFormalParameter EOF )
+            // InternalMenuDsl.g:1456:1: ruleJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterRule()); 
@@ -4733,23 +4905,23 @@
 
 
     // $ANTLR start "ruleJvmFormalParameter"
-    // InternalMenuDsl.g:1413:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
+    // InternalMenuDsl.g:1463:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
     public final void ruleJvmFormalParameter() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1417:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
-            // InternalMenuDsl.g:1418:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // InternalMenuDsl.g:1467:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
+            // InternalMenuDsl.g:1468:2: ( ( rule__JvmFormalParameter__Group__0 ) )
             {
-            // InternalMenuDsl.g:1418:2: ( ( rule__JvmFormalParameter__Group__0 ) )
-            // InternalMenuDsl.g:1419:3: ( rule__JvmFormalParameter__Group__0 )
+            // InternalMenuDsl.g:1468:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // InternalMenuDsl.g:1469:3: ( rule__JvmFormalParameter__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1420:3: ( rule__JvmFormalParameter__Group__0 )
-            // InternalMenuDsl.g:1420:4: rule__JvmFormalParameter__Group__0
+            // InternalMenuDsl.g:1470:3: ( rule__JvmFormalParameter__Group__0 )
+            // InternalMenuDsl.g:1470:4: rule__JvmFormalParameter__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmFormalParameter__Group__0();
@@ -4784,11 +4956,11 @@
 
 
     // $ANTLR start "entryRuleFullJvmFormalParameter"
-    // InternalMenuDsl.g:1429:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
+    // InternalMenuDsl.g:1479:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
     public final void entryRuleFullJvmFormalParameter() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1430:1: ( ruleFullJvmFormalParameter EOF )
-            // InternalMenuDsl.g:1431:1: ruleFullJvmFormalParameter EOF
+            // InternalMenuDsl.g:1480:1: ( ruleFullJvmFormalParameter EOF )
+            // InternalMenuDsl.g:1481:1: ruleFullJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterRule()); 
@@ -4818,23 +4990,23 @@
 
 
     // $ANTLR start "ruleFullJvmFormalParameter"
-    // InternalMenuDsl.g:1438:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
+    // InternalMenuDsl.g:1488:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
     public final void ruleFullJvmFormalParameter() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1442:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
-            // InternalMenuDsl.g:1443:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // InternalMenuDsl.g:1492:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
+            // InternalMenuDsl.g:1493:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
             {
-            // InternalMenuDsl.g:1443:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
-            // InternalMenuDsl.g:1444:3: ( rule__FullJvmFormalParameter__Group__0 )
+            // InternalMenuDsl.g:1493:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // InternalMenuDsl.g:1494:3: ( rule__FullJvmFormalParameter__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1445:3: ( rule__FullJvmFormalParameter__Group__0 )
-            // InternalMenuDsl.g:1445:4: rule__FullJvmFormalParameter__Group__0
+            // InternalMenuDsl.g:1495:3: ( rule__FullJvmFormalParameter__Group__0 )
+            // InternalMenuDsl.g:1495:4: rule__FullJvmFormalParameter__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__Group__0();
@@ -4869,11 +5041,11 @@
 
 
     // $ANTLR start "entryRuleXFeatureCall"
-    // InternalMenuDsl.g:1454:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
+    // InternalMenuDsl.g:1504:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
     public final void entryRuleXFeatureCall() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1455:1: ( ruleXFeatureCall EOF )
-            // InternalMenuDsl.g:1456:1: ruleXFeatureCall EOF
+            // InternalMenuDsl.g:1505:1: ( ruleXFeatureCall EOF )
+            // InternalMenuDsl.g:1506:1: ruleXFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallRule()); 
@@ -4903,23 +5075,23 @@
 
 
     // $ANTLR start "ruleXFeatureCall"
-    // InternalMenuDsl.g:1463:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
+    // InternalMenuDsl.g:1513:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
     public final void ruleXFeatureCall() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1467:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
-            // InternalMenuDsl.g:1468:2: ( ( rule__XFeatureCall__Group__0 ) )
+            // InternalMenuDsl.g:1517:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
+            // InternalMenuDsl.g:1518:2: ( ( rule__XFeatureCall__Group__0 ) )
             {
-            // InternalMenuDsl.g:1468:2: ( ( rule__XFeatureCall__Group__0 ) )
-            // InternalMenuDsl.g:1469:3: ( rule__XFeatureCall__Group__0 )
+            // InternalMenuDsl.g:1518:2: ( ( rule__XFeatureCall__Group__0 ) )
+            // InternalMenuDsl.g:1519:3: ( rule__XFeatureCall__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1470:3: ( rule__XFeatureCall__Group__0 )
-            // InternalMenuDsl.g:1470:4: rule__XFeatureCall__Group__0
+            // InternalMenuDsl.g:1520:3: ( rule__XFeatureCall__Group__0 )
+            // InternalMenuDsl.g:1520:4: rule__XFeatureCall__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group__0();
@@ -4954,11 +5126,11 @@
 
 
     // $ANTLR start "entryRuleFeatureCallID"
-    // InternalMenuDsl.g:1479:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
+    // InternalMenuDsl.g:1529:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
     public final void entryRuleFeatureCallID() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1480:1: ( ruleFeatureCallID EOF )
-            // InternalMenuDsl.g:1481:1: ruleFeatureCallID EOF
+            // InternalMenuDsl.g:1530:1: ( ruleFeatureCallID EOF )
+            // InternalMenuDsl.g:1531:1: ruleFeatureCallID EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFeatureCallIDRule()); 
@@ -4988,23 +5160,23 @@
 
 
     // $ANTLR start "ruleFeatureCallID"
-    // InternalMenuDsl.g:1488:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
+    // InternalMenuDsl.g:1538:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
     public final void ruleFeatureCallID() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1492:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
-            // InternalMenuDsl.g:1493:2: ( ( rule__FeatureCallID__Alternatives ) )
+            // InternalMenuDsl.g:1542:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
+            // InternalMenuDsl.g:1543:2: ( ( rule__FeatureCallID__Alternatives ) )
             {
-            // InternalMenuDsl.g:1493:2: ( ( rule__FeatureCallID__Alternatives ) )
-            // InternalMenuDsl.g:1494:3: ( rule__FeatureCallID__Alternatives )
+            // InternalMenuDsl.g:1543:2: ( ( rule__FeatureCallID__Alternatives ) )
+            // InternalMenuDsl.g:1544:3: ( rule__FeatureCallID__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:1495:3: ( rule__FeatureCallID__Alternatives )
-            // InternalMenuDsl.g:1495:4: rule__FeatureCallID__Alternatives
+            // InternalMenuDsl.g:1545:3: ( rule__FeatureCallID__Alternatives )
+            // InternalMenuDsl.g:1545:4: rule__FeatureCallID__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__FeatureCallID__Alternatives();
@@ -5039,11 +5211,11 @@
 
 
     // $ANTLR start "entryRuleIdOrSuper"
-    // InternalMenuDsl.g:1504:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
+    // InternalMenuDsl.g:1554:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
     public final void entryRuleIdOrSuper() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1505:1: ( ruleIdOrSuper EOF )
-            // InternalMenuDsl.g:1506:1: ruleIdOrSuper EOF
+            // InternalMenuDsl.g:1555:1: ( ruleIdOrSuper EOF )
+            // InternalMenuDsl.g:1556:1: ruleIdOrSuper EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIdOrSuperRule()); 
@@ -5073,23 +5245,23 @@
 
 
     // $ANTLR start "ruleIdOrSuper"
-    // InternalMenuDsl.g:1513:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
+    // InternalMenuDsl.g:1563:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
     public final void ruleIdOrSuper() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1517:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
-            // InternalMenuDsl.g:1518:2: ( ( rule__IdOrSuper__Alternatives ) )
+            // InternalMenuDsl.g:1567:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
+            // InternalMenuDsl.g:1568:2: ( ( rule__IdOrSuper__Alternatives ) )
             {
-            // InternalMenuDsl.g:1518:2: ( ( rule__IdOrSuper__Alternatives ) )
-            // InternalMenuDsl.g:1519:3: ( rule__IdOrSuper__Alternatives )
+            // InternalMenuDsl.g:1568:2: ( ( rule__IdOrSuper__Alternatives ) )
+            // InternalMenuDsl.g:1569:3: ( rule__IdOrSuper__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIdOrSuperAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:1520:3: ( rule__IdOrSuper__Alternatives )
-            // InternalMenuDsl.g:1520:4: rule__IdOrSuper__Alternatives
+            // InternalMenuDsl.g:1570:3: ( rule__IdOrSuper__Alternatives )
+            // InternalMenuDsl.g:1570:4: rule__IdOrSuper__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__IdOrSuper__Alternatives();
@@ -5124,11 +5296,11 @@
 
 
     // $ANTLR start "entryRuleXConstructorCall"
-    // InternalMenuDsl.g:1529:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
+    // InternalMenuDsl.g:1579:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
     public final void entryRuleXConstructorCall() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1530:1: ( ruleXConstructorCall EOF )
-            // InternalMenuDsl.g:1531:1: ruleXConstructorCall EOF
+            // InternalMenuDsl.g:1580:1: ( ruleXConstructorCall EOF )
+            // InternalMenuDsl.g:1581:1: ruleXConstructorCall EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallRule()); 
@@ -5158,23 +5330,23 @@
 
 
     // $ANTLR start "ruleXConstructorCall"
-    // InternalMenuDsl.g:1538:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
+    // InternalMenuDsl.g:1588:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
     public final void ruleXConstructorCall() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1542:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
-            // InternalMenuDsl.g:1543:2: ( ( rule__XConstructorCall__Group__0 ) )
+            // InternalMenuDsl.g:1592:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
+            // InternalMenuDsl.g:1593:2: ( ( rule__XConstructorCall__Group__0 ) )
             {
-            // InternalMenuDsl.g:1543:2: ( ( rule__XConstructorCall__Group__0 ) )
-            // InternalMenuDsl.g:1544:3: ( rule__XConstructorCall__Group__0 )
+            // InternalMenuDsl.g:1593:2: ( ( rule__XConstructorCall__Group__0 ) )
+            // InternalMenuDsl.g:1594:3: ( rule__XConstructorCall__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1545:3: ( rule__XConstructorCall__Group__0 )
-            // InternalMenuDsl.g:1545:4: rule__XConstructorCall__Group__0
+            // InternalMenuDsl.g:1595:3: ( rule__XConstructorCall__Group__0 )
+            // InternalMenuDsl.g:1595:4: rule__XConstructorCall__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group__0();
@@ -5209,11 +5381,11 @@
 
 
     // $ANTLR start "entryRuleXBooleanLiteral"
-    // InternalMenuDsl.g:1554:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
+    // InternalMenuDsl.g:1604:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
     public final void entryRuleXBooleanLiteral() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1555:1: ( ruleXBooleanLiteral EOF )
-            // InternalMenuDsl.g:1556:1: ruleXBooleanLiteral EOF
+            // InternalMenuDsl.g:1605:1: ( ruleXBooleanLiteral EOF )
+            // InternalMenuDsl.g:1606:1: ruleXBooleanLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralRule()); 
@@ -5243,23 +5415,23 @@
 
 
     // $ANTLR start "ruleXBooleanLiteral"
-    // InternalMenuDsl.g:1563:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
+    // InternalMenuDsl.g:1613:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
     public final void ruleXBooleanLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1567:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
-            // InternalMenuDsl.g:1568:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // InternalMenuDsl.g:1617:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
+            // InternalMenuDsl.g:1618:2: ( ( rule__XBooleanLiteral__Group__0 ) )
             {
-            // InternalMenuDsl.g:1568:2: ( ( rule__XBooleanLiteral__Group__0 ) )
-            // InternalMenuDsl.g:1569:3: ( rule__XBooleanLiteral__Group__0 )
+            // InternalMenuDsl.g:1618:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // InternalMenuDsl.g:1619:3: ( rule__XBooleanLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1570:3: ( rule__XBooleanLiteral__Group__0 )
-            // InternalMenuDsl.g:1570:4: rule__XBooleanLiteral__Group__0
+            // InternalMenuDsl.g:1620:3: ( rule__XBooleanLiteral__Group__0 )
+            // InternalMenuDsl.g:1620:4: rule__XBooleanLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XBooleanLiteral__Group__0();
@@ -5294,11 +5466,11 @@
 
 
     // $ANTLR start "entryRuleXNullLiteral"
-    // InternalMenuDsl.g:1579:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
+    // InternalMenuDsl.g:1629:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
     public final void entryRuleXNullLiteral() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1580:1: ( ruleXNullLiteral EOF )
-            // InternalMenuDsl.g:1581:1: ruleXNullLiteral EOF
+            // InternalMenuDsl.g:1630:1: ( ruleXNullLiteral EOF )
+            // InternalMenuDsl.g:1631:1: ruleXNullLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralRule()); 
@@ -5328,23 +5500,23 @@
 
 
     // $ANTLR start "ruleXNullLiteral"
-    // InternalMenuDsl.g:1588:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
+    // InternalMenuDsl.g:1638:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
     public final void ruleXNullLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1592:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
-            // InternalMenuDsl.g:1593:2: ( ( rule__XNullLiteral__Group__0 ) )
+            // InternalMenuDsl.g:1642:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
+            // InternalMenuDsl.g:1643:2: ( ( rule__XNullLiteral__Group__0 ) )
             {
-            // InternalMenuDsl.g:1593:2: ( ( rule__XNullLiteral__Group__0 ) )
-            // InternalMenuDsl.g:1594:3: ( rule__XNullLiteral__Group__0 )
+            // InternalMenuDsl.g:1643:2: ( ( rule__XNullLiteral__Group__0 ) )
+            // InternalMenuDsl.g:1644:3: ( rule__XNullLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1595:3: ( rule__XNullLiteral__Group__0 )
-            // InternalMenuDsl.g:1595:4: rule__XNullLiteral__Group__0
+            // InternalMenuDsl.g:1645:3: ( rule__XNullLiteral__Group__0 )
+            // InternalMenuDsl.g:1645:4: rule__XNullLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XNullLiteral__Group__0();
@@ -5379,11 +5551,11 @@
 
 
     // $ANTLR start "entryRuleXNumberLiteral"
-    // InternalMenuDsl.g:1604:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
+    // InternalMenuDsl.g:1654:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
     public final void entryRuleXNumberLiteral() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1605:1: ( ruleXNumberLiteral EOF )
-            // InternalMenuDsl.g:1606:1: ruleXNumberLiteral EOF
+            // InternalMenuDsl.g:1655:1: ( ruleXNumberLiteral EOF )
+            // InternalMenuDsl.g:1656:1: ruleXNumberLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralRule()); 
@@ -5413,23 +5585,23 @@
 
 
     // $ANTLR start "ruleXNumberLiteral"
-    // InternalMenuDsl.g:1613:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
+    // InternalMenuDsl.g:1663:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
     public final void ruleXNumberLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1617:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
-            // InternalMenuDsl.g:1618:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            // InternalMenuDsl.g:1667:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
+            // InternalMenuDsl.g:1668:2: ( ( rule__XNumberLiteral__Group__0 ) )
             {
-            // InternalMenuDsl.g:1618:2: ( ( rule__XNumberLiteral__Group__0 ) )
-            // InternalMenuDsl.g:1619:3: ( rule__XNumberLiteral__Group__0 )
+            // InternalMenuDsl.g:1668:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            // InternalMenuDsl.g:1669:3: ( rule__XNumberLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1620:3: ( rule__XNumberLiteral__Group__0 )
-            // InternalMenuDsl.g:1620:4: rule__XNumberLiteral__Group__0
+            // InternalMenuDsl.g:1670:3: ( rule__XNumberLiteral__Group__0 )
+            // InternalMenuDsl.g:1670:4: rule__XNumberLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XNumberLiteral__Group__0();
@@ -5464,11 +5636,11 @@
 
 
     // $ANTLR start "entryRuleXStringLiteral"
-    // InternalMenuDsl.g:1629:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
+    // InternalMenuDsl.g:1679:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
     public final void entryRuleXStringLiteral() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1630:1: ( ruleXStringLiteral EOF )
-            // InternalMenuDsl.g:1631:1: ruleXStringLiteral EOF
+            // InternalMenuDsl.g:1680:1: ( ruleXStringLiteral EOF )
+            // InternalMenuDsl.g:1681:1: ruleXStringLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralRule()); 
@@ -5498,23 +5670,23 @@
 
 
     // $ANTLR start "ruleXStringLiteral"
-    // InternalMenuDsl.g:1638:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
+    // InternalMenuDsl.g:1688:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
     public final void ruleXStringLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1642:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
-            // InternalMenuDsl.g:1643:2: ( ( rule__XStringLiteral__Group__0 ) )
+            // InternalMenuDsl.g:1692:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
+            // InternalMenuDsl.g:1693:2: ( ( rule__XStringLiteral__Group__0 ) )
             {
-            // InternalMenuDsl.g:1643:2: ( ( rule__XStringLiteral__Group__0 ) )
-            // InternalMenuDsl.g:1644:3: ( rule__XStringLiteral__Group__0 )
+            // InternalMenuDsl.g:1693:2: ( ( rule__XStringLiteral__Group__0 ) )
+            // InternalMenuDsl.g:1694:3: ( rule__XStringLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1645:3: ( rule__XStringLiteral__Group__0 )
-            // InternalMenuDsl.g:1645:4: rule__XStringLiteral__Group__0
+            // InternalMenuDsl.g:1695:3: ( rule__XStringLiteral__Group__0 )
+            // InternalMenuDsl.g:1695:4: rule__XStringLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XStringLiteral__Group__0();
@@ -5549,11 +5721,11 @@
 
 
     // $ANTLR start "entryRuleXTypeLiteral"
-    // InternalMenuDsl.g:1654:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
+    // InternalMenuDsl.g:1704:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
     public final void entryRuleXTypeLiteral() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1655:1: ( ruleXTypeLiteral EOF )
-            // InternalMenuDsl.g:1656:1: ruleXTypeLiteral EOF
+            // InternalMenuDsl.g:1705:1: ( ruleXTypeLiteral EOF )
+            // InternalMenuDsl.g:1706:1: ruleXTypeLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralRule()); 
@@ -5583,23 +5755,23 @@
 
 
     // $ANTLR start "ruleXTypeLiteral"
-    // InternalMenuDsl.g:1663:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
+    // InternalMenuDsl.g:1713:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
     public final void ruleXTypeLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1667:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
-            // InternalMenuDsl.g:1668:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            // InternalMenuDsl.g:1717:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
+            // InternalMenuDsl.g:1718:2: ( ( rule__XTypeLiteral__Group__0 ) )
             {
-            // InternalMenuDsl.g:1668:2: ( ( rule__XTypeLiteral__Group__0 ) )
-            // InternalMenuDsl.g:1669:3: ( rule__XTypeLiteral__Group__0 )
+            // InternalMenuDsl.g:1718:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            // InternalMenuDsl.g:1719:3: ( rule__XTypeLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1670:3: ( rule__XTypeLiteral__Group__0 )
-            // InternalMenuDsl.g:1670:4: rule__XTypeLiteral__Group__0
+            // InternalMenuDsl.g:1720:3: ( rule__XTypeLiteral__Group__0 )
+            // InternalMenuDsl.g:1720:4: rule__XTypeLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XTypeLiteral__Group__0();
@@ -5634,11 +5806,11 @@
 
 
     // $ANTLR start "entryRuleXThrowExpression"
-    // InternalMenuDsl.g:1679:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
+    // InternalMenuDsl.g:1729:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
     public final void entryRuleXThrowExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1680:1: ( ruleXThrowExpression EOF )
-            // InternalMenuDsl.g:1681:1: ruleXThrowExpression EOF
+            // InternalMenuDsl.g:1730:1: ( ruleXThrowExpression EOF )
+            // InternalMenuDsl.g:1731:1: ruleXThrowExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionRule()); 
@@ -5668,23 +5840,23 @@
 
 
     // $ANTLR start "ruleXThrowExpression"
-    // InternalMenuDsl.g:1688:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:1738:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
     public final void ruleXThrowExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1692:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:1693:2: ( ( rule__XThrowExpression__Group__0 ) )
+            // InternalMenuDsl.g:1742:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:1743:2: ( ( rule__XThrowExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:1693:2: ( ( rule__XThrowExpression__Group__0 ) )
-            // InternalMenuDsl.g:1694:3: ( rule__XThrowExpression__Group__0 )
+            // InternalMenuDsl.g:1743:2: ( ( rule__XThrowExpression__Group__0 ) )
+            // InternalMenuDsl.g:1744:3: ( rule__XThrowExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1695:3: ( rule__XThrowExpression__Group__0 )
-            // InternalMenuDsl.g:1695:4: rule__XThrowExpression__Group__0
+            // InternalMenuDsl.g:1745:3: ( rule__XThrowExpression__Group__0 )
+            // InternalMenuDsl.g:1745:4: rule__XThrowExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XThrowExpression__Group__0();
@@ -5719,11 +5891,11 @@
 
 
     // $ANTLR start "entryRuleXReturnExpression"
-    // InternalMenuDsl.g:1704:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
+    // InternalMenuDsl.g:1754:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
     public final void entryRuleXReturnExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1705:1: ( ruleXReturnExpression EOF )
-            // InternalMenuDsl.g:1706:1: ruleXReturnExpression EOF
+            // InternalMenuDsl.g:1755:1: ( ruleXReturnExpression EOF )
+            // InternalMenuDsl.g:1756:1: ruleXReturnExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionRule()); 
@@ -5753,23 +5925,23 @@
 
 
     // $ANTLR start "ruleXReturnExpression"
-    // InternalMenuDsl.g:1713:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:1763:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
     public final void ruleXReturnExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1717:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:1718:2: ( ( rule__XReturnExpression__Group__0 ) )
+            // InternalMenuDsl.g:1767:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:1768:2: ( ( rule__XReturnExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:1718:2: ( ( rule__XReturnExpression__Group__0 ) )
-            // InternalMenuDsl.g:1719:3: ( rule__XReturnExpression__Group__0 )
+            // InternalMenuDsl.g:1768:2: ( ( rule__XReturnExpression__Group__0 ) )
+            // InternalMenuDsl.g:1769:3: ( rule__XReturnExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1720:3: ( rule__XReturnExpression__Group__0 )
-            // InternalMenuDsl.g:1720:4: rule__XReturnExpression__Group__0
+            // InternalMenuDsl.g:1770:3: ( rule__XReturnExpression__Group__0 )
+            // InternalMenuDsl.g:1770:4: rule__XReturnExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XReturnExpression__Group__0();
@@ -5804,11 +5976,11 @@
 
 
     // $ANTLR start "entryRuleXTryCatchFinallyExpression"
-    // InternalMenuDsl.g:1729:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
+    // InternalMenuDsl.g:1779:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
     public final void entryRuleXTryCatchFinallyExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1730:1: ( ruleXTryCatchFinallyExpression EOF )
-            // InternalMenuDsl.g:1731:1: ruleXTryCatchFinallyExpression EOF
+            // InternalMenuDsl.g:1780:1: ( ruleXTryCatchFinallyExpression EOF )
+            // InternalMenuDsl.g:1781:1: ruleXTryCatchFinallyExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionRule()); 
@@ -5838,23 +6010,23 @@
 
 
     // $ANTLR start "ruleXTryCatchFinallyExpression"
-    // InternalMenuDsl.g:1738:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:1788:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
     public final void ruleXTryCatchFinallyExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1742:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:1743:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // InternalMenuDsl.g:1792:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:1793:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:1743:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
-            // InternalMenuDsl.g:1744:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // InternalMenuDsl.g:1793:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // InternalMenuDsl.g:1794:3: ( rule__XTryCatchFinallyExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1745:3: ( rule__XTryCatchFinallyExpression__Group__0 )
-            // InternalMenuDsl.g:1745:4: rule__XTryCatchFinallyExpression__Group__0
+            // InternalMenuDsl.g:1795:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // InternalMenuDsl.g:1795:4: rule__XTryCatchFinallyExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group__0();
@@ -5889,11 +6061,11 @@
 
 
     // $ANTLR start "entryRuleXSynchronizedExpression"
-    // InternalMenuDsl.g:1754:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
+    // InternalMenuDsl.g:1804:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
     public final void entryRuleXSynchronizedExpression() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1755:1: ( ruleXSynchronizedExpression EOF )
-            // InternalMenuDsl.g:1756:1: ruleXSynchronizedExpression EOF
+            // InternalMenuDsl.g:1805:1: ( ruleXSynchronizedExpression EOF )
+            // InternalMenuDsl.g:1806:1: ruleXSynchronizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionRule()); 
@@ -5923,23 +6095,23 @@
 
 
     // $ANTLR start "ruleXSynchronizedExpression"
-    // InternalMenuDsl.g:1763:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
+    // InternalMenuDsl.g:1813:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
     public final void ruleXSynchronizedExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1767:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
-            // InternalMenuDsl.g:1768:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // InternalMenuDsl.g:1817:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
+            // InternalMenuDsl.g:1818:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
             {
-            // InternalMenuDsl.g:1768:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
-            // InternalMenuDsl.g:1769:3: ( rule__XSynchronizedExpression__Group__0 )
+            // InternalMenuDsl.g:1818:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // InternalMenuDsl.g:1819:3: ( rule__XSynchronizedExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1770:3: ( rule__XSynchronizedExpression__Group__0 )
-            // InternalMenuDsl.g:1770:4: rule__XSynchronizedExpression__Group__0
+            // InternalMenuDsl.g:1820:3: ( rule__XSynchronizedExpression__Group__0 )
+            // InternalMenuDsl.g:1820:4: rule__XSynchronizedExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group__0();
@@ -5974,11 +6146,11 @@
 
 
     // $ANTLR start "entryRuleXCatchClause"
-    // InternalMenuDsl.g:1779:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
+    // InternalMenuDsl.g:1829:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
     public final void entryRuleXCatchClause() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1780:1: ( ruleXCatchClause EOF )
-            // InternalMenuDsl.g:1781:1: ruleXCatchClause EOF
+            // InternalMenuDsl.g:1830:1: ( ruleXCatchClause EOF )
+            // InternalMenuDsl.g:1831:1: ruleXCatchClause EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseRule()); 
@@ -6008,23 +6180,23 @@
 
 
     // $ANTLR start "ruleXCatchClause"
-    // InternalMenuDsl.g:1788:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
+    // InternalMenuDsl.g:1838:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
     public final void ruleXCatchClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1792:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
-            // InternalMenuDsl.g:1793:2: ( ( rule__XCatchClause__Group__0 ) )
+            // InternalMenuDsl.g:1842:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
+            // InternalMenuDsl.g:1843:2: ( ( rule__XCatchClause__Group__0 ) )
             {
-            // InternalMenuDsl.g:1793:2: ( ( rule__XCatchClause__Group__0 ) )
-            // InternalMenuDsl.g:1794:3: ( rule__XCatchClause__Group__0 )
+            // InternalMenuDsl.g:1843:2: ( ( rule__XCatchClause__Group__0 ) )
+            // InternalMenuDsl.g:1844:3: ( rule__XCatchClause__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1795:3: ( rule__XCatchClause__Group__0 )
-            // InternalMenuDsl.g:1795:4: rule__XCatchClause__Group__0
+            // InternalMenuDsl.g:1845:3: ( rule__XCatchClause__Group__0 )
+            // InternalMenuDsl.g:1845:4: rule__XCatchClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__Group__0();
@@ -6059,11 +6231,11 @@
 
 
     // $ANTLR start "entryRuleQualifiedName"
-    // InternalMenuDsl.g:1804:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
+    // InternalMenuDsl.g:1854:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
     public final void entryRuleQualifiedName() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1805:1: ( ruleQualifiedName EOF )
-            // InternalMenuDsl.g:1806:1: ruleQualifiedName EOF
+            // InternalMenuDsl.g:1855:1: ( ruleQualifiedName EOF )
+            // InternalMenuDsl.g:1856:1: ruleQualifiedName EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameRule()); 
@@ -6093,23 +6265,23 @@
 
 
     // $ANTLR start "ruleQualifiedName"
-    // InternalMenuDsl.g:1813:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
+    // InternalMenuDsl.g:1863:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
     public final void ruleQualifiedName() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1817:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
-            // InternalMenuDsl.g:1818:2: ( ( rule__QualifiedName__Group__0 ) )
+            // InternalMenuDsl.g:1867:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
+            // InternalMenuDsl.g:1868:2: ( ( rule__QualifiedName__Group__0 ) )
             {
-            // InternalMenuDsl.g:1818:2: ( ( rule__QualifiedName__Group__0 ) )
-            // InternalMenuDsl.g:1819:3: ( rule__QualifiedName__Group__0 )
+            // InternalMenuDsl.g:1868:2: ( ( rule__QualifiedName__Group__0 ) )
+            // InternalMenuDsl.g:1869:3: ( rule__QualifiedName__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1820:3: ( rule__QualifiedName__Group__0 )
-            // InternalMenuDsl.g:1820:4: rule__QualifiedName__Group__0
+            // InternalMenuDsl.g:1870:3: ( rule__QualifiedName__Group__0 )
+            // InternalMenuDsl.g:1870:4: rule__QualifiedName__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedName__Group__0();
@@ -6144,14 +6316,14 @@
 
 
     // $ANTLR start "entryRuleNumber"
-    // InternalMenuDsl.g:1829:1: entryRuleNumber : ruleNumber EOF ;
+    // InternalMenuDsl.g:1879:1: entryRuleNumber : ruleNumber EOF ;
     public final void entryRuleNumber() throws RecognitionException {
          
         	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
 
         try {
-            // InternalMenuDsl.g:1833:1: ( ruleNumber EOF )
-            // InternalMenuDsl.g:1834:1: ruleNumber EOF
+            // InternalMenuDsl.g:1883:1: ( ruleNumber EOF )
+            // InternalMenuDsl.g:1884:1: ruleNumber EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberRule()); 
@@ -6184,24 +6356,24 @@
 
 
     // $ANTLR start "ruleNumber"
-    // InternalMenuDsl.g:1844:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
+    // InternalMenuDsl.g:1894:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
     public final void ruleNumber() throws RecognitionException {
 
         		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1849:2: ( ( ( rule__Number__Alternatives ) ) )
-            // InternalMenuDsl.g:1850:2: ( ( rule__Number__Alternatives ) )
+            // InternalMenuDsl.g:1899:2: ( ( ( rule__Number__Alternatives ) ) )
+            // InternalMenuDsl.g:1900:2: ( ( rule__Number__Alternatives ) )
             {
-            // InternalMenuDsl.g:1850:2: ( ( rule__Number__Alternatives ) )
-            // InternalMenuDsl.g:1851:3: ( rule__Number__Alternatives )
+            // InternalMenuDsl.g:1900:2: ( ( rule__Number__Alternatives ) )
+            // InternalMenuDsl.g:1901:3: ( rule__Number__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:1852:3: ( rule__Number__Alternatives )
-            // InternalMenuDsl.g:1852:4: rule__Number__Alternatives
+            // InternalMenuDsl.g:1902:3: ( rule__Number__Alternatives )
+            // InternalMenuDsl.g:1902:4: rule__Number__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__Number__Alternatives();
@@ -6237,11 +6409,11 @@
 
 
     // $ANTLR start "entryRuleJvmTypeReference"
-    // InternalMenuDsl.g:1862:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
+    // InternalMenuDsl.g:1912:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
     public final void entryRuleJvmTypeReference() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1863:1: ( ruleJvmTypeReference EOF )
-            // InternalMenuDsl.g:1864:1: ruleJvmTypeReference EOF
+            // InternalMenuDsl.g:1913:1: ( ruleJvmTypeReference EOF )
+            // InternalMenuDsl.g:1914:1: ruleJvmTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceRule()); 
@@ -6271,23 +6443,23 @@
 
 
     // $ANTLR start "ruleJvmTypeReference"
-    // InternalMenuDsl.g:1871:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
+    // InternalMenuDsl.g:1921:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
     public final void ruleJvmTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1875:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
-            // InternalMenuDsl.g:1876:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            // InternalMenuDsl.g:1925:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
+            // InternalMenuDsl.g:1926:2: ( ( rule__JvmTypeReference__Alternatives ) )
             {
-            // InternalMenuDsl.g:1876:2: ( ( rule__JvmTypeReference__Alternatives ) )
-            // InternalMenuDsl.g:1877:3: ( rule__JvmTypeReference__Alternatives )
+            // InternalMenuDsl.g:1926:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            // InternalMenuDsl.g:1927:3: ( rule__JvmTypeReference__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:1878:3: ( rule__JvmTypeReference__Alternatives )
-            // InternalMenuDsl.g:1878:4: rule__JvmTypeReference__Alternatives
+            // InternalMenuDsl.g:1928:3: ( rule__JvmTypeReference__Alternatives )
+            // InternalMenuDsl.g:1928:4: rule__JvmTypeReference__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Alternatives();
@@ -6322,11 +6494,11 @@
 
 
     // $ANTLR start "entryRuleArrayBrackets"
-    // InternalMenuDsl.g:1887:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
+    // InternalMenuDsl.g:1937:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
     public final void entryRuleArrayBrackets() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1888:1: ( ruleArrayBrackets EOF )
-            // InternalMenuDsl.g:1889:1: ruleArrayBrackets EOF
+            // InternalMenuDsl.g:1938:1: ( ruleArrayBrackets EOF )
+            // InternalMenuDsl.g:1939:1: ruleArrayBrackets EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsRule()); 
@@ -6356,23 +6528,23 @@
 
 
     // $ANTLR start "ruleArrayBrackets"
-    // InternalMenuDsl.g:1896:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
+    // InternalMenuDsl.g:1946:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
     public final void ruleArrayBrackets() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1900:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
-            // InternalMenuDsl.g:1901:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            // InternalMenuDsl.g:1950:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
+            // InternalMenuDsl.g:1951:2: ( ( rule__ArrayBrackets__Group__0 ) )
             {
-            // InternalMenuDsl.g:1901:2: ( ( rule__ArrayBrackets__Group__0 ) )
-            // InternalMenuDsl.g:1902:3: ( rule__ArrayBrackets__Group__0 )
+            // InternalMenuDsl.g:1951:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            // InternalMenuDsl.g:1952:3: ( rule__ArrayBrackets__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1903:3: ( rule__ArrayBrackets__Group__0 )
-            // InternalMenuDsl.g:1903:4: rule__ArrayBrackets__Group__0
+            // InternalMenuDsl.g:1953:3: ( rule__ArrayBrackets__Group__0 )
+            // InternalMenuDsl.g:1953:4: rule__ArrayBrackets__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ArrayBrackets__Group__0();
@@ -6407,11 +6579,11 @@
 
 
     // $ANTLR start "entryRuleXFunctionTypeRef"
-    // InternalMenuDsl.g:1912:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
+    // InternalMenuDsl.g:1962:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
     public final void entryRuleXFunctionTypeRef() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1913:1: ( ruleXFunctionTypeRef EOF )
-            // InternalMenuDsl.g:1914:1: ruleXFunctionTypeRef EOF
+            // InternalMenuDsl.g:1963:1: ( ruleXFunctionTypeRef EOF )
+            // InternalMenuDsl.g:1964:1: ruleXFunctionTypeRef EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefRule()); 
@@ -6441,23 +6613,23 @@
 
 
     // $ANTLR start "ruleXFunctionTypeRef"
-    // InternalMenuDsl.g:1921:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
+    // InternalMenuDsl.g:1971:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
     public final void ruleXFunctionTypeRef() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1925:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
-            // InternalMenuDsl.g:1926:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // InternalMenuDsl.g:1975:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
+            // InternalMenuDsl.g:1976:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
             {
-            // InternalMenuDsl.g:1926:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
-            // InternalMenuDsl.g:1927:3: ( rule__XFunctionTypeRef__Group__0 )
+            // InternalMenuDsl.g:1976:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // InternalMenuDsl.g:1977:3: ( rule__XFunctionTypeRef__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1928:3: ( rule__XFunctionTypeRef__Group__0 )
-            // InternalMenuDsl.g:1928:4: rule__XFunctionTypeRef__Group__0
+            // InternalMenuDsl.g:1978:3: ( rule__XFunctionTypeRef__Group__0 )
+            // InternalMenuDsl.g:1978:4: rule__XFunctionTypeRef__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group__0();
@@ -6492,11 +6664,11 @@
 
 
     // $ANTLR start "entryRuleJvmParameterizedTypeReference"
-    // InternalMenuDsl.g:1937:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
+    // InternalMenuDsl.g:1987:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
     public final void entryRuleJvmParameterizedTypeReference() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1938:1: ( ruleJvmParameterizedTypeReference EOF )
-            // InternalMenuDsl.g:1939:1: ruleJvmParameterizedTypeReference EOF
+            // InternalMenuDsl.g:1988:1: ( ruleJvmParameterizedTypeReference EOF )
+            // InternalMenuDsl.g:1989:1: ruleJvmParameterizedTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
@@ -6526,23 +6698,23 @@
 
 
     // $ANTLR start "ruleJvmParameterizedTypeReference"
-    // InternalMenuDsl.g:1946:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
+    // InternalMenuDsl.g:1996:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
     public final void ruleJvmParameterizedTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1950:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
-            // InternalMenuDsl.g:1951:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // InternalMenuDsl.g:2000:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
+            // InternalMenuDsl.g:2001:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
             {
-            // InternalMenuDsl.g:1951:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
-            // InternalMenuDsl.g:1952:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // InternalMenuDsl.g:2001:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // InternalMenuDsl.g:2002:3: ( rule__JvmParameterizedTypeReference__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:1953:3: ( rule__JvmParameterizedTypeReference__Group__0 )
-            // InternalMenuDsl.g:1953:4: rule__JvmParameterizedTypeReference__Group__0
+            // InternalMenuDsl.g:2003:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // InternalMenuDsl.g:2003:4: rule__JvmParameterizedTypeReference__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group__0();
@@ -6577,11 +6749,11 @@
 
 
     // $ANTLR start "entryRuleJvmArgumentTypeReference"
-    // InternalMenuDsl.g:1962:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
+    // InternalMenuDsl.g:2012:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
     public final void entryRuleJvmArgumentTypeReference() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1963:1: ( ruleJvmArgumentTypeReference EOF )
-            // InternalMenuDsl.g:1964:1: ruleJvmArgumentTypeReference EOF
+            // InternalMenuDsl.g:2013:1: ( ruleJvmArgumentTypeReference EOF )
+            // InternalMenuDsl.g:2014:1: ruleJvmArgumentTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmArgumentTypeReferenceRule()); 
@@ -6611,23 +6783,23 @@
 
 
     // $ANTLR start "ruleJvmArgumentTypeReference"
-    // InternalMenuDsl.g:1971:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
+    // InternalMenuDsl.g:2021:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
     public final void ruleJvmArgumentTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:1975:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
-            // InternalMenuDsl.g:1976:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // InternalMenuDsl.g:2025:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
+            // InternalMenuDsl.g:2026:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
             {
-            // InternalMenuDsl.g:1976:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
-            // InternalMenuDsl.g:1977:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            // InternalMenuDsl.g:2026:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // InternalMenuDsl.g:2027:3: ( rule__JvmArgumentTypeReference__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); 
             }
-            // InternalMenuDsl.g:1978:3: ( rule__JvmArgumentTypeReference__Alternatives )
-            // InternalMenuDsl.g:1978:4: rule__JvmArgumentTypeReference__Alternatives
+            // InternalMenuDsl.g:2028:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            // InternalMenuDsl.g:2028:4: rule__JvmArgumentTypeReference__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__JvmArgumentTypeReference__Alternatives();
@@ -6662,11 +6834,11 @@
 
 
     // $ANTLR start "entryRuleJvmWildcardTypeReference"
-    // InternalMenuDsl.g:1987:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
+    // InternalMenuDsl.g:2037:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
     public final void entryRuleJvmWildcardTypeReference() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:1988:1: ( ruleJvmWildcardTypeReference EOF )
-            // InternalMenuDsl.g:1989:1: ruleJvmWildcardTypeReference EOF
+            // InternalMenuDsl.g:2038:1: ( ruleJvmWildcardTypeReference EOF )
+            // InternalMenuDsl.g:2039:1: ruleJvmWildcardTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceRule()); 
@@ -6696,23 +6868,23 @@
 
 
     // $ANTLR start "ruleJvmWildcardTypeReference"
-    // InternalMenuDsl.g:1996:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
+    // InternalMenuDsl.g:2046:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
     public final void ruleJvmWildcardTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2000:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
-            // InternalMenuDsl.g:2001:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // InternalMenuDsl.g:2050:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
+            // InternalMenuDsl.g:2051:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
             {
-            // InternalMenuDsl.g:2001:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
-            // InternalMenuDsl.g:2002:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            // InternalMenuDsl.g:2051:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // InternalMenuDsl.g:2052:3: ( rule__JvmWildcardTypeReference__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:2003:3: ( rule__JvmWildcardTypeReference__Group__0 )
-            // InternalMenuDsl.g:2003:4: rule__JvmWildcardTypeReference__Group__0
+            // InternalMenuDsl.g:2053:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            // InternalMenuDsl.g:2053:4: rule__JvmWildcardTypeReference__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group__0();
@@ -6747,11 +6919,11 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBound"
-    // InternalMenuDsl.g:2012:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
+    // InternalMenuDsl.g:2062:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
     public final void entryRuleJvmUpperBound() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:2013:1: ( ruleJvmUpperBound EOF )
-            // InternalMenuDsl.g:2014:1: ruleJvmUpperBound EOF
+            // InternalMenuDsl.g:2063:1: ( ruleJvmUpperBound EOF )
+            // InternalMenuDsl.g:2064:1: ruleJvmUpperBound EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundRule()); 
@@ -6781,23 +6953,23 @@
 
 
     // $ANTLR start "ruleJvmUpperBound"
-    // InternalMenuDsl.g:2021:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
+    // InternalMenuDsl.g:2071:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
     public final void ruleJvmUpperBound() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2025:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
-            // InternalMenuDsl.g:2026:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            // InternalMenuDsl.g:2075:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
+            // InternalMenuDsl.g:2076:2: ( ( rule__JvmUpperBound__Group__0 ) )
             {
-            // InternalMenuDsl.g:2026:2: ( ( rule__JvmUpperBound__Group__0 ) )
-            // InternalMenuDsl.g:2027:3: ( rule__JvmUpperBound__Group__0 )
+            // InternalMenuDsl.g:2076:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            // InternalMenuDsl.g:2077:3: ( rule__JvmUpperBound__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:2028:3: ( rule__JvmUpperBound__Group__0 )
-            // InternalMenuDsl.g:2028:4: rule__JvmUpperBound__Group__0
+            // InternalMenuDsl.g:2078:3: ( rule__JvmUpperBound__Group__0 )
+            // InternalMenuDsl.g:2078:4: rule__JvmUpperBound__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBound__Group__0();
@@ -6832,11 +7004,11 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBoundAnded"
-    // InternalMenuDsl.g:2037:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
+    // InternalMenuDsl.g:2087:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
     public final void entryRuleJvmUpperBoundAnded() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:2038:1: ( ruleJvmUpperBoundAnded EOF )
-            // InternalMenuDsl.g:2039:1: ruleJvmUpperBoundAnded EOF
+            // InternalMenuDsl.g:2088:1: ( ruleJvmUpperBoundAnded EOF )
+            // InternalMenuDsl.g:2089:1: ruleJvmUpperBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedRule()); 
@@ -6866,23 +7038,23 @@
 
 
     // $ANTLR start "ruleJvmUpperBoundAnded"
-    // InternalMenuDsl.g:2046:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
+    // InternalMenuDsl.g:2096:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
     public final void ruleJvmUpperBoundAnded() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2050:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
-            // InternalMenuDsl.g:2051:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // InternalMenuDsl.g:2100:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
+            // InternalMenuDsl.g:2101:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
             {
-            // InternalMenuDsl.g:2051:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
-            // InternalMenuDsl.g:2052:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            // InternalMenuDsl.g:2101:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // InternalMenuDsl.g:2102:3: ( rule__JvmUpperBoundAnded__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:2053:3: ( rule__JvmUpperBoundAnded__Group__0 )
-            // InternalMenuDsl.g:2053:4: rule__JvmUpperBoundAnded__Group__0
+            // InternalMenuDsl.g:2103:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            // InternalMenuDsl.g:2103:4: rule__JvmUpperBoundAnded__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBoundAnded__Group__0();
@@ -6917,11 +7089,11 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBound"
-    // InternalMenuDsl.g:2062:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
+    // InternalMenuDsl.g:2112:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
     public final void entryRuleJvmLowerBound() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:2063:1: ( ruleJvmLowerBound EOF )
-            // InternalMenuDsl.g:2064:1: ruleJvmLowerBound EOF
+            // InternalMenuDsl.g:2113:1: ( ruleJvmLowerBound EOF )
+            // InternalMenuDsl.g:2114:1: ruleJvmLowerBound EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundRule()); 
@@ -6951,23 +7123,23 @@
 
 
     // $ANTLR start "ruleJvmLowerBound"
-    // InternalMenuDsl.g:2071:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
+    // InternalMenuDsl.g:2121:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
     public final void ruleJvmLowerBound() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2075:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
-            // InternalMenuDsl.g:2076:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            // InternalMenuDsl.g:2125:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
+            // InternalMenuDsl.g:2126:2: ( ( rule__JvmLowerBound__Group__0 ) )
             {
-            // InternalMenuDsl.g:2076:2: ( ( rule__JvmLowerBound__Group__0 ) )
-            // InternalMenuDsl.g:2077:3: ( rule__JvmLowerBound__Group__0 )
+            // InternalMenuDsl.g:2126:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            // InternalMenuDsl.g:2127:3: ( rule__JvmLowerBound__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:2078:3: ( rule__JvmLowerBound__Group__0 )
-            // InternalMenuDsl.g:2078:4: rule__JvmLowerBound__Group__0
+            // InternalMenuDsl.g:2128:3: ( rule__JvmLowerBound__Group__0 )
+            // InternalMenuDsl.g:2128:4: rule__JvmLowerBound__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBound__Group__0();
@@ -7002,11 +7174,11 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBoundAnded"
-    // InternalMenuDsl.g:2087:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
+    // InternalMenuDsl.g:2137:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
     public final void entryRuleJvmLowerBoundAnded() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:2088:1: ( ruleJvmLowerBoundAnded EOF )
-            // InternalMenuDsl.g:2089:1: ruleJvmLowerBoundAnded EOF
+            // InternalMenuDsl.g:2138:1: ( ruleJvmLowerBoundAnded EOF )
+            // InternalMenuDsl.g:2139:1: ruleJvmLowerBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedRule()); 
@@ -7036,23 +7208,23 @@
 
 
     // $ANTLR start "ruleJvmLowerBoundAnded"
-    // InternalMenuDsl.g:2096:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
+    // InternalMenuDsl.g:2146:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
     public final void ruleJvmLowerBoundAnded() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2100:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
-            // InternalMenuDsl.g:2101:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // InternalMenuDsl.g:2150:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
+            // InternalMenuDsl.g:2151:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
             {
-            // InternalMenuDsl.g:2101:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
-            // InternalMenuDsl.g:2102:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            // InternalMenuDsl.g:2151:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // InternalMenuDsl.g:2152:3: ( rule__JvmLowerBoundAnded__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:2103:3: ( rule__JvmLowerBoundAnded__Group__0 )
-            // InternalMenuDsl.g:2103:4: rule__JvmLowerBoundAnded__Group__0
+            // InternalMenuDsl.g:2153:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            // InternalMenuDsl.g:2153:4: rule__JvmLowerBoundAnded__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBoundAnded__Group__0();
@@ -7087,11 +7259,11 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameWithWildcard"
-    // InternalMenuDsl.g:2112:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
+    // InternalMenuDsl.g:2162:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
     public final void entryRuleQualifiedNameWithWildcard() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:2113:1: ( ruleQualifiedNameWithWildcard EOF )
-            // InternalMenuDsl.g:2114:1: ruleQualifiedNameWithWildcard EOF
+            // InternalMenuDsl.g:2163:1: ( ruleQualifiedNameWithWildcard EOF )
+            // InternalMenuDsl.g:2164:1: ruleQualifiedNameWithWildcard EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardRule()); 
@@ -7121,23 +7293,23 @@
 
 
     // $ANTLR start "ruleQualifiedNameWithWildcard"
-    // InternalMenuDsl.g:2121:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
+    // InternalMenuDsl.g:2171:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
     public final void ruleQualifiedNameWithWildcard() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2125:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
-            // InternalMenuDsl.g:2126:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // InternalMenuDsl.g:2175:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
+            // InternalMenuDsl.g:2176:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
             {
-            // InternalMenuDsl.g:2126:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
-            // InternalMenuDsl.g:2127:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // InternalMenuDsl.g:2176:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // InternalMenuDsl.g:2177:3: ( rule__QualifiedNameWithWildcard__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:2128:3: ( rule__QualifiedNameWithWildcard__Group__0 )
-            // InternalMenuDsl.g:2128:4: rule__QualifiedNameWithWildcard__Group__0
+            // InternalMenuDsl.g:2178:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // InternalMenuDsl.g:2178:4: rule__QualifiedNameWithWildcard__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedNameWithWildcard__Group__0();
@@ -7172,11 +7344,11 @@
 
 
     // $ANTLR start "entryRuleValidID"
-    // InternalMenuDsl.g:2137:1: entryRuleValidID : ruleValidID EOF ;
+    // InternalMenuDsl.g:2187:1: entryRuleValidID : ruleValidID EOF ;
     public final void entryRuleValidID() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:2138:1: ( ruleValidID EOF )
-            // InternalMenuDsl.g:2139:1: ruleValidID EOF
+            // InternalMenuDsl.g:2188:1: ( ruleValidID EOF )
+            // InternalMenuDsl.g:2189:1: ruleValidID EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getValidIDRule()); 
@@ -7206,17 +7378,17 @@
 
 
     // $ANTLR start "ruleValidID"
-    // InternalMenuDsl.g:2146:1: ruleValidID : ( RULE_ID ) ;
+    // InternalMenuDsl.g:2196:1: ruleValidID : ( RULE_ID ) ;
     public final void ruleValidID() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2150:2: ( ( RULE_ID ) )
-            // InternalMenuDsl.g:2151:2: ( RULE_ID )
+            // InternalMenuDsl.g:2200:2: ( ( RULE_ID ) )
+            // InternalMenuDsl.g:2201:2: ( RULE_ID )
             {
-            // InternalMenuDsl.g:2151:2: ( RULE_ID )
-            // InternalMenuDsl.g:2152:3: RULE_ID
+            // InternalMenuDsl.g:2201:2: ( RULE_ID )
+            // InternalMenuDsl.g:2202:3: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
@@ -7247,11 +7419,11 @@
 
 
     // $ANTLR start "entryRuleXImportSection"
-    // InternalMenuDsl.g:2162:1: entryRuleXImportSection : ruleXImportSection EOF ;
+    // InternalMenuDsl.g:2212:1: entryRuleXImportSection : ruleXImportSection EOF ;
     public final void entryRuleXImportSection() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:2163:1: ( ruleXImportSection EOF )
-            // InternalMenuDsl.g:2164:1: ruleXImportSection EOF
+            // InternalMenuDsl.g:2213:1: ( ruleXImportSection EOF )
+            // InternalMenuDsl.g:2214:1: ruleXImportSection EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionRule()); 
@@ -7281,26 +7453,26 @@
 
 
     // $ANTLR start "ruleXImportSection"
-    // InternalMenuDsl.g:2171:1: ruleXImportSection : ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) ;
+    // InternalMenuDsl.g:2221:1: ruleXImportSection : ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) ;
     public final void ruleXImportSection() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2175:2: ( ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) )
-            // InternalMenuDsl.g:2176:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            // InternalMenuDsl.g:2225:2: ( ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) )
+            // InternalMenuDsl.g:2226:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
             {
-            // InternalMenuDsl.g:2176:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
-            // InternalMenuDsl.g:2177:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            // InternalMenuDsl.g:2226:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            // InternalMenuDsl.g:2227:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
             {
-            // InternalMenuDsl.g:2177:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) )
-            // InternalMenuDsl.g:2178:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            // InternalMenuDsl.g:2227:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) )
+            // InternalMenuDsl.g:2228:4: ( rule__XImportSection__ImportDeclarationsAssignment )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
             }
-            // InternalMenuDsl.g:2179:4: ( rule__XImportSection__ImportDeclarationsAssignment )
-            // InternalMenuDsl.g:2179:5: rule__XImportSection__ImportDeclarationsAssignment
+            // InternalMenuDsl.g:2229:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            // InternalMenuDsl.g:2229:5: rule__XImportSection__ImportDeclarationsAssignment
             {
             pushFollow(FOLLOW_3);
             rule__XImportSection__ImportDeclarationsAssignment();
@@ -7316,13 +7488,13 @@
 
             }
 
-            // InternalMenuDsl.g:2182:3: ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
-            // InternalMenuDsl.g:2183:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            // InternalMenuDsl.g:2232:3: ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            // InternalMenuDsl.g:2233:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
             }
-            // InternalMenuDsl.g:2184:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            // InternalMenuDsl.g:2234:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
             loop1:
             do {
                 int alt1=2;
@@ -7335,7 +7507,7 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // InternalMenuDsl.g:2184:5: rule__XImportSection__ImportDeclarationsAssignment
+            	    // InternalMenuDsl.g:2234:5: rule__XImportSection__ImportDeclarationsAssignment
             	    {
             	    pushFollow(FOLLOW_3);
             	    rule__XImportSection__ImportDeclarationsAssignment();
@@ -7379,11 +7551,11 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameInStaticImport"
-    // InternalMenuDsl.g:2194:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
+    // InternalMenuDsl.g:2244:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
     public final void entryRuleQualifiedNameInStaticImport() throws RecognitionException {
         try {
-            // InternalMenuDsl.g:2195:1: ( ruleQualifiedNameInStaticImport EOF )
-            // InternalMenuDsl.g:2196:1: ruleQualifiedNameInStaticImport EOF
+            // InternalMenuDsl.g:2245:1: ( ruleQualifiedNameInStaticImport EOF )
+            // InternalMenuDsl.g:2246:1: ruleQualifiedNameInStaticImport EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportRule()); 
@@ -7413,26 +7585,26 @@
 
 
     // $ANTLR start "ruleQualifiedNameInStaticImport"
-    // InternalMenuDsl.g:2203:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
+    // InternalMenuDsl.g:2253:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
     public final void ruleQualifiedNameInStaticImport() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2207:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
-            // InternalMenuDsl.g:2208:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // InternalMenuDsl.g:2257:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
+            // InternalMenuDsl.g:2258:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
             {
-            // InternalMenuDsl.g:2208:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
-            // InternalMenuDsl.g:2209:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // InternalMenuDsl.g:2258:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // InternalMenuDsl.g:2259:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
             {
-            // InternalMenuDsl.g:2209:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
-            // InternalMenuDsl.g:2210:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // InternalMenuDsl.g:2259:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
+            // InternalMenuDsl.g:2260:4: ( rule__QualifiedNameInStaticImport__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:2211:4: ( rule__QualifiedNameInStaticImport__Group__0 )
-            // InternalMenuDsl.g:2211:5: rule__QualifiedNameInStaticImport__Group__0
+            // InternalMenuDsl.g:2261:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // InternalMenuDsl.g:2261:5: rule__QualifiedNameInStaticImport__Group__0
             {
             pushFollow(FOLLOW_4);
             rule__QualifiedNameInStaticImport__Group__0();
@@ -7448,13 +7620,13 @@
 
             }
 
-            // InternalMenuDsl.g:2214:3: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
-            // InternalMenuDsl.g:2215:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            // InternalMenuDsl.g:2264:3: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // InternalMenuDsl.g:2265:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
             }
-            // InternalMenuDsl.g:2216:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            // InternalMenuDsl.g:2266:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
             loop2:
             do {
                 int alt2=2;
@@ -7473,7 +7645,7 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // InternalMenuDsl.g:2216:5: rule__QualifiedNameInStaticImport__Group__0
+            	    // InternalMenuDsl.g:2266:5: rule__QualifiedNameInStaticImport__Group__0
             	    {
             	    pushFollow(FOLLOW_4);
             	    rule__QualifiedNameInStaticImport__Group__0();
@@ -7516,46 +7688,51 @@
     // $ANTLR end "ruleQualifiedNameInStaticImport"
 
 
-    // $ANTLR start "rule__MenuEntry__Alternatives_6"
-    // InternalMenuDsl.g:2225:1: rule__MenuEntry__Alternatives_6 : ( ( ( rule__MenuEntry__Group_6_0__0 ) ) | ( ( rule__MenuEntry__Group_6_1__0 ) ) | ( ( rule__MenuEntry__Group_6_2__0 ) ) | ( ( rule__MenuEntry__Group_6_3__0 ) ) | ( ( rule__MenuEntry__HasUserFilterAssignment_6_4 ) ) | ( ( rule__MenuEntry__HasKeyBindingAssignment_6_5 ) ) );
-    public final void rule__MenuEntry__Alternatives_6() throws RecognitionException {
+    // $ANTLR start "rule__MenuCategory__Alternatives_2"
+    // InternalMenuDsl.g:2275:1: rule__MenuCategory__Alternatives_2 : ( ( ( rule__MenuCategory__Group_2_0__0 ) ) | ( ( rule__MenuCategory__Group_2_1__0 ) ) | ( ( rule__MenuCategory__HasUserFilterAssignment_2_2 ) ) | ( ( rule__MenuCategory__HasReportPrinterAssignment_2_3 ) ) | ( ( rule__MenuCategory__HasKeyBindingAssignment_2_4 ) ) | ( ( rule__MenuCategory__HasSystemSettingsAssignment_2_5 ) ) | ( ( rule__MenuCategory__Group_2_6__0 ) ) );
+    public final void rule__MenuCategory__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2229:1: ( ( ( rule__MenuEntry__Group_6_0__0 ) ) | ( ( rule__MenuEntry__Group_6_1__0 ) ) | ( ( rule__MenuEntry__Group_6_2__0 ) ) | ( ( rule__MenuEntry__Group_6_3__0 ) ) | ( ( rule__MenuEntry__HasUserFilterAssignment_6_4 ) ) | ( ( rule__MenuEntry__HasKeyBindingAssignment_6_5 ) ) )
-            int alt3=6;
+            // InternalMenuDsl.g:2279:1: ( ( ( rule__MenuCategory__Group_2_0__0 ) ) | ( ( rule__MenuCategory__Group_2_1__0 ) ) | ( ( rule__MenuCategory__HasUserFilterAssignment_2_2 ) ) | ( ( rule__MenuCategory__HasReportPrinterAssignment_2_3 ) ) | ( ( rule__MenuCategory__HasKeyBindingAssignment_2_4 ) ) | ( ( rule__MenuCategory__HasSystemSettingsAssignment_2_5 ) ) | ( ( rule__MenuCategory__Group_2_6__0 ) ) )
+            int alt3=7;
             switch ( input.LA(1) ) {
-            case 94:
+            case 92:
                 {
                 alt3=1;
                 }
                 break;
-            case 95:
+            case 93:
                 {
                 alt3=2;
                 }
                 break;
-            case 96:
+            case 94:
                 {
                 alt3=3;
                 }
                 break;
-            case 97:
+            case 95:
                 {
                 alt3=4;
                 }
                 break;
-            case 98:
+            case 96:
                 {
                 alt3=5;
                 }
                 break;
-            case 99:
+            case 97:
                 {
                 alt3=6;
                 }
                 break;
+            case 57:
+                {
+                alt3=7;
+                }
+                break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
@@ -7566,19 +7743,19 @@
 
             switch (alt3) {
                 case 1 :
-                    // InternalMenuDsl.g:2230:2: ( ( rule__MenuEntry__Group_6_0__0 ) )
+                    // InternalMenuDsl.g:2280:2: ( ( rule__MenuCategory__Group_2_0__0 ) )
                     {
-                    // InternalMenuDsl.g:2230:2: ( ( rule__MenuEntry__Group_6_0__0 ) )
-                    // InternalMenuDsl.g:2231:3: ( rule__MenuEntry__Group_6_0__0 )
+                    // InternalMenuDsl.g:2280:2: ( ( rule__MenuCategory__Group_2_0__0 ) )
+                    // InternalMenuDsl.g:2281:3: ( rule__MenuCategory__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getMenuEntryAccess().getGroup_6_0()); 
+                       before(grammarAccess.getMenuCategoryAccess().getGroup_2_0()); 
                     }
-                    // InternalMenuDsl.g:2232:3: ( rule__MenuEntry__Group_6_0__0 )
-                    // InternalMenuDsl.g:2232:4: rule__MenuEntry__Group_6_0__0
+                    // InternalMenuDsl.g:2282:3: ( rule__MenuCategory__Group_2_0__0 )
+                    // InternalMenuDsl.g:2282:4: rule__MenuCategory__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
-                    rule__MenuEntry__Group_6_0__0();
+                    rule__MenuCategory__Group_2_0__0();
 
                     state._fsp--;
                     if (state.failed) return ;
@@ -7586,7 +7763,7 @@
                     }
 
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getMenuEntryAccess().getGroup_6_0()); 
+                       after(grammarAccess.getMenuCategoryAccess().getGroup_2_0()); 
                     }
 
                     }
@@ -7595,19 +7772,19 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2236:2: ( ( rule__MenuEntry__Group_6_1__0 ) )
+                    // InternalMenuDsl.g:2286:2: ( ( rule__MenuCategory__Group_2_1__0 ) )
                     {
-                    // InternalMenuDsl.g:2236:2: ( ( rule__MenuEntry__Group_6_1__0 ) )
-                    // InternalMenuDsl.g:2237:3: ( rule__MenuEntry__Group_6_1__0 )
+                    // InternalMenuDsl.g:2286:2: ( ( rule__MenuCategory__Group_2_1__0 ) )
+                    // InternalMenuDsl.g:2287:3: ( rule__MenuCategory__Group_2_1__0 )
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getMenuEntryAccess().getGroup_6_1()); 
+                       before(grammarAccess.getMenuCategoryAccess().getGroup_2_1()); 
                     }
-                    // InternalMenuDsl.g:2238:3: ( rule__MenuEntry__Group_6_1__0 )
-                    // InternalMenuDsl.g:2238:4: rule__MenuEntry__Group_6_1__0
+                    // InternalMenuDsl.g:2288:3: ( rule__MenuCategory__Group_2_1__0 )
+                    // InternalMenuDsl.g:2288:4: rule__MenuCategory__Group_2_1__0
                     {
                     pushFollow(FOLLOW_2);
-                    rule__MenuEntry__Group_6_1__0();
+                    rule__MenuCategory__Group_2_1__0();
 
                     state._fsp--;
                     if (state.failed) return ;
@@ -7615,7 +7792,7 @@
                     }
 
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getMenuEntryAccess().getGroup_6_1()); 
+                       after(grammarAccess.getMenuCategoryAccess().getGroup_2_1()); 
                     }
 
                     }
@@ -7624,19 +7801,19 @@
                     }
                     break;
                 case 3 :
-                    // InternalMenuDsl.g:2242:2: ( ( rule__MenuEntry__Group_6_2__0 ) )
+                    // InternalMenuDsl.g:2292:2: ( ( rule__MenuCategory__HasUserFilterAssignment_2_2 ) )
                     {
-                    // InternalMenuDsl.g:2242:2: ( ( rule__MenuEntry__Group_6_2__0 ) )
-                    // InternalMenuDsl.g:2243:3: ( rule__MenuEntry__Group_6_2__0 )
+                    // InternalMenuDsl.g:2292:2: ( ( rule__MenuCategory__HasUserFilterAssignment_2_2 ) )
+                    // InternalMenuDsl.g:2293:3: ( rule__MenuCategory__HasUserFilterAssignment_2_2 )
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getMenuEntryAccess().getGroup_6_2()); 
+                       before(grammarAccess.getMenuCategoryAccess().getHasUserFilterAssignment_2_2()); 
                     }
-                    // InternalMenuDsl.g:2244:3: ( rule__MenuEntry__Group_6_2__0 )
-                    // InternalMenuDsl.g:2244:4: rule__MenuEntry__Group_6_2__0
+                    // InternalMenuDsl.g:2294:3: ( rule__MenuCategory__HasUserFilterAssignment_2_2 )
+                    // InternalMenuDsl.g:2294:4: rule__MenuCategory__HasUserFilterAssignment_2_2
                     {
                     pushFollow(FOLLOW_2);
-                    rule__MenuEntry__Group_6_2__0();
+                    rule__MenuCategory__HasUserFilterAssignment_2_2();
 
                     state._fsp--;
                     if (state.failed) return ;
@@ -7644,7 +7821,7 @@
                     }
 
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getMenuEntryAccess().getGroup_6_2()); 
+                       after(grammarAccess.getMenuCategoryAccess().getHasUserFilterAssignment_2_2()); 
                     }
 
                     }
@@ -7653,19 +7830,19 @@
                     }
                     break;
                 case 4 :
-                    // InternalMenuDsl.g:2248:2: ( ( rule__MenuEntry__Group_6_3__0 ) )
+                    // InternalMenuDsl.g:2298:2: ( ( rule__MenuCategory__HasReportPrinterAssignment_2_3 ) )
                     {
-                    // InternalMenuDsl.g:2248:2: ( ( rule__MenuEntry__Group_6_3__0 ) )
-                    // InternalMenuDsl.g:2249:3: ( rule__MenuEntry__Group_6_3__0 )
+                    // InternalMenuDsl.g:2298:2: ( ( rule__MenuCategory__HasReportPrinterAssignment_2_3 ) )
+                    // InternalMenuDsl.g:2299:3: ( rule__MenuCategory__HasReportPrinterAssignment_2_3 )
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getMenuEntryAccess().getGroup_6_3()); 
+                       before(grammarAccess.getMenuCategoryAccess().getHasReportPrinterAssignment_2_3()); 
                     }
-                    // InternalMenuDsl.g:2250:3: ( rule__MenuEntry__Group_6_3__0 )
-                    // InternalMenuDsl.g:2250:4: rule__MenuEntry__Group_6_3__0
+                    // InternalMenuDsl.g:2300:3: ( rule__MenuCategory__HasReportPrinterAssignment_2_3 )
+                    // InternalMenuDsl.g:2300:4: rule__MenuCategory__HasReportPrinterAssignment_2_3
                     {
                     pushFollow(FOLLOW_2);
-                    rule__MenuEntry__Group_6_3__0();
+                    rule__MenuCategory__HasReportPrinterAssignment_2_3();
 
                     state._fsp--;
                     if (state.failed) return ;
@@ -7673,7 +7850,7 @@
                     }
 
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getMenuEntryAccess().getGroup_6_3()); 
+                       after(grammarAccess.getMenuCategoryAccess().getHasReportPrinterAssignment_2_3()); 
                     }
 
                     }
@@ -7682,19 +7859,19 @@
                     }
                     break;
                 case 5 :
-                    // InternalMenuDsl.g:2254:2: ( ( rule__MenuEntry__HasUserFilterAssignment_6_4 ) )
+                    // InternalMenuDsl.g:2304:2: ( ( rule__MenuCategory__HasKeyBindingAssignment_2_4 ) )
                     {
-                    // InternalMenuDsl.g:2254:2: ( ( rule__MenuEntry__HasUserFilterAssignment_6_4 ) )
-                    // InternalMenuDsl.g:2255:3: ( rule__MenuEntry__HasUserFilterAssignment_6_4 )
+                    // InternalMenuDsl.g:2304:2: ( ( rule__MenuCategory__HasKeyBindingAssignment_2_4 ) )
+                    // InternalMenuDsl.g:2305:3: ( rule__MenuCategory__HasKeyBindingAssignment_2_4 )
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getMenuEntryAccess().getHasUserFilterAssignment_6_4()); 
+                       before(grammarAccess.getMenuCategoryAccess().getHasKeyBindingAssignment_2_4()); 
                     }
-                    // InternalMenuDsl.g:2256:3: ( rule__MenuEntry__HasUserFilterAssignment_6_4 )
-                    // InternalMenuDsl.g:2256:4: rule__MenuEntry__HasUserFilterAssignment_6_4
+                    // InternalMenuDsl.g:2306:3: ( rule__MenuCategory__HasKeyBindingAssignment_2_4 )
+                    // InternalMenuDsl.g:2306:4: rule__MenuCategory__HasKeyBindingAssignment_2_4
                     {
                     pushFollow(FOLLOW_2);
-                    rule__MenuEntry__HasUserFilterAssignment_6_4();
+                    rule__MenuCategory__HasKeyBindingAssignment_2_4();
 
                     state._fsp--;
                     if (state.failed) return ;
@@ -7702,7 +7879,7 @@
                     }
 
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getMenuEntryAccess().getHasUserFilterAssignment_6_4()); 
+                       after(grammarAccess.getMenuCategoryAccess().getHasKeyBindingAssignment_2_4()); 
                     }
 
                     }
@@ -7711,19 +7888,19 @@
                     }
                     break;
                 case 6 :
-                    // InternalMenuDsl.g:2260:2: ( ( rule__MenuEntry__HasKeyBindingAssignment_6_5 ) )
+                    // InternalMenuDsl.g:2310:2: ( ( rule__MenuCategory__HasSystemSettingsAssignment_2_5 ) )
                     {
-                    // InternalMenuDsl.g:2260:2: ( ( rule__MenuEntry__HasKeyBindingAssignment_6_5 ) )
-                    // InternalMenuDsl.g:2261:3: ( rule__MenuEntry__HasKeyBindingAssignment_6_5 )
+                    // InternalMenuDsl.g:2310:2: ( ( rule__MenuCategory__HasSystemSettingsAssignment_2_5 ) )
+                    // InternalMenuDsl.g:2311:3: ( rule__MenuCategory__HasSystemSettingsAssignment_2_5 )
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getMenuEntryAccess().getHasKeyBindingAssignment_6_5()); 
+                       before(grammarAccess.getMenuCategoryAccess().getHasSystemSettingsAssignment_2_5()); 
                     }
-                    // InternalMenuDsl.g:2262:3: ( rule__MenuEntry__HasKeyBindingAssignment_6_5 )
-                    // InternalMenuDsl.g:2262:4: rule__MenuEntry__HasKeyBindingAssignment_6_5
+                    // InternalMenuDsl.g:2312:3: ( rule__MenuCategory__HasSystemSettingsAssignment_2_5 )
+                    // InternalMenuDsl.g:2312:4: rule__MenuCategory__HasSystemSettingsAssignment_2_5
                     {
                     pushFollow(FOLLOW_2);
-                    rule__MenuEntry__HasKeyBindingAssignment_6_5();
+                    rule__MenuCategory__HasSystemSettingsAssignment_2_5();
 
                     state._fsp--;
                     if (state.failed) return ;
@@ -7731,7 +7908,36 @@
                     }
 
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getMenuEntryAccess().getHasKeyBindingAssignment_6_5()); 
+                       after(grammarAccess.getMenuCategoryAccess().getHasSystemSettingsAssignment_2_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalMenuDsl.g:2316:2: ( ( rule__MenuCategory__Group_2_6__0 ) )
+                    {
+                    // InternalMenuDsl.g:2316:2: ( ( rule__MenuCategory__Group_2_6__0 ) )
+                    // InternalMenuDsl.g:2317:3: ( rule__MenuCategory__Group_2_6__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getMenuCategoryAccess().getGroup_2_6()); 
+                    }
+                    // InternalMenuDsl.g:2318:3: ( rule__MenuCategory__Group_2_6__0 )
+                    // InternalMenuDsl.g:2318:4: rule__MenuCategory__Group_2_6__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__MenuCategory__Group_2_6__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getMenuCategoryAccess().getGroup_2_6()); 
                     }
 
                     }
@@ -7753,31 +7959,131 @@
         }
         return ;
     }
-    // $ANTLR end "rule__MenuEntry__Alternatives_6"
+    // $ANTLR end "rule__MenuCategory__Alternatives_2"
+
+
+    // $ANTLR start "rule__MenuEntry__Alternatives_3"
+    // InternalMenuDsl.g:2326:1: rule__MenuEntry__Alternatives_3 : ( ( ( rule__MenuEntry__Group_3_0__0 ) ) | ( ( rule__MenuEntry__Group_3_1__0 ) ) );
+    public final void rule__MenuEntry__Alternatives_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalMenuDsl.g:2330:1: ( ( ( rule__MenuEntry__Group_3_0__0 ) ) | ( ( rule__MenuEntry__Group_3_1__0 ) ) )
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==100) ) {
+                alt4=1;
+            }
+            else if ( (LA4_0==101) ) {
+                alt4=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+            switch (alt4) {
+                case 1 :
+                    // InternalMenuDsl.g:2331:2: ( ( rule__MenuEntry__Group_3_0__0 ) )
+                    {
+                    // InternalMenuDsl.g:2331:2: ( ( rule__MenuEntry__Group_3_0__0 ) )
+                    // InternalMenuDsl.g:2332:3: ( rule__MenuEntry__Group_3_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getMenuEntryAccess().getGroup_3_0()); 
+                    }
+                    // InternalMenuDsl.g:2333:3: ( rule__MenuEntry__Group_3_0__0 )
+                    // InternalMenuDsl.g:2333:4: rule__MenuEntry__Group_3_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__MenuEntry__Group_3_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getMenuEntryAccess().getGroup_3_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalMenuDsl.g:2337:2: ( ( rule__MenuEntry__Group_3_1__0 ) )
+                    {
+                    // InternalMenuDsl.g:2337:2: ( ( rule__MenuEntry__Group_3_1__0 ) )
+                    // InternalMenuDsl.g:2338:3: ( rule__MenuEntry__Group_3_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getMenuEntryAccess().getGroup_3_1()); 
+                    }
+                    // InternalMenuDsl.g:2339:3: ( rule__MenuEntry__Group_3_1__0 )
+                    // InternalMenuDsl.g:2339:4: rule__MenuEntry__Group_3_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__MenuEntry__Group_3_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getMenuEntryAccess().getGroup_3_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MenuEntry__Alternatives_3"
 
 
     // $ANTLR start "rule__XImportDeclaration__Alternatives_2"
-    // InternalMenuDsl.g:2270: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 ) ) );
+    // InternalMenuDsl.g:2347: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 {
-            // InternalMenuDsl.g:2274:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
-            int alt4=4;
-            alt4 = dfa4.predict(input);
-            switch (alt4) {
+            // InternalMenuDsl.g:2351: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 :
-                    // InternalMenuDsl.g:2275:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalMenuDsl.g:2352:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
                     {
-                    // InternalMenuDsl.g:2275:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
-                    // InternalMenuDsl.g:2276:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalMenuDsl.g:2352:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalMenuDsl.g:2353:3: ( rule__XImportDeclaration__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); 
                     }
-                    // InternalMenuDsl.g:2277:3: ( rule__XImportDeclaration__Group_2_0__0 )
-                    // InternalMenuDsl.g:2277:4: rule__XImportDeclaration__Group_2_0__0
+                    // InternalMenuDsl.g:2354:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalMenuDsl.g:2354:4: rule__XImportDeclaration__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__Group_2_0__0();
@@ -7797,16 +8103,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2281:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalMenuDsl.g:2358:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
                     {
-                    // InternalMenuDsl.g:2281:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
-                    // InternalMenuDsl.g:2282:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalMenuDsl.g:2358:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalMenuDsl.g:2359:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); 
                     }
-                    // InternalMenuDsl.g:2283:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
-                    // InternalMenuDsl.g:2283:4: rule__XImportDeclaration__ImportedTypeAssignment_2_1
+                    // InternalMenuDsl.g:2360:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalMenuDsl.g:2360:4: rule__XImportDeclaration__ImportedTypeAssignment_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ImportedTypeAssignment_2_1();
@@ -7826,16 +8132,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalMenuDsl.g:2287:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalMenuDsl.g:2364:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
                     {
-                    // InternalMenuDsl.g:2287:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
-                    // InternalMenuDsl.g:2288:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalMenuDsl.g:2364:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalMenuDsl.g:2365:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); 
                     }
-                    // InternalMenuDsl.g:2289:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
-                    // InternalMenuDsl.g:2289:4: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
+                    // InternalMenuDsl.g:2366:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalMenuDsl.g:2366:4: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ImportedNamespaceAssignment_2_2();
@@ -7855,16 +8161,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalMenuDsl.g:2293:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalMenuDsl.g:2370:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
                     {
-                    // InternalMenuDsl.g:2293:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
-                    // InternalMenuDsl.g:2294:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalMenuDsl.g:2370:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalMenuDsl.g:2371:3: ( rule__XImportDeclaration__Group_2_3__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); 
                     }
-                    // InternalMenuDsl.g:2295:3: ( rule__XImportDeclaration__Group_2_3__0 )
-                    // InternalMenuDsl.g:2295:4: rule__XImportDeclaration__Group_2_3__0
+                    // InternalMenuDsl.g:2372:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalMenuDsl.g:2372:4: rule__XImportDeclaration__Group_2_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__Group_2_3__0();
@@ -7901,41 +8207,41 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Alternatives_2_0_3"
-    // InternalMenuDsl.g:2303:1: rule__XImportDeclaration__Alternatives_2_0_3 : ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) );
+    // InternalMenuDsl.g:2380: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 {
-            // InternalMenuDsl.g:2307:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
-            int alt5=2;
-            int LA5_0 = input.LA(1);
+            // InternalMenuDsl.g:2384:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
 
-            if ( (LA5_0==36) ) {
-                alt5=1;
+            if ( (LA6_0==36) ) {
+                alt6=1;
             }
-            else if ( (LA5_0==RULE_ID) ) {
-                alt5=2;
+            else if ( (LA6_0==RULE_ID) ) {
+                alt6=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 5, 0, input);
+                    new NoViableAltException("", 6, 0, input);
 
                 throw nvae;
             }
-            switch (alt5) {
+            switch (alt6) {
                 case 1 :
-                    // InternalMenuDsl.g:2308:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalMenuDsl.g:2385:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
                     {
-                    // InternalMenuDsl.g:2308:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
-                    // InternalMenuDsl.g:2309:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalMenuDsl.g:2385:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalMenuDsl.g:2386:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); 
                     }
-                    // InternalMenuDsl.g:2310:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
-                    // InternalMenuDsl.g:2310:4: rule__XImportDeclaration__WildcardAssignment_2_0_3_0
+                    // InternalMenuDsl.g:2387:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalMenuDsl.g:2387:4: rule__XImportDeclaration__WildcardAssignment_2_0_3_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__WildcardAssignment_2_0_3_0();
@@ -7955,16 +8261,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2314:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalMenuDsl.g:2391:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
                     {
-                    // InternalMenuDsl.g:2314:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
-                    // InternalMenuDsl.g:2315:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalMenuDsl.g:2391:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalMenuDsl.g:2392:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); 
                     }
-                    // InternalMenuDsl.g:2316:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
-                    // InternalMenuDsl.g:2316:4: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
+                    // InternalMenuDsl.g:2393:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalMenuDsl.g:2393:4: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__MemberNameAssignment_2_0_3_1();
@@ -8001,27 +8307,27 @@
 
 
     // $ANTLR start "rule__XAnnotation__Alternatives_3_1"
-    // InternalMenuDsl.g:2324:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );
+    // InternalMenuDsl.g:2401: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 {
-            // InternalMenuDsl.g:2328:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
-            int alt6=2;
-            alt6 = dfa6.predict(input);
-            switch (alt6) {
+            // InternalMenuDsl.g:2405: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 :
-                    // InternalMenuDsl.g:2329:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalMenuDsl.g:2406:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
                     {
-                    // InternalMenuDsl.g:2329:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
-                    // InternalMenuDsl.g:2330:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalMenuDsl.g:2406:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalMenuDsl.g:2407:3: ( rule__XAnnotation__Group_3_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
                     }
-                    // InternalMenuDsl.g:2331:3: ( rule__XAnnotation__Group_3_1_0__0 )
-                    // InternalMenuDsl.g:2331:4: rule__XAnnotation__Group_3_1_0__0
+                    // InternalMenuDsl.g:2408:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalMenuDsl.g:2408:4: rule__XAnnotation__Group_3_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__Group_3_1_0__0();
@@ -8041,16 +8347,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2335:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalMenuDsl.g:2412:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
                     {
-                    // InternalMenuDsl.g:2335:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
-                    // InternalMenuDsl.g:2336:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalMenuDsl.g:2412:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalMenuDsl.g:2413:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
                     }
-                    // InternalMenuDsl.g:2337:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
-                    // InternalMenuDsl.g:2337:4: rule__XAnnotation__ValueAssignment_3_1_1
+                    // InternalMenuDsl.g:2414:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalMenuDsl.g:2414:4: rule__XAnnotation__ValueAssignment_3_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__ValueAssignment_3_1_1();
@@ -8087,27 +8393,27 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Alternatives"
-    // InternalMenuDsl.g:2345:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );
+    // InternalMenuDsl.g:2422: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 {
-            // InternalMenuDsl.g:2349:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
-            int alt7=2;
-            alt7 = dfa7.predict(input);
-            switch (alt7) {
+            // InternalMenuDsl.g:2426:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
+            int alt8=2;
+            alt8 = dfa8.predict(input);
+            switch (alt8) {
                 case 1 :
-                    // InternalMenuDsl.g:2350:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalMenuDsl.g:2427:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
                     {
-                    // InternalMenuDsl.g:2350:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
-                    // InternalMenuDsl.g:2351:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalMenuDsl.g:2427:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalMenuDsl.g:2428:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
                     }
-                    // InternalMenuDsl.g:2352:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
-                    // InternalMenuDsl.g:2352:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
+                    // InternalMenuDsl.g:2429:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalMenuDsl.g:2429:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_0__0();
@@ -8127,16 +8433,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2356:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalMenuDsl.g:2433:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
                     {
-                    // InternalMenuDsl.g:2356:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
-                    // InternalMenuDsl.g:2357:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalMenuDsl.g:2433:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalMenuDsl.g:2434:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
                     }
-                    // InternalMenuDsl.g:2358:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
-                    // InternalMenuDsl.g:2358:4: rule__XAnnotationElementValueOrCommaList__Group_1__0
+                    // InternalMenuDsl.g:2435:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalMenuDsl.g:2435:4: rule__XAnnotationElementValueOrCommaList__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_1__0();
@@ -8173,27 +8479,27 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Alternatives"
-    // InternalMenuDsl.g:2366:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
+    // InternalMenuDsl.g:2443:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
     public final void rule__XAnnotationElementValue__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2370:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
-            int alt8=2;
-            alt8 = dfa8.predict(input);
-            switch (alt8) {
+            // InternalMenuDsl.g:2447:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
+            int alt9=2;
+            alt9 = dfa9.predict(input);
+            switch (alt9) {
                 case 1 :
-                    // InternalMenuDsl.g:2371:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalMenuDsl.g:2448:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
                     {
-                    // InternalMenuDsl.g:2371:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
-                    // InternalMenuDsl.g:2372:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalMenuDsl.g:2448:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalMenuDsl.g:2449:3: ( rule__XAnnotationElementValue__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
                     }
-                    // InternalMenuDsl.g:2373:3: ( rule__XAnnotationElementValue__Group_0__0 )
-                    // InternalMenuDsl.g:2373:4: rule__XAnnotationElementValue__Group_0__0
+                    // InternalMenuDsl.g:2450:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalMenuDsl.g:2450:4: rule__XAnnotationElementValue__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValue__Group_0__0();
@@ -8213,10 +8519,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2377:2: ( ruleXAnnotationOrExpression )
+                    // InternalMenuDsl.g:2454:2: ( ruleXAnnotationOrExpression )
                     {
-                    // InternalMenuDsl.g:2377:2: ( ruleXAnnotationOrExpression )
-                    // InternalMenuDsl.g:2378:3: ruleXAnnotationOrExpression
+                    // InternalMenuDsl.g:2454:2: ( ruleXAnnotationOrExpression )
+                    // InternalMenuDsl.g:2455:3: ruleXAnnotationOrExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
@@ -8253,35 +8559,35 @@
 
 
     // $ANTLR start "rule__XAnnotationOrExpression__Alternatives"
-    // InternalMenuDsl.g:2387:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
+    // InternalMenuDsl.g:2464:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
     public final void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2391:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
-            int alt9=2;
-            int LA9_0 = input.LA(1);
+            // InternalMenuDsl.g:2468:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
+            int alt10=2;
+            int LA10_0 = input.LA(1);
 
-            if ( (LA9_0==60) ) {
-                alt9=1;
+            if ( (LA10_0==62) ) {
+                alt10=1;
             }
-            else if ( ((LA9_0>=RULE_STRING && LA9_0<=RULE_DECIMAL)||LA9_0==27||(LA9_0>=34 && LA9_0<=35)||LA9_0==40||(LA9_0>=45 && LA9_0<=50)||LA9_0==52||LA9_0==61||(LA9_0>=65 && LA9_0<=66)||LA9_0==69||LA9_0==71||(LA9_0>=75 && LA9_0<=83)||LA9_0==85||LA9_0==105) ) {
-                alt9=2;
+            else if ( ((LA10_0>=RULE_STRING && LA10_0<=RULE_DECIMAL)||LA10_0==27||(LA10_0>=34 && LA10_0<=35)||LA10_0==40||(LA10_0>=45 && LA10_0<=50)||LA10_0==57||LA10_0==63||(LA10_0>=67 && LA10_0<=68)||LA10_0==71||LA10_0==73||(LA10_0>=77 && LA10_0<=85)||LA10_0==87||LA10_0==107) ) {
+                alt10=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 9, 0, input);
+                    new NoViableAltException("", 10, 0, input);
 
                 throw nvae;
             }
-            switch (alt9) {
+            switch (alt10) {
                 case 1 :
-                    // InternalMenuDsl.g:2392:2: ( ruleXAnnotation )
+                    // InternalMenuDsl.g:2469:2: ( ruleXAnnotation )
                     {
-                    // InternalMenuDsl.g:2392:2: ( ruleXAnnotation )
-                    // InternalMenuDsl.g:2393:3: ruleXAnnotation
+                    // InternalMenuDsl.g:2469:2: ( ruleXAnnotation )
+                    // InternalMenuDsl.g:2470:3: ruleXAnnotation
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
@@ -8301,10 +8607,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2398:2: ( ruleXExpression )
+                    // InternalMenuDsl.g:2475:2: ( ruleXExpression )
                     {
-                    // InternalMenuDsl.g:2398:2: ( ruleXExpression )
-                    // InternalMenuDsl.g:2399:3: ruleXExpression
+                    // InternalMenuDsl.g:2475:2: ( ruleXExpression )
+                    // InternalMenuDsl.g:2476:3: ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
@@ -8341,29 +8647,29 @@
 
 
     // $ANTLR start "rule__XAssignment__Alternatives"
-    // InternalMenuDsl.g:2408:1: rule__XAssignment__Alternatives : ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) );
+    // InternalMenuDsl.g:2485: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 {
-            // InternalMenuDsl.g:2412:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
-            int alt10=2;
+            // InternalMenuDsl.g:2489:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
+            int alt11=2;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                int LA10_1 = input.LA(2);
+                int LA11_1 = input.LA(2);
 
-                if ( (LA10_1==13) ) {
-                    alt10=1;
+                if ( (LA11_1==13) ) {
+                    alt11=1;
                 }
-                else if ( (LA10_1==EOF||(LA10_1>=RULE_STRING && LA10_1<=RULE_DECIMAL)||(LA10_1>=14 && LA10_1<=50)||LA10_1==52||LA10_1==55||LA10_1==59||(LA10_1>=61 && LA10_1<=86)||(LA10_1>=101 && LA10_1<=102)||(LA10_1>=104 && LA10_1<=105)) ) {
-                    alt10=2;
+                else if ( (LA11_1==EOF||(LA11_1>=RULE_STRING && LA11_1<=RULE_DECIMAL)||(LA11_1>=14 && LA11_1<=50)||(LA11_1>=57 && LA11_1<=58)||LA11_1==61||(LA11_1>=63 && LA11_1<=88)||(LA11_1>=103 && LA11_1<=104)||(LA11_1>=106 && LA11_1<=107)) ) {
+                    alt11=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 10, 1, input);
+                        new NoViableAltException("", 11, 1, input);
 
                     throw nvae;
                 }
@@ -8371,18 +8677,18 @@
                 break;
             case 45:
                 {
-                int LA10_2 = input.LA(2);
+                int LA11_2 = input.LA(2);
 
-                if ( (LA10_2==EOF||(LA10_2>=RULE_STRING && LA10_2<=RULE_DECIMAL)||(LA10_2>=14 && LA10_2<=50)||LA10_2==52||LA10_2==55||LA10_2==59||(LA10_2>=61 && LA10_2<=86)||(LA10_2>=101 && LA10_2<=102)||(LA10_2>=104 && LA10_2<=105)) ) {
-                    alt10=2;
+                if ( (LA11_2==EOF||(LA11_2>=RULE_STRING && LA11_2<=RULE_DECIMAL)||(LA11_2>=14 && LA11_2<=50)||(LA11_2>=57 && LA11_2<=58)||LA11_2==61||(LA11_2>=63 && LA11_2<=88)||(LA11_2>=103 && LA11_2<=104)||(LA11_2>=106 && LA11_2<=107)) ) {
+                    alt11=2;
                 }
-                else if ( (LA10_2==13) ) {
-                    alt10=1;
+                else if ( (LA11_2==13) ) {
+                    alt11=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 10, 2, input);
+                        new NoViableAltException("", 11, 2, input);
 
                     throw nvae;
                 }
@@ -8390,18 +8696,18 @@
                 break;
             case 46:
                 {
-                int LA10_3 = input.LA(2);
+                int LA11_3 = input.LA(2);
 
-                if ( (LA10_3==13) ) {
-                    alt10=1;
+                if ( (LA11_3==13) ) {
+                    alt11=1;
                 }
-                else if ( (LA10_3==EOF||(LA10_3>=RULE_STRING && LA10_3<=RULE_DECIMAL)||(LA10_3>=14 && LA10_3<=50)||LA10_3==52||LA10_3==55||LA10_3==59||(LA10_3>=61 && LA10_3<=86)||(LA10_3>=101 && LA10_3<=102)||(LA10_3>=104 && LA10_3<=105)) ) {
-                    alt10=2;
+                else if ( (LA11_3==EOF||(LA11_3>=RULE_STRING && LA11_3<=RULE_DECIMAL)||(LA11_3>=14 && LA11_3<=50)||(LA11_3>=57 && LA11_3<=58)||LA11_3==61||(LA11_3>=63 && LA11_3<=88)||(LA11_3>=103 && LA11_3<=104)||(LA11_3>=106 && LA11_3<=107)) ) {
+                    alt11=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 10, 3, input);
+                        new NoViableAltException("", 11, 3, input);
 
                     throw nvae;
                 }
@@ -8409,18 +8715,18 @@
                 break;
             case 47:
                 {
-                int LA10_4 = input.LA(2);
+                int LA11_4 = input.LA(2);
 
-                if ( (LA10_4==EOF||(LA10_4>=RULE_STRING && LA10_4<=RULE_DECIMAL)||(LA10_4>=14 && LA10_4<=50)||LA10_4==52||LA10_4==55||LA10_4==59||(LA10_4>=61 && LA10_4<=86)||(LA10_4>=101 && LA10_4<=102)||(LA10_4>=104 && LA10_4<=105)) ) {
-                    alt10=2;
+                if ( (LA11_4==EOF||(LA11_4>=RULE_STRING && LA11_4<=RULE_DECIMAL)||(LA11_4>=14 && LA11_4<=50)||(LA11_4>=57 && LA11_4<=58)||LA11_4==61||(LA11_4>=63 && LA11_4<=88)||(LA11_4>=103 && LA11_4<=104)||(LA11_4>=106 && LA11_4<=107)) ) {
+                    alt11=2;
                 }
-                else if ( (LA10_4==13) ) {
-                    alt10=1;
+                else if ( (LA11_4==13) ) {
+                    alt11=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 10, 4, input);
+                        new NoViableAltException("", 11, 4, input);
 
                     throw nvae;
                 }
@@ -8428,18 +8734,18 @@
                 break;
             case 48:
                 {
-                int LA10_5 = input.LA(2);
+                int LA11_5 = input.LA(2);
 
-                if ( (LA10_5==13) ) {
-                    alt10=1;
+                if ( (LA11_5==13) ) {
+                    alt11=1;
                 }
-                else if ( (LA10_5==EOF||(LA10_5>=RULE_STRING && LA10_5<=RULE_DECIMAL)||(LA10_5>=14 && LA10_5<=50)||LA10_5==52||LA10_5==55||LA10_5==59||(LA10_5>=61 && LA10_5<=86)||(LA10_5>=101 && LA10_5<=102)||(LA10_5>=104 && LA10_5<=105)) ) {
-                    alt10=2;
+                else if ( (LA11_5==EOF||(LA11_5>=RULE_STRING && LA11_5<=RULE_DECIMAL)||(LA11_5>=14 && LA11_5<=50)||(LA11_5>=57 && LA11_5<=58)||LA11_5==61||(LA11_5>=63 && LA11_5<=88)||(LA11_5>=103 && LA11_5<=104)||(LA11_5>=106 && LA11_5<=107)) ) {
+                    alt11=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 10, 5, input);
+                        new NoViableAltException("", 11, 5, input);
 
                     throw nvae;
                 }
@@ -8455,14 +8761,12 @@
             case 40:
             case 49:
             case 50:
-            case 52:
-            case 61:
-            case 65:
-            case 66:
-            case 69:
+            case 57:
+            case 63:
+            case 67:
+            case 68:
             case 71:
-            case 75:
-            case 76:
+            case 73:
             case 77:
             case 78:
             case 79:
@@ -8470,32 +8774,34 @@
             case 81:
             case 82:
             case 83:
+            case 84:
             case 85:
-            case 105:
+            case 87:
+            case 107:
                 {
-                alt10=2;
+                alt11=2;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 10, 0, input);
+                    new NoViableAltException("", 11, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt10) {
+            switch (alt11) {
                 case 1 :
-                    // InternalMenuDsl.g:2413:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalMenuDsl.g:2490:2: ( ( rule__XAssignment__Group_0__0 ) )
                     {
-                    // InternalMenuDsl.g:2413:2: ( ( rule__XAssignment__Group_0__0 ) )
-                    // InternalMenuDsl.g:2414:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalMenuDsl.g:2490:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalMenuDsl.g:2491:3: ( rule__XAssignment__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAssignmentAccess().getGroup_0()); 
                     }
-                    // InternalMenuDsl.g:2415:3: ( rule__XAssignment__Group_0__0 )
-                    // InternalMenuDsl.g:2415:4: rule__XAssignment__Group_0__0
+                    // InternalMenuDsl.g:2492:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalMenuDsl.g:2492:4: rule__XAssignment__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_0__0();
@@ -8515,16 +8821,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2419:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalMenuDsl.g:2496:2: ( ( rule__XAssignment__Group_1__0 ) )
                     {
-                    // InternalMenuDsl.g:2419:2: ( ( rule__XAssignment__Group_1__0 ) )
-                    // InternalMenuDsl.g:2420:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalMenuDsl.g:2496:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalMenuDsl.g:2497:3: ( rule__XAssignment__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAssignmentAccess().getGroup_1()); 
                     }
-                    // InternalMenuDsl.g:2421:3: ( rule__XAssignment__Group_1__0 )
-                    // InternalMenuDsl.g:2421:4: rule__XAssignment__Group_1__0
+                    // InternalMenuDsl.g:2498:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalMenuDsl.g:2498:4: rule__XAssignment__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_1__0();
@@ -8561,64 +8867,64 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Alternatives"
-    // InternalMenuDsl.g:2429:1: rule__OpMultiAssign__Alternatives : ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) );
+    // InternalMenuDsl.g:2506: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 {
-            // InternalMenuDsl.g:2433:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
-            int alt11=7;
+            // InternalMenuDsl.g:2510:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
+            int alt12=7;
             switch ( input.LA(1) ) {
             case 16:
                 {
-                alt11=1;
+                alt12=1;
                 }
                 break;
             case 17:
                 {
-                alt11=2;
+                alt12=2;
                 }
                 break;
             case 18:
                 {
-                alt11=3;
+                alt12=3;
                 }
                 break;
             case 19:
                 {
-                alt11=4;
+                alt12=4;
                 }
                 break;
             case 20:
                 {
-                alt11=5;
+                alt12=5;
                 }
                 break;
             case 27:
                 {
-                alt11=6;
+                alt12=6;
                 }
                 break;
             case 26:
                 {
-                alt11=7;
+                alt12=7;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 11, 0, input);
+                    new NoViableAltException("", 12, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt11) {
+            switch (alt12) {
                 case 1 :
-                    // InternalMenuDsl.g:2434:2: ( '+=' )
+                    // InternalMenuDsl.g:2511:2: ( '+=' )
                     {
-                    // InternalMenuDsl.g:2434:2: ( '+=' )
-                    // InternalMenuDsl.g:2435:3: '+='
+                    // InternalMenuDsl.g:2511:2: ( '+=' )
+                    // InternalMenuDsl.g:2512:3: '+='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
@@ -8634,10 +8940,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2440:2: ( '-=' )
+                    // InternalMenuDsl.g:2517:2: ( '-=' )
                     {
-                    // InternalMenuDsl.g:2440:2: ( '-=' )
-                    // InternalMenuDsl.g:2441:3: '-='
+                    // InternalMenuDsl.g:2517:2: ( '-=' )
+                    // InternalMenuDsl.g:2518:3: '-='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
@@ -8653,10 +8959,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalMenuDsl.g:2446:2: ( '*=' )
+                    // InternalMenuDsl.g:2523:2: ( '*=' )
                     {
-                    // InternalMenuDsl.g:2446:2: ( '*=' )
-                    // InternalMenuDsl.g:2447:3: '*='
+                    // InternalMenuDsl.g:2523:2: ( '*=' )
+                    // InternalMenuDsl.g:2524:3: '*='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
@@ -8672,10 +8978,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalMenuDsl.g:2452:2: ( '/=' )
+                    // InternalMenuDsl.g:2529:2: ( '/=' )
                     {
-                    // InternalMenuDsl.g:2452:2: ( '/=' )
-                    // InternalMenuDsl.g:2453:3: '/='
+                    // InternalMenuDsl.g:2529:2: ( '/=' )
+                    // InternalMenuDsl.g:2530:3: '/='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
@@ -8691,10 +8997,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalMenuDsl.g:2458:2: ( '%=' )
+                    // InternalMenuDsl.g:2535:2: ( '%=' )
                     {
-                    // InternalMenuDsl.g:2458:2: ( '%=' )
-                    // InternalMenuDsl.g:2459:3: '%='
+                    // InternalMenuDsl.g:2535:2: ( '%=' )
+                    // InternalMenuDsl.g:2536:3: '%='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
@@ -8710,16 +9016,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalMenuDsl.g:2464:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalMenuDsl.g:2541:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
                     {
-                    // InternalMenuDsl.g:2464:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
-                    // InternalMenuDsl.g:2465:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalMenuDsl.g:2541:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalMenuDsl.g:2542:3: ( rule__OpMultiAssign__Group_5__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); 
                     }
-                    // InternalMenuDsl.g:2466:3: ( rule__OpMultiAssign__Group_5__0 )
-                    // InternalMenuDsl.g:2466:4: rule__OpMultiAssign__Group_5__0
+                    // InternalMenuDsl.g:2543:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalMenuDsl.g:2543:4: rule__OpMultiAssign__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpMultiAssign__Group_5__0();
@@ -8739,16 +9045,16 @@
                     }
                     break;
                 case 7 :
-                    // InternalMenuDsl.g:2470:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalMenuDsl.g:2547:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
                     {
-                    // InternalMenuDsl.g:2470:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
-                    // InternalMenuDsl.g:2471:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalMenuDsl.g:2547:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalMenuDsl.g:2548:3: ( rule__OpMultiAssign__Group_6__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); 
                     }
-                    // InternalMenuDsl.g:2472:3: ( rule__OpMultiAssign__Group_6__0 )
-                    // InternalMenuDsl.g:2472:4: rule__OpMultiAssign__Group_6__0
+                    // InternalMenuDsl.g:2549:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalMenuDsl.g:2549:4: rule__OpMultiAssign__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpMultiAssign__Group_6__0();
@@ -8785,49 +9091,49 @@
 
 
     // $ANTLR start "rule__OpEquality__Alternatives"
-    // InternalMenuDsl.g:2480:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
+    // InternalMenuDsl.g:2557:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
     public final void rule__OpEquality__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2484:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
-            int alt12=4;
+            // InternalMenuDsl.g:2561:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
+            int alt13=4;
             switch ( input.LA(1) ) {
             case 21:
                 {
-                alt12=1;
+                alt13=1;
                 }
                 break;
             case 22:
                 {
-                alt12=2;
+                alt13=2;
                 }
                 break;
             case 23:
                 {
-                alt12=3;
+                alt13=3;
                 }
                 break;
             case 24:
                 {
-                alt12=4;
+                alt13=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 12, 0, input);
+                    new NoViableAltException("", 13, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt12) {
+            switch (alt13) {
                 case 1 :
-                    // InternalMenuDsl.g:2485:2: ( '==' )
+                    // InternalMenuDsl.g:2562:2: ( '==' )
                     {
-                    // InternalMenuDsl.g:2485:2: ( '==' )
-                    // InternalMenuDsl.g:2486:3: '=='
+                    // InternalMenuDsl.g:2562:2: ( '==' )
+                    // InternalMenuDsl.g:2563:3: '=='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
@@ -8843,10 +9149,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2491:2: ( '!=' )
+                    // InternalMenuDsl.g:2568:2: ( '!=' )
                     {
-                    // InternalMenuDsl.g:2491:2: ( '!=' )
-                    // InternalMenuDsl.g:2492:3: '!='
+                    // InternalMenuDsl.g:2568:2: ( '!=' )
+                    // InternalMenuDsl.g:2569:3: '!='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
@@ -8862,10 +9168,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalMenuDsl.g:2497:2: ( '===' )
+                    // InternalMenuDsl.g:2574:2: ( '===' )
                     {
-                    // InternalMenuDsl.g:2497:2: ( '===' )
-                    // InternalMenuDsl.g:2498:3: '==='
+                    // InternalMenuDsl.g:2574:2: ( '===' )
+                    // InternalMenuDsl.g:2575:3: '==='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
@@ -8881,10 +9187,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalMenuDsl.g:2503:2: ( '!==' )
+                    // InternalMenuDsl.g:2580:2: ( '!==' )
                     {
-                    // InternalMenuDsl.g:2503:2: ( '!==' )
-                    // InternalMenuDsl.g:2504:3: '!=='
+                    // InternalMenuDsl.g:2580:2: ( '!==' )
+                    // InternalMenuDsl.g:2581:3: '!=='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
@@ -8917,41 +9223,41 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Alternatives_1"
-    // InternalMenuDsl.g:2513:1: rule__XRelationalExpression__Alternatives_1 : ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) );
+    // InternalMenuDsl.g:2590: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 {
-            // InternalMenuDsl.g:2517:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
-            int alt13=2;
-            int LA13_0 = input.LA(1);
+            // InternalMenuDsl.g:2594:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
+            int alt14=2;
+            int LA14_0 = input.LA(1);
 
-            if ( (LA13_0==67) ) {
-                alt13=1;
+            if ( (LA14_0==69) ) {
+                alt14=1;
             }
-            else if ( ((LA13_0>=25 && LA13_0<=27)) ) {
-                alt13=2;
+            else if ( ((LA14_0>=25 && LA14_0<=27)) ) {
+                alt14=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 13, 0, input);
+                    new NoViableAltException("", 14, 0, input);
 
                 throw nvae;
             }
-            switch (alt13) {
+            switch (alt14) {
                 case 1 :
-                    // InternalMenuDsl.g:2518:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalMenuDsl.g:2595:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
                     {
-                    // InternalMenuDsl.g:2518:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
-                    // InternalMenuDsl.g:2519:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalMenuDsl.g:2595:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalMenuDsl.g:2596:3: ( rule__XRelationalExpression__Group_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); 
                     }
-                    // InternalMenuDsl.g:2520:3: ( rule__XRelationalExpression__Group_1_0__0 )
-                    // InternalMenuDsl.g:2520:4: rule__XRelationalExpression__Group_1_0__0
+                    // InternalMenuDsl.g:2597:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalMenuDsl.g:2597:4: rule__XRelationalExpression__Group_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XRelationalExpression__Group_1_0__0();
@@ -8971,16 +9277,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2524:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalMenuDsl.g:2601:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
                     {
-                    // InternalMenuDsl.g:2524:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
-                    // InternalMenuDsl.g:2525:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalMenuDsl.g:2601:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalMenuDsl.g:2602:3: ( rule__XRelationalExpression__Group_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); 
                     }
-                    // InternalMenuDsl.g:2526:3: ( rule__XRelationalExpression__Group_1_1__0 )
-                    // InternalMenuDsl.g:2526:4: rule__XRelationalExpression__Group_1_1__0
+                    // InternalMenuDsl.g:2603:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalMenuDsl.g:2603:4: rule__XRelationalExpression__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XRelationalExpression__Group_1_1__0();
@@ -9017,34 +9323,34 @@
 
 
     // $ANTLR start "rule__OpCompare__Alternatives"
-    // InternalMenuDsl.g:2534:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
+    // InternalMenuDsl.g:2611:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
     public final void rule__OpCompare__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2538:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
-            int alt14=4;
+            // InternalMenuDsl.g:2615:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
+            int alt15=4;
             switch ( input.LA(1) ) {
             case 25:
                 {
-                alt14=1;
+                alt15=1;
                 }
                 break;
             case 27:
                 {
-                int LA14_2 = input.LA(2);
+                int LA15_2 = input.LA(2);
 
-                if ( (LA14_2==EOF||(LA14_2>=RULE_STRING && LA14_2<=RULE_DECIMAL)||LA14_2==27||(LA14_2>=34 && LA14_2<=35)||LA14_2==40||(LA14_2>=45 && LA14_2<=50)||LA14_2==52||LA14_2==61||(LA14_2>=65 && LA14_2<=66)||LA14_2==69||LA14_2==71||(LA14_2>=75 && LA14_2<=83)||LA14_2==85||LA14_2==105) ) {
-                    alt14=4;
+                if ( (LA15_2==EOF||(LA15_2>=RULE_STRING && LA15_2<=RULE_DECIMAL)||LA15_2==27||(LA15_2>=34 && LA15_2<=35)||LA15_2==40||(LA15_2>=45 && LA15_2<=50)||LA15_2==57||LA15_2==63||(LA15_2>=67 && LA15_2<=68)||LA15_2==71||LA15_2==73||(LA15_2>=77 && LA15_2<=85)||LA15_2==87||LA15_2==107) ) {
+                    alt15=4;
                 }
-                else if ( (LA14_2==13) ) {
-                    alt14=2;
+                else if ( (LA15_2==13) ) {
+                    alt15=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 14, 2, input);
+                        new NoViableAltException("", 15, 2, input);
 
                     throw nvae;
                 }
@@ -9052,23 +9358,23 @@
                 break;
             case 26:
                 {
-                alt14=3;
+                alt15=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 14, 0, input);
+                    new NoViableAltException("", 15, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt14) {
+            switch (alt15) {
                 case 1 :
-                    // InternalMenuDsl.g:2539:2: ( '>=' )
+                    // InternalMenuDsl.g:2616:2: ( '>=' )
                     {
-                    // InternalMenuDsl.g:2539:2: ( '>=' )
-                    // InternalMenuDsl.g:2540:3: '>='
+                    // InternalMenuDsl.g:2616:2: ( '>=' )
+                    // InternalMenuDsl.g:2617:3: '>='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
@@ -9084,16 +9390,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2545:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalMenuDsl.g:2622:2: ( ( rule__OpCompare__Group_1__0 ) )
                     {
-                    // InternalMenuDsl.g:2545:2: ( ( rule__OpCompare__Group_1__0 ) )
-                    // InternalMenuDsl.g:2546:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalMenuDsl.g:2622:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalMenuDsl.g:2623:3: ( rule__OpCompare__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGroup_1()); 
                     }
-                    // InternalMenuDsl.g:2547:3: ( rule__OpCompare__Group_1__0 )
-                    // InternalMenuDsl.g:2547:4: rule__OpCompare__Group_1__0
+                    // InternalMenuDsl.g:2624:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalMenuDsl.g:2624:4: rule__OpCompare__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpCompare__Group_1__0();
@@ -9113,10 +9419,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalMenuDsl.g:2551:2: ( '>' )
+                    // InternalMenuDsl.g:2628:2: ( '>' )
                     {
-                    // InternalMenuDsl.g:2551:2: ( '>' )
-                    // InternalMenuDsl.g:2552:3: '>'
+                    // InternalMenuDsl.g:2628:2: ( '>' )
+                    // InternalMenuDsl.g:2629:3: '>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
@@ -9132,10 +9438,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalMenuDsl.g:2557:2: ( '<' )
+                    // InternalMenuDsl.g:2634:2: ( '<' )
                     {
-                    // InternalMenuDsl.g:2557:2: ( '<' )
-                    // InternalMenuDsl.g:2558:3: '<'
+                    // InternalMenuDsl.g:2634:2: ( '<' )
+                    // InternalMenuDsl.g:2635:3: '<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
@@ -9168,21 +9474,21 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives"
-    // InternalMenuDsl.g:2567:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );
+    // InternalMenuDsl.g:2644: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 {
-            // InternalMenuDsl.g:2571:1: ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) )
-            int alt15=9;
-            alt15 = dfa15.predict(input);
-            switch (alt15) {
+            // InternalMenuDsl.g:2648: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 :
-                    // InternalMenuDsl.g:2572:2: ( '->' )
+                    // InternalMenuDsl.g:2649:2: ( '->' )
                     {
-                    // InternalMenuDsl.g:2572:2: ( '->' )
-                    // InternalMenuDsl.g:2573:3: '->'
+                    // InternalMenuDsl.g:2649:2: ( '->' )
+                    // InternalMenuDsl.g:2650:3: '->'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
@@ -9198,10 +9504,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2578:2: ( '..<' )
+                    // InternalMenuDsl.g:2655:2: ( '..<' )
                     {
-                    // InternalMenuDsl.g:2578:2: ( '..<' )
-                    // InternalMenuDsl.g:2579:3: '..<'
+                    // InternalMenuDsl.g:2655:2: ( '..<' )
+                    // InternalMenuDsl.g:2656:3: '..<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
@@ -9217,16 +9523,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalMenuDsl.g:2584:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalMenuDsl.g:2661:2: ( ( rule__OpOther__Group_2__0 ) )
                     {
-                    // InternalMenuDsl.g:2584:2: ( ( rule__OpOther__Group_2__0 ) )
-                    // InternalMenuDsl.g:2585:3: ( rule__OpOther__Group_2__0 )
+                    // InternalMenuDsl.g:2661:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalMenuDsl.g:2662:3: ( rule__OpOther__Group_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_2()); 
                     }
-                    // InternalMenuDsl.g:2586:3: ( rule__OpOther__Group_2__0 )
-                    // InternalMenuDsl.g:2586:4: rule__OpOther__Group_2__0
+                    // InternalMenuDsl.g:2663:3: ( rule__OpOther__Group_2__0 )
+                    // InternalMenuDsl.g:2663:4: rule__OpOther__Group_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_2__0();
@@ -9246,10 +9552,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalMenuDsl.g:2590:2: ( '..' )
+                    // InternalMenuDsl.g:2667:2: ( '..' )
                     {
-                    // InternalMenuDsl.g:2590:2: ( '..' )
-                    // InternalMenuDsl.g:2591:3: '..'
+                    // InternalMenuDsl.g:2667:2: ( '..' )
+                    // InternalMenuDsl.g:2668:3: '..'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
@@ -9265,10 +9571,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalMenuDsl.g:2596:2: ( '=>' )
+                    // InternalMenuDsl.g:2673:2: ( '=>' )
                     {
-                    // InternalMenuDsl.g:2596:2: ( '=>' )
-                    // InternalMenuDsl.g:2597:3: '=>'
+                    // InternalMenuDsl.g:2673:2: ( '=>' )
+                    // InternalMenuDsl.g:2674:3: '=>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
@@ -9284,16 +9590,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalMenuDsl.g:2602:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalMenuDsl.g:2679:2: ( ( rule__OpOther__Group_5__0 ) )
                     {
-                    // InternalMenuDsl.g:2602:2: ( ( rule__OpOther__Group_5__0 ) )
-                    // InternalMenuDsl.g:2603:3: ( rule__OpOther__Group_5__0 )
+                    // InternalMenuDsl.g:2679:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalMenuDsl.g:2680:3: ( rule__OpOther__Group_5__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_5()); 
                     }
-                    // InternalMenuDsl.g:2604:3: ( rule__OpOther__Group_5__0 )
-                    // InternalMenuDsl.g:2604:4: rule__OpOther__Group_5__0
+                    // InternalMenuDsl.g:2681:3: ( rule__OpOther__Group_5__0 )
+                    // InternalMenuDsl.g:2681:4: rule__OpOther__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_5__0();
@@ -9313,16 +9619,16 @@
                     }
                     break;
                 case 7 :
-                    // InternalMenuDsl.g:2608:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalMenuDsl.g:2685:2: ( ( rule__OpOther__Group_6__0 ) )
                     {
-                    // InternalMenuDsl.g:2608:2: ( ( rule__OpOther__Group_6__0 ) )
-                    // InternalMenuDsl.g:2609:3: ( rule__OpOther__Group_6__0 )
+                    // InternalMenuDsl.g:2685:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalMenuDsl.g:2686:3: ( rule__OpOther__Group_6__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_6()); 
                     }
-                    // InternalMenuDsl.g:2610:3: ( rule__OpOther__Group_6__0 )
-                    // InternalMenuDsl.g:2610:4: rule__OpOther__Group_6__0
+                    // InternalMenuDsl.g:2687:3: ( rule__OpOther__Group_6__0 )
+                    // InternalMenuDsl.g:2687:4: rule__OpOther__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_6__0();
@@ -9342,10 +9648,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalMenuDsl.g:2614:2: ( '<>' )
+                    // InternalMenuDsl.g:2691:2: ( '<>' )
                     {
-                    // InternalMenuDsl.g:2614:2: ( '<>' )
-                    // InternalMenuDsl.g:2615:3: '<>'
+                    // InternalMenuDsl.g:2691:2: ( '<>' )
+                    // InternalMenuDsl.g:2692:3: '<>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
@@ -9361,10 +9667,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalMenuDsl.g:2620:2: ( '?:' )
+                    // InternalMenuDsl.g:2697:2: ( '?:' )
                     {
-                    // InternalMenuDsl.g:2620:2: ( '?:' )
-                    // InternalMenuDsl.g:2621:3: '?:'
+                    // InternalMenuDsl.g:2697:2: ( '?:' )
+                    // InternalMenuDsl.g:2698:3: '?:'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
@@ -9397,29 +9703,29 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives_5_1"
-    // InternalMenuDsl.g:2630:1: rule__OpOther__Alternatives_5_1 : ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) );
+    // InternalMenuDsl.g:2707: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 {
-            // InternalMenuDsl.g:2634:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
-            int alt16=2;
-            int LA16_0 = input.LA(1);
+            // InternalMenuDsl.g:2711:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
+            int alt17=2;
+            int LA17_0 = input.LA(1);
 
-            if ( (LA16_0==26) ) {
-                int LA16_1 = input.LA(2);
+            if ( (LA17_0==26) ) {
+                int LA17_1 = input.LA(2);
 
-                if ( (LA16_1==26) ) {
-                    alt16=1;
+                if ( (LA17_1==EOF||(LA17_1>=RULE_STRING && LA17_1<=RULE_DECIMAL)||LA17_1==27||(LA17_1>=34 && LA17_1<=35)||LA17_1==40||(LA17_1>=45 && LA17_1<=50)||LA17_1==57||LA17_1==63||(LA17_1>=67 && LA17_1<=68)||LA17_1==71||LA17_1==73||(LA17_1>=77 && LA17_1<=85)||LA17_1==87||LA17_1==107) ) {
+                    alt17=2;
                 }
-                else if ( (LA16_1==EOF||(LA16_1>=RULE_STRING && LA16_1<=RULE_DECIMAL)||LA16_1==27||(LA16_1>=34 && LA16_1<=35)||LA16_1==40||(LA16_1>=45 && LA16_1<=50)||LA16_1==52||LA16_1==61||(LA16_1>=65 && LA16_1<=66)||LA16_1==69||LA16_1==71||(LA16_1>=75 && LA16_1<=83)||LA16_1==85||LA16_1==105) ) {
-                    alt16=2;
+                else if ( (LA17_1==26) ) {
+                    alt17=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 16, 1, input);
+                        new NoViableAltException("", 17, 1, input);
 
                     throw nvae;
                 }
@@ -9427,22 +9733,22 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 16, 0, input);
+                    new NoViableAltException("", 17, 0, input);
 
                 throw nvae;
             }
-            switch (alt16) {
+            switch (alt17) {
                 case 1 :
-                    // InternalMenuDsl.g:2635:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalMenuDsl.g:2712:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
                     {
-                    // InternalMenuDsl.g:2635:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
-                    // InternalMenuDsl.g:2636:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalMenuDsl.g:2712:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalMenuDsl.g:2713:3: ( rule__OpOther__Group_5_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); 
                     }
-                    // InternalMenuDsl.g:2637:3: ( rule__OpOther__Group_5_1_0__0 )
-                    // InternalMenuDsl.g:2637:4: rule__OpOther__Group_5_1_0__0
+                    // InternalMenuDsl.g:2714:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalMenuDsl.g:2714:4: rule__OpOther__Group_5_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_5_1_0__0();
@@ -9462,10 +9768,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2641:2: ( '>' )
+                    // InternalMenuDsl.g:2718:2: ( '>' )
                     {
-                    // InternalMenuDsl.g:2641:2: ( '>' )
-                    // InternalMenuDsl.g:2642:3: '>'
+                    // InternalMenuDsl.g:2718:2: ( '>' )
+                    // InternalMenuDsl.g:2719:3: '>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
@@ -9498,55 +9804,55 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives_6_1"
-    // InternalMenuDsl.g:2651:1: rule__OpOther__Alternatives_6_1 : ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) );
+    // InternalMenuDsl.g:2728: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 {
-            // InternalMenuDsl.g:2655:1: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) )
-            int alt17=3;
-            int LA17_0 = input.LA(1);
+            // InternalMenuDsl.g:2732:1: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) )
+            int alt18=3;
+            int LA18_0 = input.LA(1);
 
-            if ( (LA17_0==27) ) {
-                int LA17_1 = input.LA(2);
+            if ( (LA18_0==27) ) {
+                int LA18_1 = input.LA(2);
 
-                if ( (synpred39_InternalMenuDsl()) ) {
-                    alt17=1;
+                if ( (synpred41_InternalMenuDsl()) ) {
+                    alt18=1;
                 }
-                else if ( (synpred40_InternalMenuDsl()) ) {
-                    alt17=2;
+                else if ( (synpred42_InternalMenuDsl()) ) {
+                    alt18=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 17, 1, input);
+                        new NoViableAltException("", 18, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA17_0==31) ) {
-                alt17=3;
+            else if ( (LA18_0==31) ) {
+                alt18=3;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 17, 0, input);
+                    new NoViableAltException("", 18, 0, input);
 
                 throw nvae;
             }
-            switch (alt17) {
+            switch (alt18) {
                 case 1 :
-                    // InternalMenuDsl.g:2656:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalMenuDsl.g:2733:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
                     {
-                    // InternalMenuDsl.g:2656:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
-                    // InternalMenuDsl.g:2657:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalMenuDsl.g:2733:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalMenuDsl.g:2734:3: ( rule__OpOther__Group_6_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
                     }
-                    // InternalMenuDsl.g:2658:3: ( rule__OpOther__Group_6_1_0__0 )
-                    // InternalMenuDsl.g:2658:4: rule__OpOther__Group_6_1_0__0
+                    // InternalMenuDsl.g:2735:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalMenuDsl.g:2735:4: rule__OpOther__Group_6_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_6_1_0__0();
@@ -9566,10 +9872,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2662:2: ( '<' )
+                    // InternalMenuDsl.g:2739:2: ( '<' )
                     {
-                    // InternalMenuDsl.g:2662:2: ( '<' )
-                    // InternalMenuDsl.g:2663:3: '<'
+                    // InternalMenuDsl.g:2739:2: ( '<' )
+                    // InternalMenuDsl.g:2740:3: '<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
@@ -9585,10 +9891,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalMenuDsl.g:2668:2: ( '=>' )
+                    // InternalMenuDsl.g:2745:2: ( '=>' )
                     {
-                    // InternalMenuDsl.g:2668:2: ( '=>' )
-                    // InternalMenuDsl.g:2669:3: '=>'
+                    // InternalMenuDsl.g:2745:2: ( '=>' )
+                    // InternalMenuDsl.g:2746:3: '=>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
@@ -9621,35 +9927,35 @@
 
 
     // $ANTLR start "rule__OpAdd__Alternatives"
-    // InternalMenuDsl.g:2678:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
+    // InternalMenuDsl.g:2755:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
     public final void rule__OpAdd__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2682:1: ( ( '+' ) | ( '-' ) )
-            int alt18=2;
-            int LA18_0 = input.LA(1);
+            // InternalMenuDsl.g:2759:1: ( ( '+' ) | ( '-' ) )
+            int alt19=2;
+            int LA19_0 = input.LA(1);
 
-            if ( (LA18_0==34) ) {
-                alt18=1;
+            if ( (LA19_0==34) ) {
+                alt19=1;
             }
-            else if ( (LA18_0==35) ) {
-                alt18=2;
+            else if ( (LA19_0==35) ) {
+                alt19=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 18, 0, input);
+                    new NoViableAltException("", 19, 0, input);
 
                 throw nvae;
             }
-            switch (alt18) {
+            switch (alt19) {
                 case 1 :
-                    // InternalMenuDsl.g:2683:2: ( '+' )
+                    // InternalMenuDsl.g:2760:2: ( '+' )
                     {
-                    // InternalMenuDsl.g:2683:2: ( '+' )
-                    // InternalMenuDsl.g:2684:3: '+'
+                    // InternalMenuDsl.g:2760:2: ( '+' )
+                    // InternalMenuDsl.g:2761:3: '+'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
@@ -9665,10 +9971,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2689:2: ( '-' )
+                    // InternalMenuDsl.g:2766:2: ( '-' )
                     {
-                    // InternalMenuDsl.g:2689:2: ( '-' )
-                    // InternalMenuDsl.g:2690:3: '-'
+                    // InternalMenuDsl.g:2766:2: ( '-' )
+                    // InternalMenuDsl.g:2767:3: '-'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
@@ -9701,49 +10007,49 @@
 
 
     // $ANTLR start "rule__OpMulti__Alternatives"
-    // InternalMenuDsl.g:2699:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
+    // InternalMenuDsl.g:2776:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
     public final void rule__OpMulti__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2703:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
-            int alt19=4;
+            // InternalMenuDsl.g:2780:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
+            int alt20=4;
             switch ( input.LA(1) ) {
             case 36:
                 {
-                alt19=1;
+                alt20=1;
                 }
                 break;
             case 37:
                 {
-                alt19=2;
+                alt20=2;
                 }
                 break;
             case 38:
                 {
-                alt19=3;
+                alt20=3;
                 }
                 break;
             case 39:
                 {
-                alt19=4;
+                alt20=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 19, 0, input);
+                    new NoViableAltException("", 20, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt19) {
+            switch (alt20) {
                 case 1 :
-                    // InternalMenuDsl.g:2704:2: ( '*' )
+                    // InternalMenuDsl.g:2781:2: ( '*' )
                     {
-                    // InternalMenuDsl.g:2704:2: ( '*' )
-                    // InternalMenuDsl.g:2705:3: '*'
+                    // InternalMenuDsl.g:2781:2: ( '*' )
+                    // InternalMenuDsl.g:2782:3: '*'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
@@ -9759,10 +10065,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2710:2: ( '**' )
+                    // InternalMenuDsl.g:2787:2: ( '**' )
                     {
-                    // InternalMenuDsl.g:2710:2: ( '**' )
-                    // InternalMenuDsl.g:2711:3: '**'
+                    // InternalMenuDsl.g:2787:2: ( '**' )
+                    // InternalMenuDsl.g:2788:3: '**'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
@@ -9778,10 +10084,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalMenuDsl.g:2716:2: ( '/' )
+                    // InternalMenuDsl.g:2793:2: ( '/' )
                     {
-                    // InternalMenuDsl.g:2716:2: ( '/' )
-                    // InternalMenuDsl.g:2717:3: '/'
+                    // InternalMenuDsl.g:2793:2: ( '/' )
+                    // InternalMenuDsl.g:2794:3: '/'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
@@ -9797,10 +10103,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalMenuDsl.g:2722:2: ( '%' )
+                    // InternalMenuDsl.g:2799:2: ( '%' )
                     {
-                    // InternalMenuDsl.g:2722:2: ( '%' )
-                    // InternalMenuDsl.g:2723:3: '%'
+                    // InternalMenuDsl.g:2799:2: ( '%' )
+                    // InternalMenuDsl.g:2800:3: '%'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
@@ -9833,41 +10139,41 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Alternatives"
-    // InternalMenuDsl.g:2732:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
+    // InternalMenuDsl.g:2809:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
     public final void rule__XUnaryOperation__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2736:1: ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) )
-            int alt20=2;
-            int LA20_0 = input.LA(1);
+            // InternalMenuDsl.g:2813:1: ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) )
+            int alt21=2;
+            int LA21_0 = input.LA(1);
 
-            if ( ((LA20_0>=34 && LA20_0<=35)||LA20_0==40) ) {
-                alt20=1;
+            if ( ((LA21_0>=34 && LA21_0<=35)||LA21_0==40) ) {
+                alt21=1;
             }
-            else if ( ((LA20_0>=RULE_STRING && LA20_0<=RULE_DECIMAL)||LA20_0==27||(LA20_0>=45 && LA20_0<=50)||LA20_0==52||LA20_0==61||(LA20_0>=65 && LA20_0<=66)||LA20_0==69||LA20_0==71||(LA20_0>=75 && LA20_0<=83)||LA20_0==85||LA20_0==105) ) {
-                alt20=2;
+            else if ( ((LA21_0>=RULE_STRING && LA21_0<=RULE_DECIMAL)||LA21_0==27||(LA21_0>=45 && LA21_0<=50)||LA21_0==57||LA21_0==63||(LA21_0>=67 && LA21_0<=68)||LA21_0==71||LA21_0==73||(LA21_0>=77 && LA21_0<=85)||LA21_0==87||LA21_0==107) ) {
+                alt21=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 20, 0, input);
+                    new NoViableAltException("", 21, 0, input);
 
                 throw nvae;
             }
-            switch (alt20) {
+            switch (alt21) {
                 case 1 :
-                    // InternalMenuDsl.g:2737:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalMenuDsl.g:2814:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
                     {
-                    // InternalMenuDsl.g:2737:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
-                    // InternalMenuDsl.g:2738:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalMenuDsl.g:2814:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalMenuDsl.g:2815:3: ( rule__XUnaryOperation__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXUnaryOperationAccess().getGroup_0()); 
                     }
-                    // InternalMenuDsl.g:2739:3: ( rule__XUnaryOperation__Group_0__0 )
-                    // InternalMenuDsl.g:2739:4: rule__XUnaryOperation__Group_0__0
+                    // InternalMenuDsl.g:2816:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalMenuDsl.g:2816:4: rule__XUnaryOperation__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XUnaryOperation__Group_0__0();
@@ -9887,10 +10193,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2743:2: ( ruleXCastedExpression )
+                    // InternalMenuDsl.g:2820:2: ( ruleXCastedExpression )
                     {
-                    // InternalMenuDsl.g:2743:2: ( ruleXCastedExpression )
-                    // InternalMenuDsl.g:2744:3: ruleXCastedExpression
+                    // InternalMenuDsl.g:2820:2: ( ruleXCastedExpression )
+                    // InternalMenuDsl.g:2821:3: ruleXCastedExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
@@ -9927,44 +10233,44 @@
 
 
     // $ANTLR start "rule__OpUnary__Alternatives"
-    // InternalMenuDsl.g:2753:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
+    // InternalMenuDsl.g:2830:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
     public final void rule__OpUnary__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2757:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
-            int alt21=3;
+            // InternalMenuDsl.g:2834:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
+            int alt22=3;
             switch ( input.LA(1) ) {
             case 40:
                 {
-                alt21=1;
+                alt22=1;
                 }
                 break;
             case 35:
                 {
-                alt21=2;
+                alt22=2;
                 }
                 break;
             case 34:
                 {
-                alt21=3;
+                alt22=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 21, 0, input);
+                    new NoViableAltException("", 22, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt21) {
+            switch (alt22) {
                 case 1 :
-                    // InternalMenuDsl.g:2758:2: ( '!' )
+                    // InternalMenuDsl.g:2835:2: ( '!' )
                     {
-                    // InternalMenuDsl.g:2758:2: ( '!' )
-                    // InternalMenuDsl.g:2759:3: '!'
+                    // InternalMenuDsl.g:2835:2: ( '!' )
+                    // InternalMenuDsl.g:2836:3: '!'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
@@ -9980,10 +10286,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2764:2: ( '-' )
+                    // InternalMenuDsl.g:2841:2: ( '-' )
                     {
-                    // InternalMenuDsl.g:2764:2: ( '-' )
-                    // InternalMenuDsl.g:2765:3: '-'
+                    // InternalMenuDsl.g:2841:2: ( '-' )
+                    // InternalMenuDsl.g:2842:3: '-'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
@@ -9999,10 +10305,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalMenuDsl.g:2770:2: ( '+' )
+                    // InternalMenuDsl.g:2847:2: ( '+' )
                     {
-                    // InternalMenuDsl.g:2770:2: ( '+' )
-                    // InternalMenuDsl.g:2771:3: '+'
+                    // InternalMenuDsl.g:2847:2: ( '+' )
+                    // InternalMenuDsl.g:2848:3: '+'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
@@ -10035,35 +10341,35 @@
 
 
     // $ANTLR start "rule__OpPostfix__Alternatives"
-    // InternalMenuDsl.g:2780:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
+    // InternalMenuDsl.g:2857:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
     public final void rule__OpPostfix__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMenuDsl.g:2784:1: ( ( '++' ) | ( '--' ) )
-            int alt22=2;
-            int LA22_0 = input.LA(1);
+            // InternalMenuDsl.g:2861:1: ( ( '++' ) | ( '--' ) )
+            int alt23=2;
+            int LA23_0 = input.LA(1);
 
-            if ( (LA22_0==41) ) {
-                alt22=1;
+            if ( (LA23_0==41) ) {
+                alt23=1;
             }
-            else if ( (LA22_0==42) ) {
-                alt22=2;
+            else if ( (LA23_0==42) ) {
+                alt23=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 22, 0, input);
+                    new NoViableAltException("", 23, 0, input);
 
                 throw nvae;
             }
-            switch (alt22) {
+            switch (alt23) {
                 case 1 :
-                    // InternalMenuDsl.g:2785:2: ( '++' )
+                    // InternalMenuDsl.g:2862:2: ( '++' )
                     {
-                    // InternalMenuDsl.g:2785:2: ( '++' )
-                    // InternalMenuDsl.g:2786:3: '++'
+                    // InternalMenuDsl.g:2862:2: ( '++' )
+                    // InternalMenuDsl.g:2863:3: '++'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
@@ -10079,10 +10385,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2791:2: ( '--' )
+                    // InternalMenuDsl.g:2868:2: ( '--' )
                     {
-                    // InternalMenuDsl.g:2791:2: ( '--' )
-                    // InternalMenuDsl.g:2792:3: '--'
+                    // InternalMenuDsl.g:2868:2: ( '--' )
+                    // InternalMenuDsl.g:2869:3: '--'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); 
@@ -10115,27 +10421,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1"
-    // InternalMenuDsl.g:2801:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );
+    // InternalMenuDsl.g:2878: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 {
-            // InternalMenuDsl.g:2805:1: ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) )
-            int alt23=2;
-            alt23 = dfa23.predict(input);
-            switch (alt23) {
+            // InternalMenuDsl.g:2882:1: ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) )
+            int alt24=2;
+            alt24 = dfa24.predict(input);
+            switch (alt24) {
                 case 1 :
-                    // InternalMenuDsl.g:2806:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalMenuDsl.g:2883:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
                     {
-                    // InternalMenuDsl.g:2806:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
-                    // InternalMenuDsl.g:2807:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalMenuDsl.g:2883:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalMenuDsl.g:2884:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); 
                     }
-                    // InternalMenuDsl.g:2808:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
-                    // InternalMenuDsl.g:2808:4: rule__XMemberFeatureCall__Group_1_0__0
+                    // InternalMenuDsl.g:2885:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalMenuDsl.g:2885:4: rule__XMemberFeatureCall__Group_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_0__0();
@@ -10155,16 +10461,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2812:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalMenuDsl.g:2889:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
                     {
-                    // InternalMenuDsl.g:2812:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
-                    // InternalMenuDsl.g:2813:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalMenuDsl.g:2889:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalMenuDsl.g:2890:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); 
                     }
-                    // InternalMenuDsl.g:2814:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
-                    // InternalMenuDsl.g:2814:4: rule__XMemberFeatureCall__Group_1_1__0
+                    // InternalMenuDsl.g:2891:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalMenuDsl.g:2891:4: rule__XMemberFeatureCall__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1__0();
@@ -10201,35 +10507,35 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_0_0_0_1"
-    // InternalMenuDsl.g:2822:1: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) );
+    // InternalMenuDsl.g:2899: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 {
-            // InternalMenuDsl.g:2826:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) )
-            int alt24=2;
-            int LA24_0 = input.LA(1);
+            // InternalMenuDsl.g:2903:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) )
+            int alt25=2;
+            int LA25_0 = input.LA(1);
 
-            if ( (LA24_0==43) ) {
-                alt24=1;
+            if ( (LA25_0==43) ) {
+                alt25=1;
             }
-            else if ( (LA24_0==101) ) {
-                alt24=2;
+            else if ( (LA25_0==103) ) {
+                alt25=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 24, 0, input);
+                    new NoViableAltException("", 25, 0, input);
 
                 throw nvae;
             }
-            switch (alt24) {
+            switch (alt25) {
                 case 1 :
-                    // InternalMenuDsl.g:2827:2: ( '.' )
+                    // InternalMenuDsl.g:2904:2: ( '.' )
                     {
-                    // InternalMenuDsl.g:2827:2: ( '.' )
-                    // InternalMenuDsl.g:2828:3: '.'
+                    // InternalMenuDsl.g:2904:2: ( '.' )
+                    // InternalMenuDsl.g:2905:3: '.'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); 
@@ -10245,16 +10551,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalMenuDsl.g:2833:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalMenuDsl.g:2910:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
                     {
-                    // InternalMenuDsl.g:2833:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
-                    // InternalMenuDsl.g:2834:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalMenuDsl.g:2910:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalMenuDsl.g:2911:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); 
                     }
-                    // InternalMenuDsl.g:2835:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
-                    // InternalMenuDsl.g:2835:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1
+                    // InternalMenuDsl.g:2912:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalMenuDsl.g:2912:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFe